@raydium-io/raydium-sdk-v2 0.1.8-alpha → 0.1.9-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/api.js +1 -1
- package/lib/api/api.js.map +1 -1
- package/lib/api/api.mjs +1 -1
- package/lib/api/api.mjs.map +1 -1
- package/lib/api/index.js +1 -1
- package/lib/api/index.js.map +1 -1
- package/lib/api/index.mjs +1 -1
- package/lib/api/index.mjs.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/raydium/account/account.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +1 -1
- package/lib/raydium/clmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/cpmm.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +1 -1
- package/lib/raydium/ido/index.d.ts +1 -1
- package/lib/raydium/index.d.ts +1 -1
- package/lib/raydium/index.js +1 -1
- package/lib/raydium/index.js.map +1 -1
- package/lib/raydium/index.mjs +1 -1
- package/lib/raydium/index.mjs.map +1 -1
- package/lib/raydium/liquidity/liquidity.d.ts +1 -1
- package/lib/raydium/liquidity/liquidity.js +1 -1
- package/lib/raydium/liquidity/liquidity.js.map +1 -1
- package/lib/raydium/liquidity/liquidity.mjs +1 -1
- package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +1 -1
- package/lib/raydium/marketV2/index.d.ts +1 -1
- package/lib/raydium/moduleBase.d.ts +1 -1
- package/lib/raydium/raydium.d.ts +1 -1
- package/lib/raydium/raydium.js +1 -1
- package/lib/raydium/raydium.js.map +1 -1
- package/lib/raydium/raydium.mjs +1 -1
- package/lib/raydium/raydium.mjs.map +1 -1
- package/lib/raydium/token/token.d.ts +1 -1
- package/lib/raydium/tradeV2/trade.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +1 -1
- package/lib/raydium/utils1216/utils1216.d.ts +1 -1
- package/lib/{raydium-916014c1.d.ts → raydium-05c7eeff.d.ts} +2 -1
- package/package.json +1 -1
- package/src/api/api.ts +1 -1
- package/src/raydium/liquidity/liquidity.ts +31 -0
package/lib/raydium/raydium.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var La=Object.defineProperty,Oa=Object.defineProperties;var Na=Object.getOwnPropertyDescriptors;var or=Object.getOwnPropertySymbols;var fo=Object.prototype.hasOwnProperty,yo=Object.prototype.propertyIsEnumerable;var po=(i,e,t)=>e in i?La(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,R=(i,e)=>{for(var t in e||(e={}))fo.call(e,t)&&po(i,t,e[t]);if(or)for(var t of or(e))yo.call(e,t)&&po(i,t,e[t]);return i},W=(i,e)=>Oa(i,Na(e));var Ae=(i,e)=>{var t={};for(var n in i)fo.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&or)for(var n of or(i))e.indexOf(n)<0&&yo.call(i,n)&&(t[n]=i[n]);return t};import{merge as ym}from"lodash";import mc from"axios";import{get as bo,set as Ma}from"lodash";import wo from"dayjs";import _a from"dayjs/plugin/utc";wo.extend(_a);var $r=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 wo().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}},go={},Ea={};function oe(i){let e=bo(go,i);if(!e){let t=bo(Ea,i);e=new $r({name:i,logLevel:t}),Ma(go,i,e)}return e}import{PublicKey as zu}from"@solana/web3.js";import Yu from"bn.js";import Uu from"big.js";import wr from"bn.js";import je from"bn.js";var tn=9e15,Nt=1e9,Jr="0123456789abcdef",ar="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ur="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ei={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-tn,maxE:tn,crypto:!1},ko,Tt,$=!0,lr="[DecimalError] ",Ot=lr+"Invalid argument: ",To=lr+"Precision limit exceeded",Io=lr+"crypto unavailable",xo="[object Decimal]",_e=Math.floor,Be=Math.pow,Va=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Fa=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,va=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Bo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ot=1e7,j=7,Da=9007199254740991,Wa=ar.length-1,ti=ur.length-1,C={toStringTag:xo};C.absoluteValue=C.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),X(i)};C.ceil=function(){return X(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Ot+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};C.comparedTo=C.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};C.cosine=C.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+j,n.rounding=1,t=qa(n,Lo(n,t)),n.precision=i,n.rounding=e,X(Tt==2||Tt==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Re(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Be(t,1/3),i=_e((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=pe(c.plus(l).times(a),c.plus(u),s+2,1),Re(a.d).slice(0,s)===(t=Re(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(X(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,X(n,i,m.rounding,e)};C.decimalPlaces=C.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-_e(this.e/j))*j,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(i){return pe(this,new this.constructor(i))};C.dividedToIntegerBy=C.divToInt=function(i){var e=this,t=e.constructor;return X(pe(e,new t(i),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(i){return this.cmp(i)===0};C.floor=function(){return X(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(i){return this.cmp(i)>0};C.greaterThanOrEqualTo=C.gte=function(i){var e=this.cmp(i);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/dr(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=nn(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=nn(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/dr(5,i)),r=nn(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(r,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,pe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?it(t,r,o):new t(0):new t(NaN):e.isZero()?it(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=it(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?X(new o(r),i,e,!0):(o.precision=t=n-r.e,r=pe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=it(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};C.inverseTangent=C.atan=function(){var i,e,t,n,r,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<=ti)return s=it(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=ti)return s=it(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/j+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/j),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),$=!0,X(s,l.precision=m,l.rounding=d,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&_e(this.e/j)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(i){return this.cmp(i)<0};C.lessThanOrEqualTo=C.lte=function(i){return this.cmp(i)<1};C.logarithm=C.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if($=!1,a=m+p,s=Lt(c,a),n=e?cr(l,a+10):Lt(i,a),u=pe(s,n,a,1),gn(u.d,r=m,d))do if(a+=10,s=Lt(c,a),n=e?cr(l,a+10):Lt(i,a),u=pe(s,n,a,1),!o){+Re(u.d).slice(r+1,r+15)+1==1e14&&(u=X(u,m+1,0));break}while(gn(u.d,r+=10,d));return $=!0,X(u,m,d)};C.minus=C.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return $?X(i,a,u):i}if(t=_e(i.e/j),l=_e(p.e/j),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/j),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,i.s=-i.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(r=n;r&&c[--r]===0;)c[r]=ot-1;--c[r],c[n]+=ot}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=mr(c,t),$?X(i,a,u):i):new y(u===3?-0:0)};C.modulo=C.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=pe(t,i.abs(),0,3,1),e.s*=i.s):e=pe(t,i,0,n.modulo,1),e=e.times(i),$=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return ni(this)};C.naturalLogarithm=C.ln=function(){return Lt(this)};C.negated=C.neg=function(){var i=new this.constructor(this);return i.s=-i.s,X(i)};C.plus=C.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),$?X(i,a,u):i;if(o=_e(m.e/j),n=_e(i.e/j),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/j),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/ot|0,c[r]%=ot;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=mr(c,n),$?X(i,a,u):i};C.precision=C.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Ot+i);return t.d?(e=So(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var i=this,e=i.constructor;return X(new e(i),i.e+1,e.rounding)};C.sine=C.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+j,n.rounding=1,t=Ga(n,Lo(n,t)),n.precision=i,n.rounding=e,X(Tt>2?t.neg():t,i,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Re(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=_e((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(pe(s,o,t+2,1)).times(.5),Re(o.d).slice(0,t)===(e=Re(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),i=!n.times(n).eq(s));break}return $=!0,X(n,u,l.rounding,i)};C.tangent=C.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=pe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,X(Tt==2||Tt==4?t.neg():t,i,e,!0)):new n(NaN)};C.times=C.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=_e(l.e/j)+_e(i.e/j),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,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%ot|0,e=a/ot|0;o[r]=(o[r]+e)%ot|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=mr(o,t),$?X(i,m.precision,m.rounding):i};C.toBinary=function(i,e){return ii(this,2,i,e)};C.toDecimalPlaces=C.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(He(i,0,Nt),e===void 0?e=n.rounding:He(e,0,8),X(t,i+t.e+1,e))};C.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,!0):(He(i,0,Nt),e===void 0?e=r.rounding:He(e,0,8),n=X(new r(n),i+1,e),t=ft(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=ft(r):(He(i,0,Nt),e===void 0?e=o.rounding:He(e,0,8),n=X(new o(r),i+r.e+1,e),t=ft(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};C.toFraction=function(i){var e,t,n,r,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=So(y)-p.e-1,s=o%j,e.d[0]=Be(10,s<0?j+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(Ot+a);i=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Re(y)),l=f.precision,f.precision=o=y.length*j*2;m=pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=pe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=pe(c,n,o,1).minus(p).abs().cmp(pe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};C.toHexadecimal=C.toHex=function(i,e){return ii(this,16,i,e)};C.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:He(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?($=!1,t=pe(t,i,0,e,1).times(i),$=!0,X(t)):(i.s=t.s,t=i),t};C.toNumber=function(){return+this};C.toOctal=function(i,e){return ii(this,8,i,e)};C.toPower=C.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(Be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return X(a,n,o);if(e=_e(i.e/j),e>=i.d.length-1&&(t=c<0?-c:c)<=Da)return r=Ko(u,a,t,n),i.s<0?new u(1).div(r):X(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Be(+a,c),e=t==0||!isFinite(t)?_e(c*(Math.log("0."+Re(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),r=ni(i.times(Lt(a,n+t)),n),r.d&&(r=X(r,n+5,1),gn(r.d,n,o)&&(e=n+10,r=X(ni(i.times(Lt(a,e+t)),e),e+5,1),+Re(r.d).slice(n+1,n+15)+1==1e14&&(r=X(r,n+1,0)))),r.s=s,$=!0,u.rounding=o,X(r,n,o))};C.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(He(i,1,Nt),e===void 0?e=r.rounding:He(e,0,8),n=X(new r(n),i,e),t=ft(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(He(i,1,Nt),e===void 0?e=n.rounding:He(e,0,8)),X(new n(t),i,e)};C.toString=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return X(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Re(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=j-n.length,t&&(o+=Rt(t)),o+=n;s=i[e],n=s+"",t=j-n.length,t&&(o+=Rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function He(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Ot+i)}function gn(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=j,r=0):(r=Math.ceil((e+1)/j),e%=j),o=Be(10,j-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Be(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Be(10,e-3)-1,s}function sr(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Jr.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function qa(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/dr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=nn(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var pe=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,L,V,H,v=n.constructor,Q=n.s==r.s?1:-1,ee=n.d,re=r.d;if(!ee||!ee[0]||!re||!re[0])return new v(!n.s||!r.s||(ee?re&&ee[0]==re[0]:!re)?NaN:ee&&ee[0]==0||!re?Q*0:Q/0);for(u?(p=1,l=n.e-r.e):(u=ot,p=j,l=_e(n.e/p)-_e(r.e/p)),V=re.length,S=ee.length,g=new v(Q),h=g.d=[],m=0;re[m]==(ee[m]||0);m++);if(re[m]>(ee[m]||0)&&l--,o==null?(x=o=v.precision,s=v.rounding):a?x=o+(n.e-r.e)+1:x=o,x<0)h.push(1),y=!0;else{if(x=x/p+2|0,m=0,V==1){for(d=0,re=re[0],x++;(m<S||d)&&x--;m++)B=d*u+(ee[m]||0),h[m]=B/re|0,d=B%re|0;y=d||m<S}else{for(d=u/(re[0]+1)|0,d>1&&(re=i(re,d,u),ee=i(ee,d,u),V=re.length,S=ee.length),I=V,A=ee.slice(0,V),k=A.length;k<V;)A[k++]=0;H=re.slice(),H.unshift(0),L=re[0],re[1]>=u/2&&++L;do d=0,c=e(re,A,V,k),c<0?(P=A[0],V!=k&&(P=P*u+(A[1]||0)),d=P/L|0,d>1?(d>=u&&(d=u-1),f=i(re,d,u),b=f.length,k=A.length,c=e(f,A,b,k),c==1&&(d--,t(f,V<b?H:re,b,u))):(d==0&&(c=d=1),f=re.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(re,A,V,k),c<1&&(d++,t(A,V<k?H:re,k,u))),k=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[k++]=ee[I]||0:(A=[ee[I]],k=1);while((I++<S||A[0]!==void 0)&&x--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,ko=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=j,s=e,l=m[d=0],u=l/Be(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/j),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=j,s=o-j+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=j,s=o-j+r,u=s<0?0:l/Be(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Be(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Be(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Be(10,(j-e%j)%j),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Be(10,j-o),m[d]=s>0?(l/Be(10,r-s)%Be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==ot&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ot)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function ft(i,e,t){if(!i.isFinite())return Ro(i);var n,r=i.e,o=Re(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Rt(-r-1)+o,t&&(n=t-s)>0&&(o+=Rt(n))):r>=s?(o+=Rt(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Rt(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Rt(n))),o}function mr(i,e){var t=i[0];for(e*=j;t>=10;t/=10)e++;return e}function cr(i,e,t){if(e>Wa)throw $=!0,t&&(i.precision=t),Error(To);return X(new i(ar),e,1,!0)}function it(i,e,t){if(e>ti)throw Error(To);return X(new i(ur),e,t,!0)}function So(i){var e=i.length-1,t=e*j+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Rt(i){for(var e="";i--;)e+="0";return e}function Ko(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/j+4);for($=!1;;){if(t%2&&(o=o.times(e),ho(o.d,s)&&(r=!0)),t=_e(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ho(e.d,s)}return $=!0,o}function Ao(i){return i.d[i.d.length-1]&1}function Co(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ni(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=X(o.times(i),u,1),t=t.times(++l),a=s.plus(pe(o,t,u,1)),Re(a.d).slice(0,u)===Re(s.d).slice(0,u)){for(r=m;r--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&gn(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return X(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function Lt(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,b=f.d,g=f.constructor,h=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=Re(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(i),t=Re(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=cr(g,l+2,A).times(o+""),f=Lt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,h,$=!0):f;for(m=f,u=s=f=pe(f.minus(1),f.plus(1),l,1),d=X(f.times(f),l,1),r=3;;){if(s=X(s.times(d),l,1),c=u.plus(pe(s,new g(r),l,1)),Re(c.d).slice(0,l)===Re(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(cr(g,l+2,A).times(o+""))),u=pe(u,new g(p),l,1),e==null)if(gn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=pe(m.minus(1),m.plus(1),l,1),d=X(f.times(f),l,1),r=a=1;else return X(u,g.precision=A,h,$=!0);else return g.precision=A,u;u=c,r+=2}}function Ro(i){return String(i.s*i.s/0)}function ri(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%j,t<0&&(n+=j),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=j;n<r;)i.d.push(+e.slice(n,n+=j));e=e.slice(n),n=j-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),$&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Ua(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Bo.test(e))return ri(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Fa.test(e))t=16,e=e.toLowerCase();else if(Va.test(e))t=2;else if(va.test(e))t=8;else throw Error(Ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Ko(n,new n(t),o,o*2)),c=sr(e,t,ot),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=mr(c,l),i.d=c,$=!1,s&&(i=pe(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?Be(2,u):wn.pow(2,u))),$=!0,i)}function Ga(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:nn(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/dr(5,t)),e=nn(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function nn(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/j);for($=!1,u=t.times(t),a=new i(n);;){if(s=pe(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=pe(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function dr(i,e){for(var t=i;--e;)t*=i;return t}function Lo(i,e){var t,n=e.s<0,r=it(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Tt=n?4:1,e;if(t=e.divToInt(r),t.isZero())Tt=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Tt=Ao(t)?n?2:3:n?4:1,e;Tt=Ao(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ii(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(He(t,1,Nt),n===void 0?n=p.rounding:He(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Ro(i);else{for(l=ft(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=sr(ft(d),10,r),d.e=d.d.length),m=sr(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=pe(i,d,t,n,0,r),m=i.d,o=i.e,c=ko),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Jr.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=sr(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Jr.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ho(i,e){if(i.length>e)return i.length=e,!0}function Xa(i){return new this(i).abs()}function za(i){return new this(i).acos()}function Ya(i){return new this(i).acosh()}function Ha(i,e){return new this(i).plus(e)}function ja(i){return new this(i).asin()}function Qa(i){return new this(i).asinh()}function Za(i){return new this(i).atan()}function $a(i){return new this(i).atanh()}function Ja(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=it(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?it(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=it(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(pe(i,e,o,1)),e=it(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(pe(i,e,o,1)),t}function eu(i){return new this(i).cbrt()}function tu(i){return X(i=new this(i),i.e+1,2)}function nu(i,e,t){return new this(i).clamp(e,t)}function ru(i){if(!i||typeof i!="object")throw Error(lr+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Nt,"rounding",0,8,"toExpNeg",-tn,0,"toExpPos",0,tn,"maxE",0,tn,"minE",-tn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(_e(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ot+t+": "+n);if(t="crypto",r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Io);else this[t]=!1;else throw Error(Ot+t+": "+n);return this}function iu(i){return new this(i).cos()}function ou(i){return new this(i).cosh()}function Oo(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Po(o)){c.s=o.s,$?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ri(c,o.toString())}else if(u!=="string")throw Error(Ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Bo.test(o)?ri(c,o):Ua(c,o)}if(r.prototype=C,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=ru,r.clone=Oo,r.isDecimal=Po,r.abs=Xa,r.acos=za,r.acosh=Ya,r.add=Ha,r.asin=ja,r.asinh=Qa,r.atan=Za,r.atanh=$a,r.atan2=Ja,r.cbrt=eu,r.ceil=tu,r.clamp=nu,r.cos=iu,r.cosh=ou,r.div=su,r.exp=au,r.floor=uu,r.hypot=cu,r.ln=lu,r.log=mu,r.log10=pu,r.log2=du,r.max=fu,r.min=yu,r.mod=bu,r.mul=gu,r.pow=wu,r.random=Au,r.round=hu,r.sign=Pu,r.sin=ku,r.sinh=Tu,r.sqrt=Iu,r.sub=xu,r.sum=Bu,r.tan=Su,r.tanh=Ku,r.trunc=Cu,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function su(i,e){return new this(i).div(e)}function au(i){return new this(i).exp()}function uu(i){return X(i=new this(i),i.e+1,3)}function cu(){var i,e,t=new this(0);for($=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function Po(i){return i instanceof wn||i&&i.toStringTag===xo||!1}function lu(i){return new this(i).ln()}function mu(i,e){return new this(i).log(e)}function du(i){return new this(i).log(2)}function pu(i){return new this(i).log(10)}function fu(){return Co(this,arguments,"lt")}function yu(){return Co(this,arguments,"gt")}function bu(i,e){return new this(i).mod(e)}function gu(i,e){return new this(i).mul(e)}function wu(i,e){return new this(i).pow(e)}function Au(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:He(i,1,Nt),n=Math.ceil(i/j),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(Io);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=j,n&&i&&(r=Be(10,j-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=j)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<j&&(t-=j-n)}return s.e=t,s.d=a,s}function hu(i){return X(i=new this(i),i.e+1,this.rounding)}function Pu(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function ku(i){return new this(i).sin()}function Tu(i){return new this(i).sinh()}function Iu(i){return new this(i).sqrt()}function xu(i,e){return new this(i).sub(e)}function Bu(){var i=0,e=arguments,t=new this(e[i]);for($=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return $=!0,X(t,this.precision,this.rounding)}function Su(i){return new this(i).tan()}function Ku(i){return new this(i).tanh()}function Cu(i){return X(i=new this(i),i.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var wn=C.constructor=Oo(ei);ar=new wn(ar);ur=new wn(ur);var _=wn;import{PublicKey as ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ru}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as No,SYSVAR_RENT_PUBKEY as Lu}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var oi=[T({pubkey:Ru,isWritable:!1}),T({pubkey:No.programId,isWritable:!1}),T({pubkey:Lu,isWritable:!1})];function si({publicKey:i,transformSol:e}){let t=ai(i.toString());if(t instanceof ge)return e&&t.equals(Se)?te:t;if(e&&t.toString()===Se.toBase58())return te;if(typeof t=="string"){if(t===ge.default.toBase58())return ge.default;try{return new ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(i){try{return new ge(i)}catch{return i}}var pr=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Mo=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new ge("SysvarRent111111111111111111111111111111111"),_o=new ge("SysvarC1ock11111111111111111111111111111111"),rn=new ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ou=new ge("Sysvar1nstructions1111111111111111111111111"),ui=No.programId,xm=new ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Bm=new ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Sm=new ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Km=new ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Cm=new ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Rm=new ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Lm=new ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Om=new ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Nm=new ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Mm=new ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_m=new ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ge("So11111111111111111111111111111111111111112"),Se=ge.default;function on(i){return si({publicKey:i,transformSol:!0})}import{PublicKey as Nu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";var Mt={chainId:101,address:Nu.default.toBase58(),programId:Eo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Le={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Eo.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 li=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Se.toBase58()||e instanceof ci&&Se.equals(e)){this.decimals=Le.decimals,this.symbol=Le.symbol,this.name=Le.name,this.mint=new ci(Le.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?ci.default:si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=li;he.WSOL=new li(W(R({},Le),{mint:Le.address}));import yr from"big.js";import Eu from"bn.js";import Vu from"decimal.js-light";import Mu from"toformat";var _u=Mu,An=_u;var fr=oe("module/fraction"),mi=An(yr),hn=An(Vu),Fu={[0]:hn.ROUND_DOWN,[1]:hn.ROUND_HALF_UP,[2]:hn.ROUND_UP},vu={[0]:yr.roundDown,[1]:yr.roundHalfUp,[2]:yr.roundUp},me=class{constructor(e,t=new Eu(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||fr.logWithError(`${e} is not an integer.`),e<=0&&fr.logWithError(`${e} is not positive.`),hn.set({precision:e+1,rounding:Fu[n]});let r=new hn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||fr.logWithError(`${e} is not an integer.`),e<0&&fr.logWithError(`${e} is negative.`),mi.DP=e,mi.RM=vu[n]||1,new mi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Wu=oe("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new me(di(n.decimals),di(r.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Wu.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var pi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},br=pi;br.SOL=new pi(Mt);import qu from"bn.js";var Vo=new me(new qu(100)),Ue=class extends me{toSignificant(e=5,t,n){return this.mul(Vo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Vo).toFixed(e,t,n)}};var Ge=new je(0),vo=new je(1),Ld=new je(2),Od=new je(3),Nd=new je(5),fi=new je(10),Md=new je(100),_d=new je(1e3),Ed=new je(1e4),Fo=9007199254740991;function Y(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof je)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new je(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Fo||i<=-Fo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new je(String(i))):typeof i=="bigint"?new je(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new je(0))}function di(i){return fi.pow(Y(i))}function gr(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gu=oe("Raydium_amount"),Wo=An(Uu);function Xu(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Gu.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends me{constructor(t,n,r=!0,o){let s=new wr(0),a=fi.pow(new wr(t.decimals));if(r)s=Y(n);else{let u=new wr(0),c=new wr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xu(n.toString(),t.decimals);u=Y(l),c=Y(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=oe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Wo.DP=this.token.decimals,new Wo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Do(i){return typeof i=="object"&&i!==null&&![he,ke,zu,me,Yu,Je,Ue].some(e=>typeof e=="object"&&i instanceof e)}function Xe(i){return typeof i=="string"?ai(i):Array.isArray(i)?i.map(e=>Xe(e)):Do(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Xe(t)])):i}import{PublicKey as Tn,sendAndConfirmTransaction as In,Transaction as xn,TransactionMessage as Bn,VersionedTransaction as Sn}from"@solana/web3.js";import Ju from"axios";var 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 Hu,ComputeBudgetProgram as qo,Transaction as Go,TransactionMessage as ju,Keypair as Xo,VersionedTransaction as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qu}from"@solana/spl-token";var Uo=oe("Raydium_txUtil"),Yo=1644;function Ar(i){let e=[],t=[];return i.microLamports&&(e.push(qo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(E.SetComputeUnitPrice)),i.units&&(e.push(qo.setComputeUnitLimit({units:i.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function sn(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function yi(i,e){i.length<1&&Uo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Uo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Go;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Yo}catch{return!1}}function ue(i,e){let[t,n]=Hu.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Pn({instructions:i,payer:e,signers:t}){return yi(i,[e,...t])}function kn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xo.generate().publicKey.toString()}){let o=new ju({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zo(o).serialize()).toString("base64").length<Yo}catch{return!1}}var Zu=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function Gt(i){let e=[];return i.forEach(t=>{t instanceof Go&&(t.recentBlockhash||(t.recentBlockhash=Qu.toBase58()),t.feePayer||(t.feePayer=Xo.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zo&&(n=Zu(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Ho,AddressLookupTableAccount as Pr}from"@solana/web3.js";import{PublicKey as $u}from"@solana/web3.js";import{getTransferFeeConfig as Tp,unpackMint as Ip}from"@solana/spl-token";var bi=oe("Raydium_accountInfo_util");async function yt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=R({batchRequest:!1},t),o=gi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=gi(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&bi.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"&&bi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new $u(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&bi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hr(i,e,t){let n=await yt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>W(R({},r),{accountInfo:n[o]}))}async function wi({connection:i,address:e}){let t=await yt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Ho(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Pr({key:s,state:Pr.deserialize(o.data)});n[s.toString()]=a,kr[s.toString()]=a}return n}var kr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Pr({key:new Ho("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Pr.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 Tr=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 Ju.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}=Ar(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Tn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(R({},t||{})):this.build(t)}build(e){let t=new xn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await sn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),Gt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await In(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:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...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 sn(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let h=await In(this.connection,g,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await In(this.connection,b,a[g].find(h=>h.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((h,A)=>(h.recentBlockhash=y,a[A].length&&h.sign(...a[A]),h));Gt(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:P,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(P,x=>{let B=A.findIndex(I=>I.txId===P);B>-1&&(A[B].status=x.err?"error":"success"),m==null||m([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});h.push(k)}return{txIds:h,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:r}=d,o=Ae(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=R(R({},this.cluster==="devnet"?{}:kr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Tn(p));let c=await wi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Bn({payerKey:this.feePayer,recentBlockhash:r?Tn.default.toBase58():await sn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Sn(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),Gt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,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:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...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),Gt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();if(s.forEach((g,h)=>{a[h].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),l){let g=[];for(let h of s){let A=await this.connection.sendTransaction(h,{skipPreflight:p}),{lastValidBlockHeight:k,blockhash:P}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:k,signature:A},"confirmed"),g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let h=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],h=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,k=>{let P=g.findIndex(x=>x.txId===A);P>-1&&(g[P].status=k.err?"error":"success"),m==null||m([...g]),k.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push(h)}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=Ae(c,["computeBudgetConfig"]),r=t?Ar(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(R({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.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 Tn(f));if(u.length<12&&Pn({instructions:d,payer:this.feePayer,signers:y})||Pn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new xn().add(...r.instructions,...u)):s.push(new xn().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);Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new xn().add(...r.instructions,...u)):s.push(new xn().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 sn(this.connection);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),Gt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await In(this.connection,h,this.signers.find(k=>k.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,h)=>await In(this.connection,g,a[h].find(A=>A.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:P,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(P,x=>{let B=A.findIndex(I=>I.txId===P);B>-1&&(A[B].status=x.err?"error":"success"),d==null||d([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});h.push(k)}return{txIds:h,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:r=[]}=b,o=Ae(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=R(R({},this.cluster==="devnet"?{}:kr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let g of a)s[g]===void 0&&u.push(new Tn(g));let c=await wi({connection:this.connection,address:u});for(let[g,h]of Object.entries(c))s[g]=h;let l=t?Ar(t):{instructions:[],instructionTypes:[]},m=await sn(this.connection),d=this.signers.reduce((g,h)=>W(R({},g),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let h=[...f,g],A=t?[...l.instructions,...h]:h;if(f.length<12&&kn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||kn({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let k={};for(let P of[...new Set(a)])s[P]!==void 0&&(k[P]=s[P]);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let P=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Sn(P))}else{let P=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Sn(P))}y.push(Array.from(new Set(f.map(P=>P.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==void 0)),f=[g]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Sn(A))}else{let A=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Sn(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var x;let{sequentially:h,onTxUpdate:A,recentBlockHash:k,skipPreflight:P=!0}=g||{};if(p.map(async(B,I)=>{y[I].length&&B.sign(y[I]),k&&(B.message.recentBlockhash=k)}),Gt(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:B,blockhash:I}=await this.connection.getLatestBlockhash();if(p.forEach((S,L)=>{y[L].find(V=>V.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),h){let S=[];for(let L of p){let V=await this.connection.sendTransaction(L,{skipPreflight:P}),{lastValidBlockHeight:H,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:H,signature:V},"confirmed"),S.push(V)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>{let L=await this.connection.sendTransaction(S,{skipPreflight:P});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:B,signature:L},"confirmed"),L})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let I=0,S=[],L=async()=>{if(!B[I])return;let V=await this.connection.sendTransaction(B[I],{skipPreflight:P});S.push({txId:V,status:"sent",signedTx:B[I]}),A==null||A([...S]),I++,this.connection.onSignature(V,H=>{let v=S.findIndex(Q=>Q.txId===V);v>-1&&(S[v].status=H.err?"error":"success"),A==null||A([...S]),H.err||L()},"processed"),this.connection.getSignatureStatus(V)};return L(),{txIds:[],signedTxs:B}}else{let I=[];for(let S=0;S<B.length;S+=1){let L=await this.connection.sendTransaction(B[S],{skipPreflight:P});I.push(L)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var at=class{constructor(e){this._owner=e}get publicKey(){return at.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return at.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return at.isKeyPair(this._owner)}get isPublicKey(){return at.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!at.isKeyPair(e)}};function gi(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ce}from"@solana/web3.js";var jo=new ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qo=new ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Kn=new ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),zp=new ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Yp=new ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Hp=new ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zo=new ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),jp=new ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Qp=new ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Zp=new ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),$p=new ce("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),ec=new ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tc=new ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nc=new ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rc=new ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Jp=new ce("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ef=new ce("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),tf=new ce("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ic=new ce("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),oc=new ce("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),sc=new ce("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Cn={IDO_PROGRAM_ID_V1:ec,IDO_PROGRAM_ID_V2:tc,IDO_PROGRAM_ID_V3:nc,IDO_PROGRAM_ID_V4:rc};var nf={SERUM_MARKET:ce.default,OPENBOOK_MARKET:new ce("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ce.default,FarmV3:new ce("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ce("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ce("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ce("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ce("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ce("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ce("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ic,CREATE_CPMM_POOL_AUTH:oc,CREATE_CPMM_POOL_FEE_ACC:sc,FEE_DESTINATION_ID:new ce("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ac}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as uc}from"@solana/spl-token";function we(i,e,t){return ue([i.toBuffer(),(t!=null?t:uc).toBuffer(),e.toBuffer()],new ac("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ut from"bn.js";var Rn=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=W(R({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new ut(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Rn){let u=new ut(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Ln(i.mul(new ut(Rn)),new ut(Rn-o.transferFeeBasisPoints)),c=new ut(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Ln(l.mul(new ut(o.transferFeeBasisPoints)),new ut(Rn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ln(i.mul(new ut(o.transferFeeBasisPoints)),new ut(Rn)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Xt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Ln(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ut(0))?t.add(new ut(1)):t}var Oe={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"},Cf=R({},Oe);var $o="ray_tab_hash",Ai="ray_req_hash",cc=()=>{if(typeof window===void 0)return"";let i=sessionStorage.getItem($o);return i||(i=`ray-${Date.now()}`,sessionStorage.setItem($o,i)),i},xr=async n=>{var r=n,{logCount:i=1e3,removeLastLog:e}=r,t=Ae(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ai)||"[]").slice(0,i-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(R({},t),{time:Date.now(),session:cc()}));try{localStorage.setItem(Ai,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(Ai,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return xr(W(R({},t),{logCount:i,removeLastLog:!0}))}};var Br=oe("Raydium_Api"),hi=new Map;var Sr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=r||1e3,this.api=mc.create({baseURL:this.urlConfigs.BASE_HOST||Oe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Br.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Br.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&&xr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Br.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&&xr({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Br.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Oe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Oe.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(r=>r.numSlots);return n.reduce((r,o)=>r+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Oe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Oe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Oe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Oe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Oe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Oe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Oe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>hi.has(s)?(n.push(hi.get(s)),!1):!0),o=[];return r.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Oe.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),o.forEach(a=>{hi.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&on(t).toBase58(),n&&n!=="undefined"?on(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Oe.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&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||Oe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Oe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Oe.CHECK_AVAILABILITY)).data}};var Kr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Jo="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as Vt,AccountLayout as cn,TOKEN_2022_PROGRAM_ID as Dc}from"@solana/spl-token";import{PublicKey as Er,SystemProgram as Wc}from"@solana/web3.js";var Pi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new Tr({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(Pi(e))}logInfo(...e){this.logger.info(Pi(e))}logAndCreateError(...e){let t=Pi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Mc,createCloseAccountInstruction as _c,createTransferInstruction as Ec,TOKEN_PROGRAM_ID as un}from"@solana/spl-token";import{PublicKey as Vc,SystemProgram as Fc}from"@solana/web3.js";import vc from"bn.js";import{PublicKey as ps,Keypair as Rc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import Oc from"bn.js";import{PublicKey as Tc}from"@solana/web3.js";import is,{isBN as os}from"bn.js";import{bits as dc,BitStructure as cy,blob as pc,Blob as ly,cstr as my,f32 as dy,f32be as py,f64 as fy,f64be as yy,greedy as by,Layout as fc,ns64 as gy,ns64be as wy,nu64 as yc,nu64be as Ay,offset as hy,s16 as Py,s16be as ky,s24 as Ty,s24be as Iy,s32 as bc,s32be as xy,s40 as By,s40be as Sy,s48 as Ky,s48be as Cy,s8 as Ry,seq as gc,struct as Ly,Structure as wc,u16 as Ac,u16be as Oy,u24 as Ny,u24be as My,u32 as hc,u32be as _y,u40 as Ey,u40be as Vy,u48 as Fy,u48be as vy,u8 as Pc,UInt as kc,union as Dy,Union as Wy,unionLayoutDiscriminator as qy,utf8 as Uy}from"@solana/buffer-layout";var Cr=fc,es=wc;var ki=kc;var ts=Pc,bt=Ac;var Ti=hc;var ns=yc;var Ne=bc;var rs=gc;var be=pc;var Ii=dc;var zt=class extends Cr{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new is(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new is(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},Rr=class extends Cr{constructor(t){super(8,t);this._lower=Ii(Ti(),!1),this._upper=Ii(Ti(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return R(R({},r),o)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function F(i){return new ki(1,i)}function ze(i){return new ki(4,i)}function w(i){return new zt(8,!1,i)}function z(i){return new zt(16,!1,i)}function ss(i){return new zt(1,!0,i)}function Or(i){return new zt(8,!0,i)}function as(i){return new zt(16,!0,i)}var Lr=class extends Cr{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(i){return new Lr(be(32),e=>new Tc(e),e=>e.toBuffer(),i)}function Ee(i){return new Lr(ts(),Ic,xc,i)}function Ic(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function xc(i){return i?1:0}var xi=class extends es{decode(e,t){return super.decode(e,t)}};function M(i,e,t){return new xi(i,e,t)}function q(i,e,t){let n,r=typeof e=="number"?e:os(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=os(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 rs(i,r,t)}var an=M([K("mint"),K("owner"),w("amount"),ze("delegateOption"),K("delegate"),F("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),K("closeAuthority")]);function Bc(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Bi(i,...e){if(!Bc(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Si(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function us(i,e){Bi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Mr=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ct=(i,e)=>i<<32-e|i>>>e;var ib=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sc(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Ki(i){return typeof i=="string"&&(i=Sc(i)),Bi(i),i}var Nr=class{clone(){return this._cloneInto()}},ob={}.toString;function cs(i){let e=n=>i().update(Ki(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Kc(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var ls=(i,e,t)=>i&e^~i&t,ms=(i,e,t)=>i&e^i&t^e&t,_r=class extends Nr{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Mr(this.buffer)}update(e){Si(this);let{view:t,buffer:n,blockLen:r}=this;e=Ki(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Mr(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),us(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Kc(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Mr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Cc=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]),_t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Et=new Uint32Array(64),Ci=class extends _r{constructor(){super(64,32,8,!1),this.A=_t[0]|0,this.B=_t[1]|0,this.C=_t[2]|0,this.D=_t[3]|0,this.E=_t[4]|0,this.F=_t[5]|0,this.G=_t[6]|0,this.H=_t[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Et[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Et[m-15],p=Et[m-2],y=ct(d,7)^ct(d,18)^d>>>3,f=ct(p,17)^ct(p,19)^p>>>10;Et[m]=f+Et[m-7]+y+Et[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ct(a,6)^ct(a,11)^ct(a,25),p=l+d+ls(a,u,c)+Cc[m]+Et[m]|0,f=(ct(n,2)^ct(n,13)^ct(n,22))+ms(n,r,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){Et.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ds=cs(()=>new Ci);var kb=oe("Raydium_Util");function fs({owner:i,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:o,account:s}of t.value){let a=an.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:we(i,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),r.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ps.default,amount:new Oc(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Ve({fromPublicKey:i,programId:e=Lc}){let t=Rc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Nc(i,t,e),seed:t}}function Nc(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=ds(n);return new ps(r)}function Ri(i){let{mint:e,tokenAccount:t,owner:n,programId:r=un}=i;return Mc(t,e,n,r)}function It(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=un}=i;return _c(e,t,r,n,o)}async function xt(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(an.span,n),u=Y(t).add(new vc(a)),c=Ve({fromPublicKey:r,programId:un});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Fc.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:an.span,programId:un}),Ri({mint:new Vc(Le.address),tokenAccount:c.publicKey,owner:o,programId:un})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[It({tokenAccount:c.publicKey,payer:r,owner:o})]}}function On({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=un}){return Ec(i,e,t,BigInt(String(n)),r,o)}var Nn=class extends Pe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}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 we(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 r=R(R({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Vt},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Dc},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=fs({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=Vt,associatedOnly:r=!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&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Er(t.tokenProgram||Vt),m=this.getAssociatedTokenAccount(n,new Er(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!o||h.pubkey.equals(m))).sort((h,A)=>h.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let h=Li(s,m,s,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&cn.decode(A.data).mint.equals(n)&&cn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(E.CreateATA);if(n.equals(te)&&r.amount){let A=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.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||[]),r.amount&&(p.instructions.push(On({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:Vt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let h=Ve({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(cn.span),k=Wc.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:A+Number((g=(b=r.amount)==null?void 0:b.toString())!=null?g:0),space:cn.span,programId:l});return p.instructions.push(k,Ri({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Vt,autoUnwrapWSOLToSOL:r}){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 Li(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],o=c}return r&&te.toBase58()===t.toBase58()&&(a.endInstructions=[It({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:o,programId:s=Vt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new Er(te).equals(o)){let p=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return R({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(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(Vt)&&cn.decode(f.data).mint.equals(o)&&cn.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:r=Vt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Er(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ae(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ae(m,["tokenAccount"]);u=d,c.addInstruction(p)}return R({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as il}from"@solana/spl-token";import{PublicKey as fe,SystemProgram as ol}from"@solana/web3.js";import{PublicKey as gs}from"@solana/web3.js";var Oi=M([F("instruction")]),Ni=M([F("instruction")]),qc=M([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Uc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Gc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),F("option"),K("rewardVaultB"),be(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),Xc=M([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(qc,5,"rewardInfos"),K("creator"),K(),q(w(),32,"padding")]),zc=new Proxy(Uc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Yc=new Proxy(Gc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Vr=new Proxy(Xc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:6,rewardInfos:r.rewardInfos.map(o=>{var s;return W(R({},o),{rewardType:((s=Object.entries(Ft).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),Hc=M([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Mi=M([F("instruction"),w("nonce"),q(Hc,5,"rewardTimeInfo")]),_i=M([F("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Ei=M([F("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),eg=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Vi=M([w("state"),K("id"),K("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),tg=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ys=M([w("state"),K("id"),K("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),bs=M([w(),w("state"),K("id"),K("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ze=M([F("instruction"),w("amount")]),jc=M([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ss("digitShift"),q(F(),7,"reserved1"),q(w(),7,"reserved2")]),Qc=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(F(),32,"reserved1"),q(jc,4,"votingMints"),Or("timeOffset"),F("bump"),q(F(),7,"reserved2"),q(w(),11,"reserved3")]),Zc=M([Or("startTime"),Or("endTime"),F("kind"),q(F(),15,"reserved")]),$c=M([q(Zc,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),F("votingMintConfigIdx"),q(F(),29,"reserved")]),Jc=M([be(8),K("voterAuthority"),K("registrar"),q($c,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),q(F(),94,"reserved")]);var cg=oe("Raydium_farm_config"),ws=new gs("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),As=new gs("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var hs={3:Vi,5:ys,6:bs},Fi=i=>[3,5,6].indexOf(i)!==-1,vi=i=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=i,r=`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: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=o[e])==null?void 0:s.call(o)},Ft={"Standard SPL":0,"Option tokens":1},lt={[jo.toString()]:3,[Qo.toString()]:5,[Kn.toString()]:6};import{PublicKey as le,SystemProgram as Ts,SYSVAR_RENT_PUBKEY as nl,SYSVAR_CLOCK_PUBKEY as Fr,TransactionInstruction as mt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Dg,TOKEN_PROGRAM_ID as vt,ASSOCIATED_TOKEN_PROGRAM_ID as Wg}from"@solana/spl-token";import Is from"bn.js";import el from"bn.js";var tl=oe("Raydium.farm.util");function Mn({programId:i,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function gt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Ps=({programId:i,poolId:e})=>ue([e.toBuffer()],i);function ks(i){return{isSet:new el(1),rewardPerSecond:Y(i.perSecond),rewardOpenTime:Y(i.openTime),rewardEndTime:Y(i.endTime),rewardType:Y(Ft[i.rewardType])}}function Di(i){return Y(i.endTime).sub(Y(i.openTime)).mul(Y(i.perSecond))}function Wi(i){let e=hs[i];return e||tl.logWithError("invalid version",i),e}var rl=oe("Raydium_farm_instruction"),ew={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 xs(i){let{version:e,id:t,ledger:n,programId:r,owner:o}=i,s={3:9,5:10}[e];s||rl.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Oi.span);Oi.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:nl,isWritable:!1})];return{instruction:new mt({programId:r,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Bs(i){var n;let e=Buffer.alloc(Mi.span);Mi.encode({instruction:0,nonce:new Is(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...oi,T({pubkey:i.farmId}),T({pubkey:i.farmAuthority,isWritable:!1}),T({pubkey:i.lpVault}),T({pubkey:i.lpMint,isWritable:!1}),T({pubkey:i.lockVault}),T({pubkey:i.lockMint,isWritable:!1}),T({pubkey:(n=i.lockUserAccount)!=null?n:Se}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(T({pubkey:r.rewardMint,isWritable:!1}),T({pubkey:r.rewardVault}),T({pubkey:r.userRewardToken}));return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function Ss(i){let e=Buffer.alloc(Ni.span);Ni.encode({instruction:5},e);let t=[T({pubkey:vt,isWritable:!1}),T({pubkey:i.id}),T({pubkey:i.authority,isWritable:!1}),T({pubkey:i.lpVault,isWritable:!1}),T({pubkey:i.rewardVault}),T({pubkey:i.userRewardToken}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function qi({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let o=Buffer.alloc(_i.span);_i.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},o);let s=[T({pubkey:vt,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:n.programId,keys:s,data:o})}function Ui({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let o=Buffer.alloc(Ei.span);Ei.encode({instruction:4,isSet:new Is(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(Ft[r.rewardType])},o);let s=[...oi,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:r.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:t.programId,keys:s,data:o})}function _n(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=gt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:2,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}function En(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:12,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Fr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Vn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Fr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ks(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:10,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Fr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Cs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Fr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Rs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=gt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:1,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}var Fn=class extends Pe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Se)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Di(W(R({},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:r=Kn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new fe(e.lpMint.address),lockInfo:{lockMint:ws,lockVault:As},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ve({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Vr.span);u.addInstruction({instructions:[ol.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Vr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ps({programId:new fe(a.programId),poolId:l.publicKey}),y=Mn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let P of a.rewardInfos){P.openTime>=P.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",P.openTime.toString()),isNaN(Ft[P.rewardType])&&this.logAndCreateError("rewardType error",P.rewardType),Number(P.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",P.perSecond),f.push(ks(P));let{rewardPubKey:x,newInstruction:B}=await this._getUserRewardInfo({rewardInfo:P,payer:c});B&&u.addInstruction(B),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let I=P.mint.equals(Se)?new fe(Le.address):P.mint;b.push({rewardMint:I,rewardVault:Mn({programId:a.programId,poolId:l.publicKey,mint:I,type:"rewardVault"}),userRewardToken:x})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new fe(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&u.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=Bs({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:[k]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Xe((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(Se)?new fe(Le.address):n.mint,l=a.rewardInfos.findIndex(g=>new fe(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:Se,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:[qi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Xe((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(Se)?new fe(Le.address):m.mint,p=a.rewardInfos.findIndex(A=>new fe(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:Se,{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 h=qi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Xe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Se)?new fe(Le.address):r.mint,m=Mn({programId:new fe(n.programId),poolId:new fe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[Ui({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Xe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Se)?new fe(Le.address):l.mint,d=Mn({programId:new fe(n.programId),poolId:new fe(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=Ui({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(R({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,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=lt[d];Fi(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new fe(n.programId),new fe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=gt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let Q=we(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&Q.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let k=b.lpMint,P=A[k.address];P||this.logAndCreateError("you don't have any lp","lp zero",A);let x=[];for(let v of m){let Q=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:re,instructionParams:rt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new fe(v.mint.address),notUseTokenAccount:Q,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!Q,associatedOnly:Q?!1:a,checkCreateATAOwner:u});ee=re,rt&&h.addInstruction(rt)}A[v.mint.address]=ee,x.push(ee)}let B,I=await this.scope.connection.getAccountInfo(g);if(I&&(B=Wi(p).decode(I.data)),n.programId!==Kn.toString()&&!B){let{instruction:v,instructionType:Q}=xs({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[v],instructionTypes:[Q]})}let S=vi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:x});S&&this.logAndCreateError(S);let L={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:P,rewardAccounts:x,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new fe(v))},V=p===6?Rs(L):p===5?Cs(L):Ks(L),H={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return h.addInstruction({instructions:[V],instructionTypes:[H[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,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=lt[n.programId];Fi(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 S of this.scope.account.tokenAccounts)if(u){let L=we(this.scope.ownerPubKey,S.mint).publicKey;S.publicKey&&L.equals(S.publicKey)&&(b[S.mint.toString()]=S.publicKey)}else b[S.mint.toString()]=S.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let S=gt({programId:new fe(n.programId),poolId:new fe(n.id),owner:this.scope.ownerPubKey,version:p}),L=await this.scope.connection.getAccountInfo(S);L||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:L}),Wi(p).decode(L.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:S,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new fe(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=S,L&&f.addInstruction(L)}b[g.toString()]=A;let k=[];for(let S of d){let L=s&&S.mint.address===te.toString(),V=b[S.mint.address];if(!V){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.mint.programId,mint:new fe(S.mint.address),notUseTokenAccount:L,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:c});V=H,v&&f.addInstruction(v)}b[S.mint.address]=V,k.push(V)}let P=vi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});P&&this.logAndCreateError(P);let x={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(S=>new fe(S))},B=p===6?_n(x):p===5?En(x):Vn(x),I={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[I[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Xe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Se.toString()?new fe(Le.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Se,c=this.createTxBuilder(),l;if(t.equals(Se)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Di(W(R({},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:[il(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ss({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.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:r,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=we(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)=>W(R({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=lt[f],k=b.address,P=n&&k===te.toString(),x=m[k];if(!x){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new fe(k),notUseTokenAccount:P,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:o,checkCreateATAOwner:s});x=H,v&&l.addInstruction(v)}m[k.toString()]=x;let B=[];for(let H of g){let v=n&&H.mint.address===te.toString(),Q=m[H.mint.address];if(!Q){let{account:ee,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new fe(H.mint.address),notUseTokenAccount:v,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});Q=ee,re&&l.addInstruction(re)}m[H.mint.address]=Q,B.push(Q)}let I=p[h],S={amount:Ge,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:I,lpAccount:x,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new fe(H))},L=A===6?_n(S):A===5?En(S):Vn(S),V={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[L],instructionTypes:[V[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as De}from"@solana/web3.js";import{AccountLayout as Wl,NATIVE_MINT as ma,TOKEN_PROGRAM_ID as Xr}from"@solana/spl-token";var Tw=M([ze("mintAuthorityOption"),K("mintAuthority"),w("supply"),F("decimals"),F("isInitialized"),ze("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as Sw}from"@solana/web3.js";import{MintLayout as Cw,TOKEN_PROGRAM_ID as Lw}from"@solana/spl-token";var Ls=i=>new he({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});import{TOKEN_PROGRAM_ID as Dn,ASSOCIATED_TOKEN_PROGRAM_ID as Al}from"@solana/spl-token";import{PublicKey as wt,TransactionInstruction as mn,SystemProgram as hl,SYSVAR_RENT_PUBKEY as eA}from"@solana/web3.js";var Gi=M([F("instruction"),w("amountIn"),w("minAmountOut")]),Xi=M([F("instruction"),w("maxAmountIn"),w("amountOut")]),Xw=M([F("instruction"),F("nonce")]),sl=M([F("instruction"),F("nonce"),w("startTime")]),Os=M([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),q(w(),3,"padding")]),zw=M([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(w(),64,"padding")]),zi=M([F("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Yi=M([F("instruction"),w("amountIn")]);var Ns=M([w("fee")]);import{PublicKey as al}from"@solana/web3.js";var ln=new al("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ht=5e4,ul=M([w("x"),w("y"),w("price")]),cl=M([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(ul,Ht,"DataElement")]);function ll(i,e){return[0,Ht-2]}function ml(i){return[0,Ht-2]}function dl(i){return[0,Ht-2]}function pl(i,e,t){let[n,r]=ll(e,t),o=n,s=r,a=0,u=e*i.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Ht-2)return[a,a,!1];let c=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.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 Hi(i,e,t){let[n,r,o]=pl(i,e,t);if(!o)return 0;if(n===r){let s=i.DataElement[n].x;return e*i.multiplier/s}else{let s=i.DataElement[n].x,a=i.DataElement[n].y,u=i.DataElement[r].x,c=i.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*i.multiplier*l/p}}function Yt(i,e,t){return e*i.multiplier/t}function Ms(i,e,t){return e*t/i.multiplier}function fl(i,e){let[t,n]=ml(e),r=t,o=n,s=0,a=e;for(;r<o;){if(s=Math.floor((o+r)/2),s<=0||s>Ht-2)return[s,s,!1];let u=i.DataElement[s].x,c=i.DataElement[s-1].x,l=i.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];r=s+1}}return[s,s,!1]}function yl(i,e){let[t,n]=dl(e),r=t,o=n,s=0,a=e;for(;r<=o;){if(s=Math.floor((o+r)/2),s<=0||s>=Ht-2)return[s,s,!1];let u=i.DataElement[s].y,c=i.DataElement[s-1].y,l=i.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)r=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 _s(i,e,t,n){let r=n?e+t:e-t,[o,s,a]=fl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].y,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-(r-u)*i.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*i.multiplier/l),[y,f,!1,a]}}}function bl(i,e,t,n){let r=n?e-t:e+t,[o,s,a]=yl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].x,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-r)/i.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/i.multiplier),[y,f,!1,a]}}}function gl(i,e){let t=_s(i,e,0,!1);return t[3]?t[0]:0}function Es(i,e,t,n){let r=Hi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!0,[c,l,m,d]=_s(i,o,a,u);if(!d)return 0;if(m)return n*i.multiplier/c;{let p=s-l;return Ms(i,p,r)}}function Vs(i,e,t,n){let r=Hi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!1,[c,l,m,d]=bl(i,s,a,u);if(!d)return 0;if(m)return n*c/i.multiplier;{let p=o-l;return Ms(i,p,r)}}function wl(i){let e=cl.decode(i);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 Fs(i,e,t,n){let r=gl(i,Yt(i,e,Hi(i,e,t)))/i.multiplier;return n?r:1/r}var vn=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(ln);e&&(this._layoutData=wl(e==null?void 0:e.data))}}};var vs=oe("Raydium_liquidity_instruction");function Ds(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:o,fixedSide:s}=i,a=Buffer.alloc(zi.span);zi.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(o),fixedSide:s==="base"?Ge:vo},a);let u=[T({pubkey:Dn,isWritable:!1}),T({pubkey:new wt(e.id)}),T({pubkey:new wt(t.authority),isWritable:!1}),T({pubkey:new wt(t.openOrders),isWritable:!1}),T({pubkey:new wt(t.targetOrders)}),T({pubkey:new wt(e.lpMint.address)}),T({pubkey:new wt(t.vault.A)}),T({pubkey:new wt(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:ln})),u.push(T({pubkey:new wt(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new wt(t.marketEventQueue),isWritable:!1})),new mn({programId:new wt(e.programId),keys:u,data:a})}function ji(i){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=i,o=Xe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Yi.span);Yi.encode({instruction:4,amountIn:Y(r)},a);let u=[T({pubkey:Dn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:ln})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new mn({programId:o.programId,keys:u,data:a})}return new mn({programId:o.programId,keys:[]})}function Ws({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,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:h,openTime:A,coinAmount:k,pcAmount:P,ammConfigId:x,feeDestinationId:B}){let I=M([F("instruction"),F("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),S=[{pubkey:Dn,isSigner:!1,isWritable:!1},{pubkey:Al,isSigner:!1,isWritable:!1},{pubkey:hl.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:x,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}],L=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:P},L),{instruction:new mn({keys:S,programId:i,data:L}),instructionType:E.AmmV4CreatePool}}function Pl({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Xe(i),s=Buffer.alloc(Gi.span);Gi.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[T({pubkey:Dn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new mn({programId:o.programId,keys:a,data:s})}function kl({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Xe(i),s=Buffer.alloc(Xi.span);Xi.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[T({pubkey:Dn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:o.programId,keys:a,data:s})}function qs(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pl(W(R({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return kl(W(R({},a),{maxAmountIn:r,amountOut:o}),t);vs.logWithError("invalid params","params",i)}throw vs.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Me,TOKEN_2022_PROGRAM_ID as qt,ASSOCIATED_TOKEN_PROGRAM_ID as ra}from"@solana/spl-token";import{PublicKey as D,TransactionInstruction as dt,SystemProgram as dn,Keypair as ro}from"@solana/web3.js";import ia from"bn.js";import Ll from"bn.js";function vr(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Qi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Zi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Wn(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Us(i,e){return Wn(i,e)?null:Qi(i,e)}function Gs(i,e){return Wn(i,e)?null:Zi(i,e)}var fA=Buffer.from("amm_config","utf8"),Tl=Buffer.from("pool","utf8"),Il=Buffer.from("pool_vault","utf8"),xl=Buffer.from("pool_reward_vault","utf8"),Xs=Buffer.from("position","utf8"),Bl=Buffer.from("tick_array","utf8"),Sl=Buffer.from("operation","utf8"),Kl=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zs(i,e,t,n){return ue([Tl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function $i(i,e,t){return ue([Il,e.toBuffer(),t.toBuffer()],i)}function Ys(i,e,t){return ue([xl,e.toBuffer(),t.toBuffer()],i)}function de(i,e,t){return ue([Bl,e.toBuffer(),vr(t)],i)}function jt(i,e,t,n){return ue([Xs,e.toBuffer(),vr(t),vr(n)],i)}function et(i,e){return ue([Xs,e.toBuffer()],i)}function Dr(i){return ue([Buffer.from("metadata","utf8"),rn.toBuffer(),i.toBuffer()],rn)}function qn(i){return ue([Sl],i)}function At(i,e){return ue([Kl,e.toBuffer()],i)}import ht from"bn.js";var xe=new ht(0),Pt=new ht(1),Bt=new ht(-1),$e=new ht(1).shln(64),Wr=new ht(1).shln(128),Ji=$e.sub(Pt),Un=64,Hs=Wr.subn(1),Fe=-443636,Ye=-Fe,Dt=new ht("4295048016"),Wt=new ht("79226673521066979257578248091"),js=16,Qs="59543866431248",Zs="184467440737095516",$s="15793534762490258745",qr=new ht(10).pow(new ht(6));var Js={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:[]},gA=new ht("18446744073700000000");var Cl=15,se=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(r,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Cl/2));for(let p=0;p<l.length;p++){let{publicKey:y}=de(t,n,l[p]);u.push(y)}let m=(await yt(e,u)).map(p=>p!==null?Gn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(R({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=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,r,o){let s=Math.floor(e/se.tickCount(t)),a=n?G.searchLowBitFromStart(r,o,s-1,1,t):G.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ke-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<Ke;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=G.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ke;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=de(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>Ye)return!1;let n=G.getTickArrayStartIndexByTick(Fe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ke*e}};import ne from"bn.js";import{PublicKey as Kt}from"@solana/web3.js";import Te from"bn.js";var eo=14,St=class{static maxTickInTickarrayBitmap(e){return e*Ke*Qt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!se.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-se.tickCount(n):t+se.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ke,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Us(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=Gs(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-se.tickCount(n)}}}},Xn=class{static getBitmapOffset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=St.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;if(Ye<=t)throw Error(`extensionTickBoundary check error: ${Ye}, ${t}`);if(n<=Fe)throw Error(`extensionTickBoundary check error: ${n}, ${Fe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=se.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=St.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=G.mergeTickArrayBitmap(e).shln(Qt-1-a),c=Wn(512,u)?null:Qi(512,u);if(c!==null){let l=t-c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=Wn(512,u)?null:Zi(512,u);if(c!==null){let l=t+c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-se.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%St.maxTickInTickarrayBitmap(t),r=Math.floor(n/se.tickCount(t));return e<0&&n!=0&&(r=Qt-r),r}};import kt from"bn.js";var zn=class{static getfeeGrowthInside(e,t,n){let r=new kt(0),o=new kt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new kt(0),a=new kt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,h,A;let a=J.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),u=J.getSqrtPriceX64FromTick(t.tickLower),c=J.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=ae.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),ye(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[ye(new kt(new _(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ye(new kt(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:Xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ea}from"@solana/spl-token";var ve=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...d),{expectedAmountOut:m.mul(Bt),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=de(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Bt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ve.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Xn.checkTickArrayIsInit(se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(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/se.tickCount(e.tickSpacing)),r=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=se.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=St.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Xn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Fe||t>Ye)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],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=W(R({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Kt(d)});if(p.tokenMint.equals(Kt.default))continue;if(n<=p.openTime.toNumber()||r.eq(xe)){s.push(p);continue}let y=new Te(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=Z.mulDivFloor(f,p.emissionsPerSecondX64,$e),A=p.rewardTotalEmissioned.add(h);s.push(W(R({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;return t>Ye&&(t=se.getArrayStartIndex(Ye,e)+se.tickCount(e)),n<Fe&&(n=se.getArrayStartIndex(Fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/se.tickCount(t)*Qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await hr(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=ta.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=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}=de(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await hr(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Gn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(R({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(et(p,d).publicKey);let l=await yt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=Gr.decode(d.data),y=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=G._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=ae.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:k,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(I=>W(R({},I),{pendingReward:new Te(0)})),leverage:P,tokenFeeAmountA:new Te(0),tokenFeeAmountB:new Te(0)}];let x=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}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=Gn.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],P=y[m[A].toString()],x=k.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=P.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:S}=await zn.GetPositionFees(f,g,x,B),L=await zn.GetPositionRewards(f,g,x,B);g.tokenFeeAmountA=I.gte(new Te(0))?I:new Te(0),g.tokenFeeAmountB=S.gte(new Te(0))?S:new Te(0);for(let V=0;V<L.length;V++)g.rewardInfos[V].pendingReward=L[V].gte(new Te(0))?L[V]:new Te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new _(0)}){var L;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?Dt.add(new Te(1)):Wt.sub(new Te(1)):u=J.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,r,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=ve.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((L=d.fee)!=null?L:xe),u),g=ye(p,m,r,!1),h=J.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new _(1).div(h),k=p.mul(new Te(Math.floor((1-s)*1e10))).div(new Te(1e10)),P=ye(k,m,r,!1),x=c?e.currentPrice:new _(1).div(e.currentPrice),B=new _(A).sub(x).abs(),I=x,S=new Ue(new _(B).mul(10**15).toFixed(0),new _(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:P,expirationTime:Xt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:S,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(R({},u),{mint:u.address,isToken2022:u.programId===ea.toBase58()})),new he(W(R({},c),{mint:c.address,isToken2022:c.programId===ea.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:h,fee:A,remainingAccounts:k}=await ve.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Kt(u.address),amountIn:n,slippage:o,epochInfo:s}),P=W(R({},d),{amount:new ke(l,d.amount),fee:d.fee===void 0?void 0:new ke(l,d.fee)}),x=W(R({},p),{amount:new ke(m,p.amount),fee:p.fee===void 0?void 0:new ke(m,p.fee)}),B=W(R({},y),{amount:new ke(m,y.amount),fee:y.fee===void 0?void 0:new ke(m,y.fee)}),I=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:b.mul(new _(10**(20+m.decimals))).toFixed(0)}),S=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:g.mul(new _(10**(20+m.decimals))).toFixed(0)}),L=new ke(l,A);return{realAmountIn:P,amountOut:x,minAmountOut:B,expirationTime:f,currentPrice:I,executionPrice:S,priceImpact:h,fee:L,remainingAccounts:k}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){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:r,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:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[on(e.mintA.address).toString()],d=r[on(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=J.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),b=J.getSqrtPriceX64FromTick(s),g=J.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:P}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),x=new _(h.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(A.toString()).div(new _(10).pow(y)).mul(d.value)),B=new _(k.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(P.toString()).div(new _(10).pow(y)).mul(d.value)),I=B.div(x.add(B)).div(B),L=new _(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),V=3600*24*365,H=e.rewardDefaultInfos.map(v=>{var re,rt;let Q=v.mint.decimals,ee=r[v.mint.address];return u<((re=v.startTime)!=null?re:0)||u>((rt=v.endTime)!=null?rt:0)||!v.perSecond||!ee||Q===void 0?0:new _(ee.value).mul(new _(v.perSecond).mul(V)).div(new _(10).pow(Q)).mul(I).mul(100).toNumber()});return{feeApr:L,rewardsApr:H,apr:L+H.reduce((v,Q)=>v+Q,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=J.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),m=J.getSqrtPriceX64FromTick(n),d=J.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Te(new _(y.amount.sub((h=y.fee)!=null?h:xe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ae.getLiquidityFromTokenAmountA(m,d,f,!a):new Te(0);else if(l.lte(d)){let A=ae.getLiquidityFromTokenAmountA(l,d,f,!a),k=ae.getLiquidityFromTokenAmountB(m,l,f);b=t?A:k}else b=t?new Te(0):ae.getLiquidityFromTokenAmountB(m,d,f);return ve.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,h,A;let u=J.getSqrtPriceX64FromTick(n),c=J.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ae.getAmountsFromLiquidity(J.priceToSqrtPriceX64(new _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),ye(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[ye(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ye(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:Xt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new Kt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=Ur.decode(n.data),o=At(new Kt(t.programId),new Kt(t.id)).publicKey,s=await ve.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return W(R({},r),{id:new Kt(t.id),programId:new Kt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:W(R({},t.config),{id:new Kt(t.config.id),fundOwner:""}),currentPrice:new _(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var Z=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(xe)||(o=o.add(Pt)),o}static mulDivFloor(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).add(n.sub(Pt)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Wr).sub(t).mod(Wr)}};function Ce(i,e){return to(i.mul(e),64,256)}function Rl(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function to(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var J=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(xe))return e;let o=t.shln(Un);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,Pt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Un);if(r)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,Pt,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<Fe||e>Ye)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ce(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ce(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ce(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ce(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ce(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ce(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ce(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ce(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ce(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ce(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ce(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ce(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ce(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ce(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ce(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ce(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ce(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ce(n,new ne("37481735321082"))),e>0&&(n=Hs.div(n)),n}static getTickFromPrice(e,t,n){return J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Wt)||e.lt(Dt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),r=Rl(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<js;){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=r.add(c).mul(new ne(Qs)),d=to(m.sub(new ne(Zs)),64,128).toNumber(),p=to(m.add(new ne($s)),64,128).toNumber();return d==p?d:J.getSqrtPriceX64FromTick(p).lte(e)?p:d}},$t=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=$t.getTickWithPriceAndTickspacing(e,t,n,r),s=J.getSqrtPriceX64FromTick(o);return J.sqrtPriceX64ToPrice(s,n,r)}},ae=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Un),s=t.sub(e);return r?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),Pt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");return r?Z.mulDivCeil(n,t.sub(e),$e):Z.mulDivFloor(n,t.sub(e),$e)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?Z.mulDivRoundingUp(a,Pt,Ji):a.shrn(Un)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Ji,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ae.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ae.getLiquidityFromTokenAmountA(e,n,r,!1),a=ae.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ae.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ae.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ne(0)};if(e.lt(n)){let s=ae.getTokenAmountAFromLiquidity(e,n,r,o),a=ae.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ae.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=ae.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new ne(new _(u.toString()).mul(l).toFixed(0)),d=new ne(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,k,P;let c=J.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=J.getSqrtPriceX64FromTick(t),m=J.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ae.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[ye(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ye(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[ye(new ne(new _(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),ye(new ne(new _(p.amountB.toString()).mul(d).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Xt(y.expirationTime,f.expirationTime)}}},Zt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y){if(d.eq(xe))throw new Error("amountSpecified must not be 0");if(y||(y=s?Dt.add(Pt):Wt.sub(Pt)),s){if(y.lt(Dt))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(Wt))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(xe),b={amountSpecifiedRemaining:d,amountCalculated:xe,sqrtPriceX64:m,tick:c>p?Math.min(p+se.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,h=n[p],A=0,k=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(xe)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let x=G.nextInitTick(h,b.tick,l,s,k),B=x||null,I=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let L=ve.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},g,s);if(!L.isExist)throw Error("swapCompute LiquidityInsufficient");g=L.nextStartIndex;let{publicKey:V}=de(e,t,g);I=V,h=n[g],B=G.firstInitializedTick(h,s)}P.tickNext=B.tick,P.initialized=B.liquidityGross.gtn(0),p!==g&&I&&(b.accounts.push(I),p=g),P.tickNext<Fe?P.tickNext=Fe:P.tickNext>Ye&&(P.tickNext=Ye),P.sqrtPriceNextX64=J.getSqrtPriceX64FromTick(P.tickNext);let S;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?S=y:S=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Zt.swapStepCompute(b.sqrtPriceX64,S,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let L=B.liquidityNet;s&&(L=L.mul(Bt)),b.liquidity=ae.addDelta(b.liquidity,L)}k=P.tickNext!=b.tick&&!s&&h.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let L=J.getTickFromSqrtPriceX64(b.sqrtPriceX64);k=L!=b.tick&&!s&&h.startTickIndex===L,b.tick=L}++A}try{let{nextStartIndex:P,isExist:x}=se.nextInitializedTickArray(b.tick,l,s,r,o);x&&p!==P&&(b.accounts.push(de(e,t,P).publicKey),p=P)}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,r,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=r.gte(xe);if(u){let l=Z.mulDivFloor(r,qr.sub(new ne(o.toString())),qr);s.amountIn=a?ae.getTokenAmountAFromLiquidity(t,e,n,!0):ae.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ae.getTokenAmountBFromLiquidity(t,e,n,!1):ae.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Bt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromOutput(e,n,r.mul(Bt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ae.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ae.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ae.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ae.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Bt))&&(s.amountOut=r.mul(Bt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),qr.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ke=60,Qt=512,G=class{static getTickArrayAddressByTick(e,t,n,r){let o=G.getTickArrayStartIndexByTick(n,r),{publicKey:s}=de(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),r=Math.floor((e-n)/t);if(r<0||r>=Ke)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=se.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*se.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ke,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ke,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ke:e+t*Ke}static mergeTickArrayBitmap(e){let t=new Ll(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ke));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,Qt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Fe||e>Ye}static nextInitTick(e,t,n,r,o){if(se.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ke;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.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 r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new _(1).div(a)}}};var xh=M([be(8),F("bump"),bt("index"),K(""),ze("protocolFeeRate"),ze("tradeFeeRate"),bt("tickSpacing"),q(w(),8,"")]),Ol=M([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),no=M([be(8),Ee("initialized"),K("poolId"),q(Ol,1e3,"observations"),q(z(),5,"")]),Nl=M([F("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),z("rewardGrowthGlobalX64")]),Ur=M([be(8),F("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ne("tickCurrent"),bt("observationIndex"),bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),F("status"),q(F(),7,""),q(Nl,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")]),Ml=M([z("growthInsideLastX64"),w("rewardAmountOwed")]),Gr=M([be(8),F("bump"),K("nftMint"),K("poolId"),Ne("tickLower"),Ne("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Ml,3,"rewardInfos"),q(w(),8,"")]),Bh=M([be(8),F("bump"),K("poolId"),Ne("tickLowerIndex"),Ne("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),_l=M([Ne("tick"),as("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),Gn=M([be(8),K("poolId"),Ne("startTickIndex"),q(_l,Ke,"ticks"),F("initializedTickCount"),q(F(),115,"")]),na=M([be(329),q(K(),100,"whitelistMints")]),ta=M([be(8),K("poolId"),q(q(w(),8),eo,"positiveTickArrayBitmap"),q(q(w(),8),eo,"negativeTickArrayBitmap")]);var oa=oe("Raydium_Clmm"),pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...pt.createPool,...g]);return new dt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ve({fromPublicKey:r,programId:n}),[d,p]=[new D(o.address),new D(s.address)],y=[dn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(no.span),space:no.span,programId:n})],{publicKey:f}=zs(n,a,d,p),{publicKey:b}=$i(n,f,d),{publicKey:g}=$i(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new D(o.programId||Me),p,g,new D(s.programId||Me),At(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,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,L){let V=M([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),H=[...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ra,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],Q=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:x,amountMaxA:B,amountMaxB:I,withMetadata:S==="create",baseFlag:!1,optionBaseFlag:0},Q);let ee=Buffer.from([...pt.openPosition,...Q]);return new dt({keys:v,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let I=ro.generate();m.push(I),y=I.publicKey}let f=G.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:k}=Dr(y),{publicKey:P}=et(d,y),{publicKey:x}=jt(d,p,r,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,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:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let I=ro.generate();m.push(I),y=I.publicKey}let f=G.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:k}=Dr(y),{publicKey:P}=et(d,y),{publicKey:x}=jt(d,p,r,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,c,s,a,u,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[B],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,L){let V=M([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),H=[...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ra,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],Q=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:new ia(0),amountMaxA:B==="MintA"?I:S,amountMaxB:B==="MintA"?S:I,withMetadata:x==="create",baseFlag:B==="MintA",optionBaseFlag:1},Q);let ee=Buffer.from([...pt.openPosition,...Q]);return new dt({keys:v,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new D((await l(1))[0]);else{let I=ro.generate();d.push(I),m=I.publicKey}let[p,y]=[new D(e.programId),new D(e.id)],f=G.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(p,y,f),{publicKey:h}=de(p,y,b),{publicKey:A}=we(n.wallet,m,Me),{publicKey:k}=Dr(m),{publicKey:P}=et(p,m),{publicKey:x}=jt(p,y,r,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(t.mintA.address),new D(t.mintB.address),r,o,f,b,s,a,u,c,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[B],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=M([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...pt.closePosition,...u]);return new dt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new D(e.programId),{publicKey:s}=we(n.wallet,r.nftMint,Me),{publicKey:a}=et(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},x);let B=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(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:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:new ia(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},x);let B=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=M([z("liquidity"),w("amountMinA"),w("amountMinB")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey: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:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:pr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],B=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},B);let I=Buffer.from([...pt.decreaseLiquidity,...B]);return new dt({keys:x,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new D(e.programId),new D(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=de(c,l,m),{publicKey:y}=de(c,l,d),{publicKey:f}=we(r.wallet,n.nftMint,u),{publicKey:b}=et(c,n.nftMint),{publicKey:g}=jt(c,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new D(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new D(e.rewardDefaultInfos[k].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),h,o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?At(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,r,o,s,a,u,c,l,m,d,p,y,f,b,g){let h=M([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:pr,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},P);let x=Buffer.from([...pt.swap,...P]);return new dt({keys:k,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new D(e.programId),new D(e.id)],[d,p]=[new D(t.vault.A),new D(t.vault.B)],[y,f]=[new D(e.mintA.address),new D(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,m,new D(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,At(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...pt.initReward,...f]);return new dt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a=Ys(o,s,r.mint).publicKey,u=qn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new D(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([F("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,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:Y(l),endTime:Y(m)},f);let b=Buffer.from([...pt.setRewardEmissions,...f]);return new dt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new D(t.rewardInfos[d].vault),c=new D(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&oa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=qn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new D(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=M([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:pr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...pt.collectReward,...l]);return new dt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new D(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&oa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(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 Fl}from"@solana/web3.js";import{PublicKey as El}from"@solana/web3.js";import sa from"bn.js";var aa=new sa(25),ua=new sa(1e4);var Vl=oe("Raydium_liquidity_serum");function ca({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));r=El.createProgramAddressSync(o,i)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:r,nonce:n}}throw Vl.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}import sP from"bn.js";function io({programId:i}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Jt({name:i,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function vl({programId:i,marketId:e}){let{publicKey:t}=ue([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Dl({programId:i}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function la({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=Jt({name:"amm_associated_seed",programId:a,marketId:t}),l=Jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Dl({programId:a}),p=Jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=vl({programId:a,marketId:t}),g=Jt({name:"target_associated_seed",programId:a,marketId:t}),h=Jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=ca({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:i,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Fl.default,configId:io({programId:a})}}import Qe from"bn.js";var Yn=class extends Pe{constructor(t){super(t);this.stableLayout=new vn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:o}){let s=new Qe(new _(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Ls(t[o?"mintB":"mintA"]),[u,c]=[new Qe(new _(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Qe(new _(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Qe(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:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Ge;s.isZero()||(d=m==="base"?gr(s.mul(c),u):gr(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=gr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ue(new Qe(1)).add(r).mul(d).quotient,b=new ke(a,d),g=new ke(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:r,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:",r,"amountInB:",o),(r.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[r.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 De(n.lpMint.address)}),h=[p,y],A=[f,b],k=[r.raw,o.raw],P=r.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(P)||this.logAndCreateError("invalid fixedSide","fixedSide",s),P==="quote"?(h.reverse(),A.reverse(),k.reverse(),x=s==="a"?"quote":"base"):P==="base"&&(x=s==="a"?"base":"quote");let[B,I]=h,[S,L]=A,[V,H]=k,v=await this.getAmmPoolKeys(n.id),Q=this.createTxBuilder(),Ct=await l.handleTokenAccount({side:"in",amount:V,mint:B.mint,tokenAccount:S,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Ct,re=Ae(Ct,["tokenAccount"]);Q.addInstruction(re);let ir=await l.handleTokenAccount({side:"in",amount:H,mint:I.mint,tokenAccount:L,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rt}=ir,yn=Ae(ir,["tokenAccount"]);Q.addInstruction(yn);let bn=await l.handleTokenAccount({side:"out",amount:0,mint:new De(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Qr}=bn,Zr=Ae(bn,["tokenAccount"]);return Q.addInstruction(Zr),Q.addInstruction({instructions:[Ds({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:rt,lpTokenAccount:Qr,owner:this.scope.ownerPubKey},baseAmountIn:V,quoteAmountIn:H,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),Q.addCustomComputeBudget(c),u===0&&await Q.buildV0(),Q.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:r,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new De(n.mintA.address),new De(n.mintB.address),new De(n.lpMint.address)];this.logDebug("amountIn:",r),r.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",r.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:h}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=B,k=Ae(B,["tokenAccount"]);b.addInstruction(k);let I=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:P}=I,x=Ae(I,["tokenAccount"]);return b.addInstruction(x),b.addInstruction({instructions:[ji({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:P,owner:this.scope.ownerPubKey},amountIn:r})],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:r,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Xr,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||we(this.scope.ownerPubKey,ee.accountInfo.mint,Xr).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 h=r.add(a!=null?a:new Qe(0)),A=t.mintA.address===he.WSOL.mint.toString(),k=t.mintB.address===he.WSOL.mint.toString(),{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new De(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(x||{}),P===void 0)throw new Error("base token account not found");let{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new De(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=P,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Ct of s.rewardInfos){let ir=Ct.mint.address===he.WSOL.mint.toString();if(b[Ct.mint.address])ee.push(b[Ct.mint.address]);else{let{account:bn,instructionParams:mo}=await this.scope.account.getOrCreateTokenAccount({mint:new De(Ct.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!ir,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});bn||this.logAndCreateError("farm reward account not found:",Ct.mint.address),mo&&f.addInstruction(mo),ee.push(bn)}}let re=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],rt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:re,lpAccount:g,rewardAccounts:ee},yn=lt[s.programId],Qr=yn===6?_n(rt):yn===5?En(rt):Vn(rt),Zr={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};f.addInstruction({instructions:[Qr],instructionTypes:[Zr[yn]]})}let S=await this.getAmmPoolKeys(t.id),L=ji({poolInfo:t,poolKeys:S,userKeys:{lpTokenAccount:g,baseTokenAccount:P,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:h});f.addInstruction({instructions:[L],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:S.lookupTableAccount?[S.lookupTableAccount]:[]});let[V,H]=t.mintA.address===n.mintA.address?[P,B]:[B,P],v=await this.scope.clmm.getClmmPoolKeys(t.id),Q=await Ie.openPositionFromBaseInstructions(W(R({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:V,tokenAccountB:H},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...Q.instructions],signers:Q.signers,instructionTypes:[...Q.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,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&&r.mint.equals(ma),h=c.useSOLBalance&&o.mint.equals(ma),A=this.createTxBuilder(),{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:r.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(P||{});let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),k===void 0||x===void 0)throw Error("you don't has some token account");let I=la({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:o.mint,baseDecimals:r.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),S={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:y},{instruction:L,instructionType:V}=Ws(W(R({},S),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:x,userLpVault:we(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[L],instructionTypes:[V]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:S}})}async getCreatePoolFee({programId:t}){let n=io({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Ns.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:o,slippage:s}){if(r!==t.mintA.address&&r!==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=r==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Zo.toBase58(),y;if(p)y=new _(d.toString()).div(m.toString());else{let I=Fs(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new _(1e6).div(I*1e6):y=new _(I*1e6).div(1e6)}let f=n,b=new Qe(0),g=new Qe(0);if(!f.isZero())if(p){g=Ln(f.mul(aa),ua);let I=f.sub(g),S=m.add(I);b=d.mul(I).div(S)}else{g=f.mul(new Qe(2)).div(new Qe(1e4));let I=f.sub(g);l==="quote"?b=new Qe(Es(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber())):b=new Qe(Vs(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber()))}let h=new Qe(new _(b.toString()).mul(1-s).toFixed(0)),A=b,k=h,P=new _(b.toString()).div(new _(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(P=new _(b.toString()).div(f.sub(g).toString()));let x=y.sub(P).div(y).mul(100);return{amountOut:A,minAmountOut:k,currentPrice:y,executionPrice:P,priceImpact:x,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:r,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 De(l.address),programId:new De(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new De(m.address),programId:new De(m.programId),associatedOnly:!1}),k=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new De(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=k,f=Ae(k,["tokenAccount"]);c.addInstruction(f);let P=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new De(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=P,g=Ae(P,["tokenAccount"]);c.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[qs({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:r,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 De(c))),r={},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=Os.decode(l.data);r[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new De(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 Qe(Wl.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(r)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=W(R({},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 ie}from"@solana/web3.js";import tt from"bn.js";var Hn=class extends Pe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new tt(new ie(r.address).toBuffer()).gt(new tt(new ie(o.address).toBuffer()))?[o,r,new _(1).div(a)]:[r,o,a],b=J.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ie.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:W(R({},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:R({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:[]}},Js),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,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,h=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[k,P]=s==="MintA"?[a,u]:[u,a],{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(B||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});I&&(g=I),f.addInstruction(S||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=t||await this.getClmmPoolKeys(e.id),V=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:L,ownerInfo:W(R({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(V),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:V.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,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===te.toBase58(),h=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});P&&(b=P),y.addInstruction(x||{}),(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),I=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(I),y.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:r,amountMaxB:o});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:o,otherAmountMax:s});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:r,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=r.useSOLBalance&&t.mintA.address===te.toString(),y=r.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(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,h&&d.addInstruction(h);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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,k&&d.addInstruction(k);let P=[];for(let S of t.rewardDefaultInfos){let L=r.useSOLBalance&&S.mint.address===te.toString(),V;if(S.mint.address===t.mintA.address)V=f;else if(S.mint.address===t.mintB.address)V=b;else{let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(S.mint.programId),mint:new ie(S.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:c});V=H,v&&d.addInstruction(v)}P.push(V)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:P},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[E.ClmmDecreasePosition]});let I=R({},B.address);if(r.closePosition){let S=await Ie.closePositionInstructions({poolInfo:t,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:S.instructions,endInstructionTypes:S.instructionTypes}),I=R(R({},I),S.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new _(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ie(n.mint.programId),mint:new ie(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.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:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new _(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ie(l.mint.programId),mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=R(R({},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:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(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:r,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Ie.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.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:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(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:r,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=R(R({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!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(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Ie.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:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=R(R({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,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===te.toBase58(),y=a.useSOLBalance&&e.mintB.address===te.toBase58(),f;!o||o.equals(new _(0))?f=t.toString()===e.mintA.address?Dt.add(new tt(1)):Wt.sub(new tt(1)):f=J.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let b;if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(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,k&&d.addInstruction(k)}let g;if(!g){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(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,k&&d.addInstruction(k)}(!b||!g)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let h=await this.getClmmPoolKeys(e.id);return d.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:h,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},inputMint:new ie(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?we(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(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===te.toString(),y=n.useSOLBalance&&d.mintB.address===te.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=A,k&&l.addInstruction(k)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:o});b=A,k&&l.addInstruction(k)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===te.toString(),P=c[A.mint.address];if(!P){let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});P=x,B&&l.addInstruction(B)}c[A.mint.address]=P,g.push(P)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let k=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new tt(0),amountMinA:new tt(0),amountMinB:new tt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(qn(e).publicKey);return t?na.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new tt(1))).map(s=>et(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=Gr.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(r=>new ie(r))),n={};for(let r=0;r<e.length;r++){let o=t[r];if(o===null)throw Error("fetch pool info error: "+String(e[r]));let s=Ur.decode(o.data),a=J.sqrtPriceX64ToPrice(s.sqrtPriceX64,s.mintDecimalsA,s.mintDecimalsB).toNumber();n[String(e[r])]=W(R({},s),{currentPrice:a})}return n}};import{PublicKey as U}from"@solana/web3.js";import{NATIVE_MINT as Yr,TOKEN_PROGRAM_ID as Ut,AccountLayout as tm}from"@solana/spl-token";var ql=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ul=Buffer.from("amm_config","utf8"),Gl=Buffer.from("pool","utf8"),Xl=Buffer.from("pool_lp_mint","utf8"),zl=Buffer.from("pool_vault","utf8"),Yl=Buffer.from("observation","utf8");function Hl(i){return ue([ql],i)}function jl(i,e){return ue([Ul,$l(e)],i)}function Ql(i,e,t,n){return ue([Gl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Zl(i,e){return ue([Xl,e.toBuffer()],i)}function da(i,e,t){return ue([zl,e.toBuffer(),t.toBuffer()],i)}function zr(i,e){return ue([Yl,e.toBuffer()],i)}function $l(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function pa({programId:i,mintA:e,mintB:t}){let n=jl(i,0).publicKey,r=Hl(i).publicKey,o=Ql(i,n,e,t).publicKey,s=Zl(i,o).publicKey,a=da(i,o,e).publicKey,u=da(i,o,t).publicKey,c=zr(i,o).publicKey;return{poolId:o,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oo,TOKEN_2022_PROGRAM_ID as fa,ASSOCIATED_TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";var em=oe("Raydium_cpmm"),Qn={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 ya(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=M([w("amountMaxA"),w("amountMaxB"),w("openTime")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!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:oo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Jl,isSigner:!1,isWritable:!1},{pubkey:ui,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],x=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},x),new jn({keys:P,programId:i,data:Buffer.from([...Qn.initialize,...x])})}function ba(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:oo,isSigner:!1,isWritable:!1},{pubkey:fa,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 em.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new jn({keys:b,programId:i,data:Buffer.from([...Qn.deposit,...g])})}function ga(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:oo,isSigner:!1,isWritable:!1},{pubkey:fa,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Mo,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new jn({keys:b,programId:i,data:Buffer.from([...Qn.withdraw,...g])})}function wa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new jn({keys:g,programId:i,data:Buffer.from([...Qn.swapBaseInput,...h])})}function Aa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new jn({keys:g,programId:i,data:Buffer.from([...Qn.swapBaseOutput,...h])})}import We from"bn.js";var ha=M([be(8),F("bump"),Ee("disableCreatePool"),bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),q(w(),16)]),Pa=M([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),F("bump"),F("status"),F("lpDecimals"),F("mintDecimalA"),F("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var Zn=class extends Pe{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 U(m))),r={},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=Pa.decode(d.data);r[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 U(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]]=ha.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(s.map(m=>new U(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 We(tm.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){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]=W(R({},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:r,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ae(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,Q;let d=r.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),p=new We(new U(c.mintA.address).toBuffer()).lte(new We(new U(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],h=r.useSOLBalance&&y.address===Yr.toBase58(),A=r.useSOLBalance&&f.address===Yr.toBase58(),[k,P]=[new U(y.address),new U(f.address)],x=this.createTxBuilder(),{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});x.addInstruction(I||{});let{account:S,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:new U(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(x.addInstruction(L||{}),B===void 0||S===void 0)throw Error("you don't has some token account");let V=pa({programId:e,mintA:k,mintB:P});return x.addInstruction({instructions:[ya(e,this.scope.ownerPubKey,V.configId,V.authority,V.poolId,k,P,V.lpMint,B,S,we(this.scope.ownerPubKey,V.lpMint).publicKey,V.vaultA,V.vaultB,t,new U((v=y.programId)!=null?v:Ut),new U((Q=f.programId)!=null?Q:Ut),V.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),x.addCustomComputeBudget(u),x.versionBuild({txVersion:a,extInfo:{address:W(R({},V),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:r,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}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=s?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(R({},t),{lpAmount:new _(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new Ue(0),baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new _(n.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===Yr.toString(),A=t.mintB.address===Yr.toString(),k=this.createTxBuilder(),[P,x]=[new U(t.mintA.address),new U(t.mintB.address)],{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(r?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:r?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(I||{});let{account:S,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(r?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:r?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(L||{}),!B&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let V=await l.getCreatedTokenAccount({mint:new U(t.lpMint.address)}),re=await l.handleTokenAccount({side:"out",amount:0,mint:new U(t.lpMint.address),tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:H}=re,v=Ae(re,["tokenAccount"]);k.addInstruction(v);let Q=await this.getCpmmPoolKeys(t.id),ee=new Ue(new We(1)).sub(o);return k.addInstruction({instructions:[ba(new U(t.programId),this.scope.ownerPubKey,new U(Q.authority),new U(t.id),H,B,S,new U(Q.vault.A),new U(Q.vault.B),P,x,new U(t.lpMint.address),s?s==null?void 0:s.liquidity:ee.mul(y).quotient,r?f.amount:g,r?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:Q.lookupTableAccount?[Q.lookupTableAccount]:[]}),k.addCustomComputeBudget(a),k.versionBuild({txVersion:c})}async withdrawLiquidity(e){var H,v;let{poolInfo:t,lpAmount:n,slippage:r,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new Ue(new We(1)).sub(r),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]=[ye(c,t.mintA.extensions.feeConfig,m,!0),ye(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new U(t.mintA.address),new U(t.mintB.address)],h=b.equals(te),A=g.equals(te),k,P,{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});k=x,B&&f.addInstruction(B);let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});P=I,S&&f.addInstruction(S),(!k||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let L=await y.getCreatedTokenAccount({mint:new U(t.lpMint.address)});L||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let V=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[ga(new U(t.programId),this.scope.ownerPubKey,new U(V.authority),new U(t.id),L,k,P,new U(V.vault.A),new U(V.vault.B),b,g,new U(t.lpMint.address),n,c.sub((H=d.fee)!=null?H:new We(0)),l.sub((v=p.fee)!=null?v:new We(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var P,x,S,L,V,H;let{poolInfo:t,baseIn:n,swapResult:r,slippage:o=0,config:s,computeBudgetConfig:a,txVersion:u}=e,{bypassAssociatedCheck:c,checkCreateATAOwner:l}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),m=this.createTxBuilder(),[d,p]=[new U(t.mintA.address),new U(t.mintB.address)],y=await this.scope.account.getCreatedTokenAccount({programId:new U((P=t.mintA.programId)!=null?P:Ut),mint:d,associatedOnly:!1}),f=await this.scope.account.getCreatedTokenAccount({programId:new U((x=t.mintB.programId)!=null?x:Ut),mint:p,associatedOnly:!1});r.destinationAmountSwapped=r.destinationAmountSwapped.mul(new We((1-o)*1e4)).div(new We(1e4));let B=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?r.sourceAmountSwapped:r.destinationAmountSwapped,programId:new U(t.mintA.programId),mint:d,tokenAccount:y,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:b}=B,g=Ae(B,["tokenAccount"]);m.addInstruction(g);let I=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?r.destinationAmountSwapped:r.sourceAmountSwapped,programId:new U(t.mintB.programId),mint:p,tokenAccount:f,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:h}=I,A=Ae(I,["tokenAccount"]);m.addInstruction(A),!b&&!h&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?wa(new U(t.programId),this.scope.ownerPubKey,new U(k.authority),new U(k.config.id),new U(t.id),b,h,new U(k.vault.A),new U(k.vault.B),new U((S=t.mintA.programId)!=null?S:Ut),new U((L=t.mintB.programId)!=null?L:Ut),d,p,zr(new U(t.programId),new U(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped):Aa(new U(t.programId),this.scope.ownerPubKey,new U(k.authority),new U(k.config.id),new U(t.id),h,b,new U(k.vault.B),new U(k.vault.A),new U((V=t.mintB.programId)!=null?V:Ut),new U((H=t.mintA.programId)!=null?H:Ut),p,d,zr(new U(t.programId),new U(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:u})}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:r,slippage:o,epochInfo:s,baseIn:a}){var h,A,k,P,x,B,I,S;let u=1-Number(o.toSignificant())/100,c=new We(new _(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=ye(c,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=c.sub((h=l.fee)!=null?h:new We(0)),d=new We(new _(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(k=(A=l.fee)==null?void 0:A.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${o.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:Ge,fee:void 0,expirationTime:void 0};if(!m.isZero()){let L=nm(y,t,n,d);this.logDebug("lpAmountData:",{amountA:L.amountA.toString(),amountB:L.amountB.toString()}),f=ye(L[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Ue(new We(1)).add(o),g=ye(b.mul(f.amount.sub((P=f.fee)!=null?P:new We(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(x=f.fee)==null?void 0:x.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(S=(I=g.fee)==null?void 0:I.toString())!=null?S:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function nm(i,e,t,n){let r=i.mul(e).div(n);!r.isZero()&&!i.mul(e).mod(n).isZero()&&(r=r.add(new We(1)));let o=i.mul(t).div(n);return!o.isZero()&&!i.mul(t).mod(n).isZero()&&(o=o.add(new We(1))),{amountA:r,amountB:o}}var $n=class extends Pe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((r,o)=>o.version-r.version),e[0].version!==e[1].version))return e[0];let n=e.filter(r=>r.version===e[0].version);return n.sort((r,o)=>this.comparePoolSize(r,o,t)),n[0]}static comparePoolSize(e,t,n){let r=n[e.id],o=n[t.id];return r===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?r.baseReserve.sub(o.baseReserve).gte(Ge)?-1:1:r.baseReserve.sub(o.quoteReserve).gte(Ge)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,r=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=Y(t);for(let u=0;u<r.length;u++)a.gte(r[u].amount)?(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(r[u].amount)):(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),On({destination:s.addresses.newAccount,source:r[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),r=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),n.length&&r.addInstruction({instructions:[On({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[It({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),r.build()}};import{TOKEN_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as im,Transaction as so,TransactionInstruction as om}from"@solana/web3.js";import ka from"bn.js";var qe=class extends Pe{static getPdaPoolId(e,t){return ue([qe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([qe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new ka(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>qe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<qe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>qe.getPdaOwnerId(t,m,r,l).publicKey));let u=await yt(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!==qe.POOL_LAYOUT.span||b.data.length!==qe.OWNER_LAYOUT.span)continue;let g=qe.POOL_LAYOUT.decode(f.data),h=qe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),P=h.tokenInfo.map(I=>I.debtAmount.gt(new ka(0))).filter(I=>!I).length!==3,x=o>A&&o<k&&g.status===1,B=P&&x;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:qe.VERSION_PROJECT[m],openTime:A,endTime:k,canClaim:B,canClaimErrorType:P?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((I,S)=>({mintAddress:I.mintAddress,mintVault:I.mintVault,mintDecimals:I.mintDecimals,perLpLoss:I.perLpLoss,debtAmount:h.tokenInfo[S].debtAmount.add(h.tokenInfo[S].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=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(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[qe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,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(),r=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(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[qe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return yi(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new so().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new so().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new so().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=M([]),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:rm,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new om({keys:o,programId:e,data:a})}},nt=qe;nt.CLAIMED_NUM=3,nt.POOL_LAYOUT=M([be(8),F("bump"),F("status"),w("openTime"),w("endTime"),K("ammId"),q(M([F("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),qe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),nt.OWNER_LAYOUT=M([be(8),F("bump"),F("version"),K("poolId"),K("owner"),w("lpAmount"),q(M([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),qe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),nt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new im(e)),nt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},nt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sa}from"@solana/spl-token";import er from"bn.js";import{TransactionInstruction as am,SYSVAR_RENT_PUBKEY as um}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ta}from"@solana/spl-token";import{createInitializeAccountInstruction as Ia}from"@solana/spl-token";import{SystemProgram as en,Transaction as xa}from"@solana/web3.js";function sm(i="accountFlags"){let e=new Rr(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ao=M([be(5),sm("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function cm({programId:i,marketInfo:e}){let t=M([F("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:um,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}:[]),r=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},r),new am({keys:n,programId:i,data:r})}async function Ba({connection:i,wallet:e,marketInfo:t}){let n=new xa,r=await i.getMinimumBalanceForRentExemption(165);n.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:Ta}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:Ta}),Ia(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Ia(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new xa;return o.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(ao.span),space:ao.span,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),cm({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 pn=class extends Pe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ve({fromPublicKey:u,programId:o}),l=Ve({fromPublicKey:u,programId:o}),m=Ve({fromPublicKey:u,programId:o}),d=Ve({fromPublicKey:u,programId:o}),p=Ve({fromPublicKey:u,programId:o}),y=Ve({fromPublicKey:u,programId:Sa}),f=Ve({fromPublicKey:u,programId:Sa}),b=0,g=new er(100);function h(){let S=new er(0);for(;;)try{return{vaultOwner:Jn.createProgramAddressSync([c.publicKey.toBuffer(),S.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:S}}catch{if(S.iaddn(1),S.gt(new er(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),P=new er(Math.round(10**e.decimals*n)),x=new er(Math.round(n*10**t.decimals*r));if(P.eq(Ge))throw Error("lot size is too small");if(x.eq(Ge))throw Error("tick size or lot size is too small");let B=await Ba({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:k,baseLotSize:P,quoteLotSize:x}}),I=this.createTxBuilder();I.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let S of B.slice(1,B.length))I.addInstruction({instructions:S.transaction.instructions,signers:S.signer,instructionTypes:S.instructionTypes});return s===0?I.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 Jn(e.mint),quoteMin:new Jn(t.mint)}}):I.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 Jn(e.mint),quoteMin:new Jn(t.mint)}})}};import{PublicKey as nr}from"@solana/web3.js";import{TransactionInstruction as Ka,SYSVAR_CLOCK_PUBKEY as mm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ca}from"@solana/spl-token";var lm=M([F("instruction"),ns("amount")]),tr=M([F("instruction")]);function Hr({programId:i},e){let t=[{pubkey:Ca,isSigner:!1,isWritable:!1},{pubkey:_o,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,o])=>({pubkey:o,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(tr.span);return tr.encode({instruction:2},n),new Ka({keys:t,programId:i,data:n})}function uo(i){let{poolConfig:e,userKeys:t,side:n}=i,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(tr.span);tr.encode({instruction:2},s);let a=[{pubkey:Ca,isWritable:!1,isSigner:!1},{pubkey:mm,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:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ka({programId:e.programId,keys:a,data:s})}import Ra from"bn.js";var dm={[Cn.IDO_PROGRAM_ID_V1.toString()]:1,[Cn.IDO_PROGRAM_ID_V2.toString()]:2,[Cn.IDO_PROGRAM_ID_V3.toString()]:3,[Cn.IDO_PROGRAM_ID_V4.toString()]:4},fn=class extends Pe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:o}){let s=this.createTxBuilder(),a=dm[t.programId];a||this.logAndCreateError("invalid version",a);let u=Xe(t),[c,l]=[!new Ra(e.coin).isZero(),!new Ra(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{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:r});!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(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});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?[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new nr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Hr({programId:new nr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new nr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new nr(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 nr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[uo(W(R({},g),{side:"base"}))]:[],...l?[uo(W(R({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as pm}from"@solana/web3.js";import{MintLayout as fm,TOKEN_2022_PROGRAM_ID as co,TOKEN_PROGRAM_ID as lo}from"@solana/spl-token";var rr=class extends Pe{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:r="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,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(Mt.address,Mt),this._mintGroup.official.add(Mt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,W(R({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?co.toBase58():lo.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,W(R({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?co.toBase58():lo.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,W(R({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?co.toBase58():lo.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(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Mt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(R({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new pm(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=fm.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 jr=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new at(r):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=oe("Raydium"),this.farm=new Fn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Nn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Yn({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new rr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new $n({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Hn({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Zn({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new nt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new fn({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=ym({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Sr({cluster:n,timeout:r,urlConfigs:a,logCount:o,logRequests:s}),c=new jr(W(R({},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(Kr);return this._owner.publicKey}setOwner(e){return this._owner=e?new at(e):void 0,this}get connection(){if(!this._connection)throw new Error(Jo);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(Kr),new Error(Kr)}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 r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(R({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),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{}}}};export{jr as Raydium};
|
|
1
|
+
var Va=Object.defineProperty,Fa=Object.defineProperties;var va=Object.getOwnPropertyDescriptors;var cr=Object.getOwnPropertySymbols;var wo=Object.prototype.hasOwnProperty,Ao=Object.prototype.propertyIsEnumerable;var go=(i,e,t)=>e in i?Va(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,R=(i,e)=>{for(var t in e||(e={}))wo.call(e,t)&&go(i,t,e[t]);if(cr)for(var t of cr(e))Ao.call(e,t)&&go(i,t,e[t]);return i},W=(i,e)=>Fa(i,va(e));var Ae=(i,e)=>{var t={};for(var n in i)wo.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&cr)for(var n of cr(i))e.indexOf(n)<0&&Ao.call(i,n)&&(t[n]=i[n]);return t};import{merge as hm}from"lodash";import rs from"axios";import{get as ho,set as Da}from"lodash";import ko from"dayjs";import Wa from"dayjs/plugin/utc";ko.extend(Wa);var ni=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 ko().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}},Po={},qa={};function oe(i){let e=ho(Po,i);if(!e){let t=ho(qa,i);e=new ni({name:i,logLevel:t}),Da(Po,i,e)}return e}import{PublicKey as $u}from"@solana/web3.js";import Ju from"bn.js";import ju from"big.js";import kr from"bn.js";import je from"bn.js";var rn=9e15,Nt=1e9,ri="0123456789abcdef",mr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",dr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ii={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-rn,maxE:rn,crypto:!1},Bo,Tt,J=!0,fr="[DecimalError] ",Ot=fr+"Invalid argument: ",So=fr+"Precision limit exceeded",Ko=fr+"crypto unavailable",Co="[object Decimal]",Ee=Math.floor,Se=Math.pow,Ua=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ga=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Xa=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Lo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,st=1e7,j=7,za=9007199254740991,Ya=mr.length-1,oi=dr.length-1,C={toStringTag:Co};C.absoluteValue=C.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),X(i)};C.ceil=function(){return X(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Ot+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};C.comparedTo=C.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};C.cosine=C.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+j,n.rounding=1,t=Ha(n,_o(n,t)),n.precision=i,n.rounding=e,X(Tt==2||Tt==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Se(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Re(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Se(t,1/3),i=Ee((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=pe(c.plus(l).times(a),c.plus(u),s+2,1),Re(a.d).slice(0,s)===(t=Re(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(X(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,i,m.rounding,e)};C.decimalPlaces=C.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Ee(this.e/j))*j,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(i){return pe(this,new this.constructor(i))};C.dividedToIntegerBy=C.divToInt=function(i){var e=this,t=e.constructor;return X(pe(e,new t(i),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(i){return this.cmp(i)===0};C.floor=function(){return X(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(i){return this.cmp(i)>0};C.greaterThanOrEqualTo=C.gte=function(i){var e=this.cmp(i);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/br(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=on(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=on(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/br(5,i)),r=on(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(r,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,pe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?ot(t,r,o):new t(0):new t(NaN):e.isZero()?ot(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=ot(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=i,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?X(new o(r),i,e,!0):(o.precision=t=n-r.e,r=pe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=ot(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};C.inverseTangent=C.atan=function(){var i,e,t,n,r,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<=oi)return s=ot(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=oi)return s=ot(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/j+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/j),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),J=!0,X(s,l.precision=m,l.rounding=d,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&Ee(this.e/j)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(i){return this.cmp(i)<0};C.lessThanOrEqualTo=C.lte=function(i){return this.cmp(i)<1};C.logarithm=C.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(J=!1,a=m+p,s=Rt(c,a),n=e?pr(l,a+10):Rt(i,a),u=pe(s,n,a,1),wn(u.d,r=m,d))do if(a+=10,s=Rt(c,a),n=e?pr(l,a+10):Rt(i,a),u=pe(s,n,a,1),!o){+Re(u.d).slice(r+1,r+15)+1==1e14&&(u=X(u,m+1,0));break}while(wn(u.d,r+=10,d));return J=!0,X(u,m,d)};C.minus=C.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return J?X(i,a,u):i}if(t=Ee(i.e/j),l=Ee(p.e/j),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/j),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,i.s=-i.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(r=n;r&&c[--r]===0;)c[r]=st-1;--c[r],c[n]+=st}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=yr(c,t),J?X(i,a,u):i):new y(u===3?-0:0)};C.modulo=C.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=pe(t,i.abs(),0,3,1),e.s*=i.s):e=pe(t,i,0,n.modulo,1),e=e.times(i),J=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return si(this)};C.naturalLogarithm=C.ln=function(){return Rt(this)};C.negated=C.neg=function(){var i=new this.constructor(this);return i.s=-i.s,X(i)};C.plus=C.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),J?X(i,a,u):i;if(o=Ee(m.e/j),n=Ee(i.e/j),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/j),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/st|0,c[r]%=st;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=yr(c,n),J?X(i,a,u):i};C.precision=C.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Ot+i);return t.d?(e=Ro(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var i=this,e=i.constructor;return X(new e(i),i.e+1,e.rounding)};C.sine=C.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+j,n.rounding=1,t=Qa(n,_o(n,t)),n.precision=i,n.rounding=e,X(Tt>2?t.neg():t,i,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Re(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ee((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(pe(s,o,t+2,1)).times(.5),Re(o.d).slice(0,t)===(e=Re(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),i=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,i)};C.tangent=C.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=pe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,X(Tt==2||Tt==4?t.neg():t,i,e,!0)):new n(NaN)};C.times=C.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=Ee(l.e/j)+Ee(i.e/j),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,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%st|0,e=a/st|0;o[r]=(o[r]+e)%st|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=yr(o,t),J?X(i,m.precision,m.rounding):i};C.toBinary=function(i,e){return ui(this,2,i,e)};C.toDecimalPlaces=C.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(He(i,0,Nt),e===void 0?e=n.rounding:He(e,0,8),X(t,i+t.e+1,e))};C.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=yt(n,!0):(He(i,0,Nt),e===void 0?e=r.rounding:He(e,0,8),n=X(new r(n),i+1,e),t=yt(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=yt(r):(He(i,0,Nt),e===void 0?e=o.rounding:He(e,0,8),n=X(new o(r),i+r.e+1,e),t=yt(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};C.toFraction=function(i){var e,t,n,r,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=Ro(y)-p.e-1,s=o%j,e.d[0]=Se(10,s<0?j+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(Ot+a);i=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Re(y)),l=f.precision,f.precision=o=y.length*j*2;m=pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=pe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=pe(c,n,o,1).minus(p).abs().cmp(pe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,d};C.toHexadecimal=C.toHex=function(i,e){return ui(this,16,i,e)};C.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:He(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(J=!1,t=pe(t,i,0,e,1).times(i),J=!0,X(t)):(i.s=t.s,t=i),t};C.toNumber=function(){return+this};C.toOctal=function(i,e){return ui(this,8,i,e)};C.toPower=C.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(Se(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return X(a,n,o);if(e=Ee(i.e/j),e>=i.d.length-1&&(t=c<0?-c:c)<=za)return r=Oo(u,a,t,n),i.s<0?new u(1).div(r):X(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Se(+a,c),e=t==0||!isFinite(t)?Ee(c*(Math.log("0."+Re(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=si(i.times(Rt(a,n+t)),n),r.d&&(r=X(r,n+5,1),wn(r.d,n,o)&&(e=n+10,r=X(si(i.times(Rt(a,e+t)),e),e+5,1),+Re(r.d).slice(n+1,n+15)+1==1e14&&(r=X(r,n+1,0)))),r.s=s,J=!0,u.rounding=o,X(r,n,o))};C.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=yt(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(He(i,1,Nt),e===void 0?e=r.rounding:He(e,0,8),n=X(new r(n),i,e),t=yt(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(He(i,1,Nt),e===void 0?e=n.rounding:He(e,0,8)),X(new n(t),i,e)};C.toString=function(){var i=this,e=i.constructor,t=yt(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return X(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var i=this,e=i.constructor,t=yt(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Re(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=j-n.length,t&&(o+=Lt(t)),o+=n;s=i[e],n=s+"",t=j-n.length,t&&(o+=Lt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function He(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Ot+i)}function wn(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=j,r=0):(r=Math.ceil((e+1)/j),e%=j),o=Se(10,j-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Se(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Se(10,e-3)-1,s}function lr(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=ri.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Ha(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/br(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=on(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var pe=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,k,P,x,S,I,B,L,V,H,D=n.constructor,Q=n.s==r.s?1:-1,re=n.d,Z=r.d;if(!re||!re[0]||!Z||!Z[0])return new D(!n.s||!r.s||(re?Z&&re[0]==Z[0]:!Z)?NaN:re&&re[0]==0||!Z?Q*0:Q/0);for(u?(p=1,l=n.e-r.e):(u=st,p=j,l=Ee(n.e/p)-Ee(r.e/p)),V=Z.length,B=re.length,g=new D(Q),h=g.d=[],m=0;Z[m]==(re[m]||0);m++);if(Z[m]>(re[m]||0)&&l--,o==null?(x=o=D.precision,s=D.rounding):a?x=o+(n.e-r.e)+1:x=o,x<0)h.push(1),y=!0;else{if(x=x/p+2|0,m=0,V==1){for(d=0,Z=Z[0],x++;(m<B||d)&&x--;m++)S=d*u+(re[m]||0),h[m]=S/Z|0,d=S%Z|0;y=d||m<B}else{for(d=u/(Z[0]+1)|0,d>1&&(Z=i(Z,d,u),re=i(re,d,u),V=Z.length,B=re.length),I=V,A=re.slice(0,V),k=A.length;k<V;)A[k++]=0;H=Z.slice(),H.unshift(0),L=Z[0],Z[1]>=u/2&&++L;do d=0,c=e(Z,A,V,k),c<0?(P=A[0],V!=k&&(P=P*u+(A[1]||0)),d=P/L|0,d>1?(d>=u&&(d=u-1),f=i(Z,d,u),b=f.length,k=A.length,c=e(f,A,b,k),c==1&&(d--,t(f,V<b?H:Z,b,u))):(d==0&&(c=d=1),f=Z.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(Z,A,V,k),c<1&&(d++,t(A,V<k?H:Z,k,u))),k=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[k++]=re[I]||0:(A=[re[I]],k=1);while((I++<B||A[0]!==void 0)&&x--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,Bo=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=j,s=e,l=m[d=0],u=l/Se(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/j),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=j,s=o-j+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=j,s=o-j+r,u=s<0?0:l/Se(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Se(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Se(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Se(10,(j-e%j)%j),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Se(10,j-o),m[d]=s>0?(l/Se(10,r-s)%Se(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&&(i.e++,m[0]==st&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=st)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function yt(i,e,t){if(!i.isFinite())return Mo(i);var n,r=i.e,o=Re(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Lt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Lt(-r-1)+o,t&&(n=t-s)>0&&(o+=Lt(n))):r>=s?(o+=Lt(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Lt(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Lt(n))),o}function yr(i,e){var t=i[0];for(e*=j;t>=10;t/=10)e++;return e}function pr(i,e,t){if(e>Ya)throw J=!0,t&&(i.precision=t),Error(So);return X(new i(mr),e,1,!0)}function ot(i,e,t){if(e>oi)throw Error(So);return X(new i(dr),e,t,!0)}function Ro(i){var e=i.length-1,t=e*j+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Lt(i){for(var e="";i--;)e+="0";return e}function Oo(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/j+4);for(J=!1;;){if(t%2&&(o=o.times(e),Io(o.d,s)&&(r=!0)),t=Ee(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Io(e.d,s)}return J=!0,o}function To(i){return i.d[i.d.length-1]&1}function No(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function si(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(J=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Se(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=X(o.times(i),u,1),t=t.times(++l),a=s.plus(pe(o,t,u,1)),Re(a.d).slice(0,u)===Re(s.d).slice(0,u)){for(r=m;r--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&wn(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return X(s,d.precision=y,p,J=!0);else return d.precision=y,s}s=a}}function Rt(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,b=f.d,g=f.constructor,h=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Re(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(i),t=Re(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=pr(g,l+2,A).times(o+""),f=Rt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,h,J=!0):f;for(m=f,u=s=f=pe(f.minus(1),f.plus(1),l,1),d=X(f.times(f),l,1),r=3;;){if(s=X(s.times(d),l,1),c=u.plus(pe(s,new g(r),l,1)),Re(c.d).slice(0,l)===Re(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(pr(g,l+2,A).times(o+""))),u=pe(u,new g(p),l,1),e==null)if(wn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=pe(m.minus(1),m.plus(1),l,1),d=X(f.times(f),l,1),r=a=1;else return X(u,g.precision=A,h,J=!0);else return g.precision=A,u;u=c,r+=2}}function Mo(i){return String(i.s*i.s/0)}function ai(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%j,t<0&&(n+=j),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=j;n<r;)i.d.push(+e.slice(n,n+=j));e=e.slice(n),n=j-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),J&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function ja(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Lo.test(e))return ai(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Ga.test(e))t=16,e=e.toLowerCase();else if(Ua.test(e))t=2;else if(Xa.test(e))t=8;else throw Error(Ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Oo(n,new n(t),o,o*2)),c=lr(e,t,st),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=yr(c,l),i.d=c,J=!1,s&&(i=pe(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?Se(2,u):An.pow(2,u))),J=!0,i)}function Qa(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:on(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/br(5,t)),e=on(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function on(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/j);for(J=!1,u=t.times(t),a=new i(n);;){if(s=pe(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=pe(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function br(i,e){for(var t=i;--e;)t*=i;return t}function _o(i,e){var t,n=e.s<0,r=ot(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Tt=n?4:1,e;if(t=e.divToInt(r),t.isZero())Tt=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Tt=To(t)?n?2:3:n?4:1,e;Tt=To(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ui(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(He(t,1,Nt),n===void 0?n=p.rounding:He(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Mo(i);else{for(l=yt(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=lr(yt(d),10,r),d.e=d.d.length),m=lr(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=pe(i,d,t,n,0,r),m=i.d,o=i.e,c=Bo),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=ri.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=lr(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=ri.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Io(i,e){if(i.length>e)return i.length=e,!0}function Za(i){return new this(i).abs()}function $a(i){return new this(i).acos()}function Ja(i){return new this(i).acosh()}function eu(i,e){return new this(i).plus(e)}function tu(i){return new this(i).asin()}function nu(i){return new this(i).asinh()}function ru(i){return new this(i).atan()}function iu(i){return new this(i).atanh()}function ou(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=ot(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?ot(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=ot(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(pe(i,e,o,1)),e=ot(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(pe(i,e,o,1)),t}function su(i){return new this(i).cbrt()}function au(i){return X(i=new this(i),i.e+1,2)}function uu(i,e,t){return new this(i).clamp(e,t)}function cu(i){if(!i||typeof i!="object")throw Error(fr+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Nt,"rounding",0,8,"toExpNeg",-rn,0,"toExpPos",0,rn,"maxE",0,rn,"minE",-rn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=ii[t]),(n=i[t])!==void 0)if(Ee(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ot+t+": "+n);if(t="crypto",r&&(this[t]=ii[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Ko);else this[t]=!1;else throw Error(Ot+t+": "+n);return this}function lu(i){return new this(i).cos()}function mu(i){return new this(i).cosh()}function Eo(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,xo(o)){c.s=o.s,J?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ai(c,o.toString())}else if(u!=="string")throw Error(Ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Lo.test(o)?ai(c,o):ja(c,o)}if(r.prototype=C,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=cu,r.clone=Eo,r.isDecimal=xo,r.abs=Za,r.acos=$a,r.acosh=Ja,r.add=eu,r.asin=tu,r.asinh=nu,r.atan=ru,r.atanh=iu,r.atan2=ou,r.cbrt=su,r.ceil=au,r.clamp=uu,r.cos=lu,r.cosh=mu,r.div=du,r.exp=pu,r.floor=fu,r.hypot=yu,r.ln=bu,r.log=gu,r.log10=Au,r.log2=wu,r.max=hu,r.min=Pu,r.mod=ku,r.mul=Tu,r.pow=Iu,r.random=xu,r.round=Bu,r.sign=Su,r.sin=Ku,r.sinh=Cu,r.sqrt=Lu,r.sub=Ru,r.sum=Ou,r.tan=Nu,r.tanh=Mu,r.trunc=_u,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function du(i,e){return new this(i).div(e)}function pu(i){return new this(i).exp()}function fu(i){return X(i=new this(i),i.e+1,3)}function yu(){var i,e,t=new this(0);for(J=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function xo(i){return i instanceof An||i&&i.toStringTag===Co||!1}function bu(i){return new this(i).ln()}function gu(i,e){return new this(i).log(e)}function wu(i){return new this(i).log(2)}function Au(i){return new this(i).log(10)}function hu(){return No(this,arguments,"lt")}function Pu(){return No(this,arguments,"gt")}function ku(i,e){return new this(i).mod(e)}function Tu(i,e){return new this(i).mul(e)}function Iu(i,e){return new this(i).pow(e)}function xu(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:He(i,1,Nt),n=Math.ceil(i/j),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(Ko);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=j,n&&i&&(r=Se(10,j-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=j)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<j&&(t-=j-n)}return s.e=t,s.d=a,s}function Bu(i){return X(i=new this(i),i.e+1,this.rounding)}function Su(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Ku(i){return new this(i).sin()}function Cu(i){return new this(i).sinh()}function Lu(i){return new this(i).sqrt()}function Ru(i,e){return new this(i).sub(e)}function Ou(){var i=0,e=arguments,t=new this(e[i]);for(J=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return J=!0,X(t,this.precision,this.rounding)}function Nu(i){return new this(i).tan()}function Mu(i){return new this(i).tanh()}function _u(i){return X(i=new this(i),i.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var An=C.constructor=Eo(ii);mr=new An(mr);dr=new An(dr);var _=An;import{PublicKey as pi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as Vo,SYSVAR_RENT_PUBKEY as Vu}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var ci=[T({pubkey:Eu,isWritable:!1}),T({pubkey:Vo.programId,isWritable:!1}),T({pubkey:Vu,isWritable:!1})];function li({publicKey:i,transformSol:e}){let t=mi(i.toString());if(t instanceof ge)return e&&t.equals(Ke)?te:t;if(e&&t.toString()===Ke.toBase58())return te;if(typeof t=="string"){if(t===ge.default.toBase58())return ge.default;try{return new ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mi(i){try{return new ge(i)}catch{return i}}var gr=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Fo=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new ge("SysvarRent111111111111111111111111111111111"),vo=new ge("SysvarC1ock11111111111111111111111111111111"),sn=new ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fu=new ge("Sysvar1nstructions1111111111111111111111111"),di=Vo.programId,Lm=new ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Rm=new ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Om=new ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Nm=new ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Mm=new ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_m=new ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Em=new ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vm=new ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Fm=new ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),vm=new ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Dm=new ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ge("So11111111111111111111111111111111111111112"),Ke=ge.default;function an(i){return li({publicKey:i,transformSol:!0})}import{PublicKey as vu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Do}from"@solana/spl-token";var Mt={chainId:101,address:vu.default.toBase58(),programId:Do.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Oe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Do.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 fi=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Ke.toBase58()||e instanceof pi&&Ke.equals(e)){this.decimals=Oe.decimals,this.symbol=Oe.symbol,this.name=Oe.name,this.mint=new pi(Oe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?pi.default:li({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=fi;he.WSOL=new fi(W(R({},Oe),{mint:Oe.address}));import Ar from"big.js";import qu from"bn.js";import Uu from"decimal.js-light";import Du from"toformat";var Wu=Du,hn=Wu;var wr=oe("module/fraction"),yi=hn(Ar),Pn=hn(Uu),Gu={[0]:Pn.ROUND_DOWN,[1]:Pn.ROUND_HALF_UP,[2]:Pn.ROUND_UP},Xu={[0]:Ar.roundDown,[1]:Ar.roundHalfUp,[2]:Ar.roundUp},me=class{constructor(e,t=new qu(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||wr.logWithError(`${e} is not an integer.`),e<=0&&wr.logWithError(`${e} is not positive.`),Pn.set({precision:e+1,rounding:Gu[n]});let r=new Pn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||wr.logWithError(`${e} is not an integer.`),e<0&&wr.logWithError(`${e} is negative.`),yi.DP=e,yi.RM=Xu[n]||1,new yi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Yu=oe("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new me(bi(n.decimals),bi(r.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Yu.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},hr=gi;hr.SOL=new gi(Mt);import Hu from"bn.js";var Wo=new me(new Hu(100)),Ue=class extends me{toSignificant(e=5,t,n){return this.mul(Wo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Wo).toFixed(e,t,n)}};var Ge=new je(0),Uo=new je(1),Ed=new je(2),Vd=new je(3),Fd=new je(5),wi=new je(10),vd=new je(100),Dd=new je(1e3),Wd=new je(1e4),qo=9007199254740991;function Y(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof je)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new je(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=qo||i<=-qo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new je(String(i))):typeof i=="bigint"?new je(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new je(0))}function bi(i){return wi.pow(Y(i))}function Pr(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Qu=oe("Raydium_amount"),Xo=hn(ju);function Zu(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Qu.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends me{constructor(t,n,r=!0,o){let s=new kr(0),a=wi.pow(new kr(t.decimals));if(r)s=Y(n);else{let u=new kr(0),c=new kr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Zu(n.toString(),t.decimals);u=Y(l),c=Y(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=oe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Xo.DP=this.token.decimals,new Xo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Go(i){return typeof i=="object"&&i!==null&&![he,ke,$u,me,Ju,Je,Ue].some(e=>typeof e=="object"&&i instanceof e)}function Xe(i){return typeof i=="string"?mi(i):Array.isArray(i)?i.map(e=>Xe(e)):Go(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Xe(t)])):i}import{PublicKey as In,sendAndConfirmTransaction as xn,Transaction as Bn,TransactionMessage as Sn,VersionedTransaction as Kn}from"@solana/web3.js";import oc from"axios";var 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 ec,ComputeBudgetProgram as zo,Transaction as Ho,TransactionMessage as tc,Keypair as jo,VersionedTransaction as Qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as nc}from"@solana/spl-token";var Yo=oe("Raydium_txUtil"),Zo=1644;function Tr(i){let e=[],t=[];return i.microLamports&&(e.push(zo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(E.SetComputeUnitPrice)),i.units&&(e.push(zo.setComputeUnitLimit({units:i.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function un(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function Ai(i,e){i.length<1&&Yo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Yo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ho;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Zo}catch{return!1}}function ue(i,e){let[t,n]=ec.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function kn({instructions:i,payer:e,signers:t}){return Ai(i,[e,...t])}function Tn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=jo.generate().publicKey.toString()}){let o=new tc({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Qo(o).serialize()).toString("base64").length<Zo}catch{return!1}}var rc=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function Gt(i){let e=[];return i.forEach(t=>{t instanceof Ho&&(t.recentBlockhash||(t.recentBlockhash=nc.toBase58()),t.feePayer||(t.feePayer=jo.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Qo&&(n=rc(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as $o,AddressLookupTableAccount as xr}from"@solana/web3.js";import{PublicKey as ic}from"@solana/web3.js";import{getTransferFeeConfig as Kp,unpackMint as Cp}from"@solana/spl-token";var hi=oe("Raydium_accountInfo_util");async function bt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=R({batchRequest:!1},t),o=Pi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Pi(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&hi.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"&&hi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new ic(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&hi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ir(i,e,t){let n=await bt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>W(R({},r),{accountInfo:n[o]}))}async function ki({connection:i,address:e}){let t=await bt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new $o(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new xr({key:s,state:xr.deserialize(o.data)});n[s.toString()]=a,Br[s.toString()]=a}return n}var Br={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new xr({key:new $o("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:xr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Sr=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 oc.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}=Tr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==In.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(R({},t||{})):this.build(t)}build(e){let t=new Bn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await un(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),Gt([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:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...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 un(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let h=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(h)}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(h=>h.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((h,A)=>(h.recentBlockhash=y,a[A].length&&h.sign(...a[A]),h));Gt(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:P,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(P,x=>{let S=A.findIndex(I=>I.txId===P);S>-1&&(A[S].status=x.err?"error":"success"),m==null||m([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});h.push(k)}return{txIds:h,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:r}=d,o=Ae(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=R(R({},this.cluster==="devnet"?{}:Br),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new In(p));let c=await ki({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Sn({payerKey:this.feePayer,recentBlockhash:r?In.default.toBase58():await un(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Kn(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),Gt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,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:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...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),Gt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();if(s.forEach((g,h)=>{a[h].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),l){let g=[];for(let h of s){let A=await this.connection.sendTransaction(h,{skipPreflight:p}),{lastValidBlockHeight:k,blockhash:P}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:k,signature:A},"confirmed"),g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let h=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],h=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,k=>{let P=g.findIndex(x=>x.txId===A);P>-1&&(g[P].status=k.err?"error":"success"),m==null||m([...g]),k.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push(h)}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=Ae(c,["computeBudgetConfig"]),r=t?Tr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(R({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.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 In(f));if(u.length<12&&kn({instructions:d,payer:this.feePayer,signers:y})||kn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");kn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Bn().add(...r.instructions,...u)):s.push(new Bn().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);kn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Bn().add(...r.instructions,...u)):s.push(new Bn().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 un(this.connection);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),Gt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await xn(this.connection,h,this.signers.find(k=>k.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,h)=>await xn(this.connection,g,a[h].find(A=>A.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:P,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(P,x=>{let S=A.findIndex(I=>I.txId===P);S>-1&&(A[S].status=x.err?"error":"success"),d==null||d([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});h.push(k)}return{txIds:h,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:r=[]}=b,o=Ae(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=R(R({},this.cluster==="devnet"?{}:Br),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let g of a)s[g]===void 0&&u.push(new In(g));let c=await ki({connection:this.connection,address:u});for(let[g,h]of Object.entries(c))s[g]=h;let l=t?Tr(t):{instructions:[],instructionTypes:[]},m=await un(this.connection),d=this.signers.reduce((g,h)=>W(R({},g),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let h=[...f,g],A=t?[...l.instructions,...h]:h;if(f.length<12&&Tn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Tn({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let k={};for(let P of[...new Set(a)])s[P]!==void 0&&(k[P]=s[P]);if(t&&Tn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let P=new Sn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Kn(P))}else{let P=new Sn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Kn(P))}y.push(Array.from(new Set(f.map(P=>P.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==void 0)),f=[g]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Tn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Sn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Kn(A))}else{let A=new Sn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Kn(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var x;let{sequentially:h,onTxUpdate:A,recentBlockHash:k,skipPreflight:P=!0}=g||{};if(p.map(async(S,I)=>{y[I].length&&S.sign(y[I]),k&&(S.message.recentBlockhash=k)}),Gt(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:S,blockhash:I}=await this.connection.getLatestBlockhash();if(p.forEach((B,L)=>{y[L].find(V=>V.publicKey.equals(this.owner.publicKey))||B.sign([this.owner.signer])}),h){let B=[];for(let L of p){let V=await this.connection.sendTransaction(L,{skipPreflight:P}),{lastValidBlockHeight:H,blockhash:D}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:D,lastValidBlockHeight:H,signature:V},"confirmed"),B.push(V)}return{txIds:B,signedTxs:p}}return{txIds:await Promise.all(p.map(async B=>{let L=await this.connection.sendTransaction(B,{skipPreflight:P});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:S,signature:L},"confirmed"),L})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(h){let I=0,B=[],L=async()=>{if(!S[I])return;let V=await this.connection.sendTransaction(S[I],{skipPreflight:P});B.push({txId:V,status:"sent",signedTx:S[I]}),A==null||A([...B]),I++,this.connection.onSignature(V,H=>{let D=B.findIndex(Q=>Q.txId===V);D>-1&&(B[D].status=H.err?"error":"success"),A==null||A([...B]),H.err||L()},"processed"),this.connection.getSignatureStatus(V)};return L(),{txIds:[],signedTxs:S}}else{let I=[];for(let B=0;B<S.length;B+=1){let L=await this.connection.sendTransaction(S[B],{skipPreflight:P});I.push(L)}return{txIds:I,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var ut=class{constructor(e){this._owner=e}get publicKey(){return ut.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return ut.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return ut.isKeyPair(this._owner)}get isPublicKey(){return ut.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!ut.isKeyPair(e)}};function Pi(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ce}from"@solana/web3.js";var Jo=new ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),es=new ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Cn=new ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Zp=new ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),$p=new ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Jp=new ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ts=new ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ef=new ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),tf=new ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),nf=new ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),rf=new ce("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),sc=new ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ac=new ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),uc=new ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),cc=new ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),of=new ce("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),sf=new ce("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),af=new ce("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),lc=new ce("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),mc=new ce("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),dc=new ce("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Ln={IDO_PROGRAM_ID_V1:sc,IDO_PROGRAM_ID_V2:ac,IDO_PROGRAM_ID_V3:uc,IDO_PROGRAM_ID_V4:cc};var uf={SERUM_MARKET:ce.default,OPENBOOK_MARKET:new ce("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ce.default,FarmV3:new ce("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ce("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ce("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ce("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ce("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ce("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ce("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:lc,CREATE_CPMM_POOL_AUTH:mc,CREATE_CPMM_POOL_FEE_ACC:dc,FEE_DESTINATION_ID:new ce("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as pc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fc}from"@solana/spl-token";function we(i,e,t){return ue([i.toBuffer(),(t!=null?t:fc).toBuffer(),e.toBuffer()],new pc("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ct from"bn.js";var Rn=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=W(R({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new ct(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Rn){let u=new ct(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=On(i.mul(new ct(Rn)),new ct(Rn-o.transferFeeBasisPoints)),c=new ct(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=On(l.mul(new ct(o.transferFeeBasisPoints)),new ct(Rn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=On(i.mul(new ct(o.transferFeeBasisPoints)),new ct(Rn)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Xt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function On(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ct(0))?t.add(new ct(1)):t}var Ne={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"},Mf=R({},Ne);var ns="ray_tab_hash",Ti="ray_req_hash",yc=()=>{if(typeof window===void 0)return"";let i=sessionStorage.getItem(ns);return i||(i=`ray-${Date.now()}`,sessionStorage.setItem(ns,i)),i},Cr=async n=>{var r=n,{logCount:i=1e3,removeLastLog:e}=r,t=Ae(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ti)||"[]").slice(0,i-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(R({},t),{time:Date.now(),session:yc()}));try{localStorage.setItem(Ti,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(Ti,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Cr(W(R({},t),{logCount:i,removeLastLog:!0}))}};var Lr=oe("Raydium_Api"),Ii=new Map;var Rr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=r||1e3,this.api=rs.create({baseURL:this.urlConfigs.BASE_HOST||Ne.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Lr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Lr.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&&Cr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Lr.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&&Cr({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Lr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ne.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ne.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await rs.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(r=>r.numSlots);return n.reduce((r,o)=>r+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ne.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ne.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ne.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ne.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ne.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ne.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ne.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>Ii.has(s)?(n.push(Ii.get(s)),!1):!0),o=[];return r.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ne.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Ii.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&an(t).toBase58(),n&&n!=="undefined"?an(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ne.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&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||Ne.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ne.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ne.CHECK_AVAILABILITY)).data}};var Or="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",is="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as _i,TOKEN_PROGRAM_ID as Vt,AccountLayout as mn,TOKEN_2022_PROGRAM_ID as Xc}from"@solana/spl-token";import{PublicKey as Dr,SystemProgram as zc}from"@solana/web3.js";var xi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new Sr({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(xi(e))}logInfo(...e){this.logger.info(xi(e))}logAndCreateError(...e){let t=xi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as vc,createCloseAccountInstruction as Dc,createTransferInstruction as Wc,TOKEN_PROGRAM_ID as ln}from"@solana/spl-token";import{PublicKey as qc,SystemProgram as Uc}from"@solana/web3.js";import Gc from"bn.js";import{PublicKey as ws,Keypair as _c}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ec}from"@solana/spl-token";import Vc from"bn.js";import{PublicKey as Kc}from"@solana/web3.js";import cs,{isBN as ls}from"bn.js";import{bits as gc,BitStructure as fy,blob as wc,Blob as yy,cstr as by,f32 as gy,f32be as wy,f64 as Ay,f64be as hy,greedy as Py,Layout as Ac,ns64 as ky,ns64be as Ty,nu64 as hc,nu64be as Iy,offset as xy,s16 as By,s16be as Sy,s24 as Ky,s24be as Cy,s32 as Pc,s32be as Ly,s40 as Ry,s40be as Oy,s48 as Ny,s48be as My,s8 as _y,seq as kc,struct as Ey,Structure as Tc,u16 as Ic,u16be as Vy,u24 as Fy,u24be as vy,u32 as xc,u32be as Dy,u40 as Wy,u40be as qy,u48 as Uy,u48be as Gy,u8 as Bc,UInt as Sc,union as Xy,Union as zy,unionLayoutDiscriminator as Yy,utf8 as Hy}from"@solana/buffer-layout";var Nr=Ac,os=Tc;var Bi=Sc;var ss=Bc,gt=Ic;var Si=xc;var as=hc;var Me=Pc;var us=kc;var be=wc;var Ki=gc;var zt=class extends Nr{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new cs(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new cs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},Mr=class extends Nr{constructor(t){super(8,t);this._lower=Ki(Si(),!1),this._upper=Ki(Si(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return R(R({},r),o)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function F(i){return new Bi(1,i)}function ze(i){return new Bi(4,i)}function w(i){return new zt(8,!1,i)}function z(i){return new zt(16,!1,i)}function ms(i){return new zt(1,!0,i)}function Er(i){return new zt(8,!0,i)}function ds(i){return new zt(16,!0,i)}var _r=class extends Nr{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(i){return new _r(be(32),e=>new Kc(e),e=>e.toBuffer(),i)}function Ve(i){return new _r(ss(),Cc,Lc,i)}function Cc(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Lc(i){return i?1:0}var Ci=class extends os{decode(e,t){return super.decode(e,t)}};function M(i,e,t){return new Ci(i,e,t)}function q(i,e,t){let n,r=typeof e=="number"?e:ls(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ls(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 us(i,r,t)}var cn=M([K("mint"),K("owner"),w("amount"),ze("delegateOption"),K("delegate"),F("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),K("closeAuthority")]);function Rc(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Li(i,...e){if(!Rc(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Ri(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function ps(i,e){Li(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Fr=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),lt=(i,e)=>i<<32-e|i>>>e;var cb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Oc(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Oi(i){return typeof i=="string"&&(i=Oc(i)),Li(i),i}var Vr=class{clone(){return this._cloneInto()}},lb={}.toString;function fs(i){let e=n=>i().update(Oi(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Nc(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var ys=(i,e,t)=>i&e^~i&t,bs=(i,e,t)=>i&e^i&t^e&t,vr=class extends Vr{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Fr(this.buffer)}update(e){Ri(this);let{view:t,buffer:n,blockLen:r}=this;e=Oi(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Fr(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ri(this),ps(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Nc(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Fr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Mc=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]),_t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Et=new Uint32Array(64),Ni=class extends vr{constructor(){super(64,32,8,!1),this.A=_t[0]|0,this.B=_t[1]|0,this.C=_t[2]|0,this.D=_t[3]|0,this.E=_t[4]|0,this.F=_t[5]|0,this.G=_t[6]|0,this.H=_t[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Et[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Et[m-15],p=Et[m-2],y=lt(d,7)^lt(d,18)^d>>>3,f=lt(p,17)^lt(p,19)^p>>>10;Et[m]=f+Et[m-7]+y+Et[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=lt(a,6)^lt(a,11)^lt(a,25),p=l+d+ys(a,u,c)+Mc[m]+Et[m]|0,f=(lt(n,2)^lt(n,13)^lt(n,22))+bs(n,r,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){Et.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var gs=fs(()=>new Ni);var Sb=oe("Raydium_Util");function As({owner:i,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:o,account:s}of t.value){let a=cn.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:we(i,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),r.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ws.default,amount:new Vc(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Fe({fromPublicKey:i,programId:e=Ec}){let t=_c.generate().publicKey.toBase58().slice(0,32);return{publicKey:Fc(i,t,e),seed:t}}function Fc(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=gs(n);return new ws(r)}function Mi(i){let{mint:e,tokenAccount:t,owner:n,programId:r=ln}=i;return vc(t,e,n,r)}function It(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=ln}=i;return Dc(e,t,r,n,o)}async function xt(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(cn.span,n),u=Y(t).add(new Gc(a)),c=Fe({fromPublicKey:r,programId:ln});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Uc.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:cn.span,programId:ln}),Mi({mint:new qc(Oe.address),tokenAccount:c.publicKey,owner:o,programId:ln})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[It({tokenAccount:c.publicKey,payer:r,owner:o})]}}function Nn({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=ln}){return Wc(i,e,t,BigInt(String(n)),r,o)}var Mn=class extends Pe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}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 we(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 r=R(R({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Vt},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xc},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=As({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=Vt,associatedOnly:r=!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&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Dr(t.tokenProgram||Vt),m=this.getAssociatedTokenAccount(n,new Dr(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!o||h.pubkey.equals(m))).sort((h,A)=>h.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let h=_i(s,m,s,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&mn.decode(A.data).mint.equals(n)&&mn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(E.CreateATA);if(n.equals(te)&&r.amount){let A=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.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||[]),r.amount&&(p.instructions.push(Nn({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:Vt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let h=Fe({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(mn.span),k=zc.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:A+Number((g=(b=r.amount)==null?void 0:b.toString())!=null?g:0),space:mn.span,programId:l});return p.instructions.push(k,Mi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Vt,autoUnwrapWSOLToSOL:r}){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 _i(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],o=c}return r&&te.toBase58()===t.toBase58()&&(a.endInstructions=[It({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:o,programId:s=Vt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new Dr(te).equals(o)){let p=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return R({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=_i(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(Vt)&&mn.decode(f.data).mint.equals(o)&&mn.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:r=Vt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Dr(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ae(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ae(m,["tokenAccount"]);u=d,c.addInstruction(p)}return R({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as cl}from"@solana/spl-token";import{PublicKey as fe,SystemProgram as ll}from"@solana/web3.js";import{PublicKey as ks}from"@solana/web3.js";var Ei=M([F("instruction")]),Vi=M([F("instruction")]),Yc=M([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Hc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),jc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),F("option"),K("rewardVaultB"),be(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),Qc=M([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(Yc,5,"rewardInfos"),K("creator"),K(),q(w(),32,"padding")]),Zc=new Proxy(Hc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),$c=new Proxy(jc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Wr=new Proxy(Qc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:6,rewardInfos:r.rewardInfos.map(o=>{var s;return W(R({},o),{rewardType:((s=Object.entries(Ft).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),Jc=M([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Fi=M([F("instruction"),w("nonce"),q(Jc,5,"rewardTimeInfo")]),vi=M([F("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Di=M([F("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),og=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Wi=M([w("state"),K("id"),K("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),sg=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),2,"rewardDebts")]),hs=M([w("state"),K("id"),K("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Ps=M([w(),w("state"),K("id"),K("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ze=M([F("instruction"),w("amount")]),el=M([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ms("digitShift"),q(F(),7,"reserved1"),q(w(),7,"reserved2")]),tl=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(F(),32,"reserved1"),q(el,4,"votingMints"),Er("timeOffset"),F("bump"),q(F(),7,"reserved2"),q(w(),11,"reserved3")]),nl=M([Er("startTime"),Er("endTime"),F("kind"),q(F(),15,"reserved")]),rl=M([q(nl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ve("isUsed"),Ve("allowClawback"),F("votingMintConfigIdx"),q(F(),29,"reserved")]),il=M([be(8),K("voterAuthority"),K("registrar"),q(rl,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),q(F(),94,"reserved")]);var fg=oe("Raydium_farm_config"),Ts=new ks("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Is=new ks("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var xs={3:Wi,5:hs,6:Ps},qi=i=>[3,5,6].indexOf(i)!==-1,Ui=i=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=i,r=`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: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=o[e])==null?void 0:s.call(o)},Ft={"Standard SPL":0,"Option tokens":1},et={[Jo.toString()]:3,[es.toString()]:5,[Cn.toString()]:6};import{PublicKey as le,SystemProgram as Ks,SYSVAR_RENT_PUBKEY as al,SYSVAR_CLOCK_PUBKEY as qr,TransactionInstruction as mt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Xg,TOKEN_PROGRAM_ID as vt,ASSOCIATED_TOKEN_PROGRAM_ID as zg}from"@solana/spl-token";import Cs from"bn.js";import ol from"bn.js";var sl=oe("Raydium.farm.util");function _n({programId:i,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function tt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Bs=({programId:i,poolId:e})=>ue([e.toBuffer()],i);function Ss(i){return{isSet:new ol(1),rewardPerSecond:Y(i.perSecond),rewardOpenTime:Y(i.openTime),rewardEndTime:Y(i.endTime),rewardType:Y(Ft[i.rewardType])}}function Gi(i){return Y(i.endTime).sub(Y(i.openTime)).mul(Y(i.perSecond))}function En(i){let e=xs[i];return e||sl.logWithError("invalid version",i),e}var ul=oe("Raydium_farm_instruction"),ow={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 Ur(i){let{version:e,id:t,ledger:n,programId:r,owner:o}=i,s={3:9,5:10}[e];s||ul.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ei.span);Ei.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ks.programId,isWritable:!1}),T({pubkey:al,isWritable:!1})];return{instruction:new mt({programId:r,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Ls(i){var n;let e=Buffer.alloc(Fi.span);Fi.encode({instruction:0,nonce:new Cs(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...ci,T({pubkey:i.farmId}),T({pubkey:i.farmAuthority,isWritable:!1}),T({pubkey:i.lpVault}),T({pubkey:i.lpMint,isWritable:!1}),T({pubkey:i.lockVault}),T({pubkey:i.lockMint,isWritable:!1}),T({pubkey:(n=i.lockUserAccount)!=null?n:Ke}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(T({pubkey:r.rewardMint,isWritable:!1}),T({pubkey:r.rewardVault}),T({pubkey:r.userRewardToken}));return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function Rs(i){let e=Buffer.alloc(Vi.span);Vi.encode({instruction:5},e);let t=[T({pubkey:vt,isWritable:!1}),T({pubkey:i.id}),T({pubkey:i.authority,isWritable:!1}),T({pubkey:i.lpVault,isWritable:!1}),T({pubkey:i.rewardVault}),T({pubkey:i.userRewardToken}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Xi({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let o=Buffer.alloc(vi.span);vi.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},o);let s=[T({pubkey:vt,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:n.programId,keys:s,data:o})}function zi({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let o=Buffer.alloc(Di.span);Di.encode({instruction:4,isSet:new Cs(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(Ft[r.rewardType])},o);let s=[...ci,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:r.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:t.programId,keys:s,data:o})}function Vn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=tt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:2,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}function Fn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=tt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:12,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:qr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function vn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=tt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:qr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Os(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=tt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:10,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:qr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ns(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=tt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:qr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ms(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=tt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:1,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:Ks.programId,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}var Dn=class extends Pe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ke)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Gi(W(R({},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:r=Cn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new fe(e.lpMint.address),lockInfo:{lockMint:Ts,lockVault:Is},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Fe({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Wr.span);u.addInstruction({instructions:[ll.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Wr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Bs({programId:new fe(a.programId),poolId:l.publicKey}),y=_n({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let P of a.rewardInfos){P.openTime>=P.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",P.openTime.toString()),isNaN(Ft[P.rewardType])&&this.logAndCreateError("rewardType error",P.rewardType),Number(P.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",P.perSecond),f.push(Ss(P));let{rewardPubKey:x,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:P,payer:c});S&&u.addInstruction(S),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let I=P.mint.equals(Ke)?new fe(Oe.address):P.mint;b.push({rewardMint:I,rewardVault:_n({programId:a.programId,poolId:l.publicKey,mint:I,type:"rewardVault"}),userRewardToken:x})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new fe(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&u.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=Ls({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:[k]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let o=et[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Xe((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(Ke)?new fe(Oe.address):n.mint,l=a.rewardInfos.findIndex(g=>new fe(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:Ke,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:[Xi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let o=et[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Xe((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(Ke)?new fe(Oe.address):m.mint,p=a.rewardInfos.findIndex(A=>new fe(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:Ke,{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 h=Xi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:o}=e,s=et[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Xe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Ke)?new fe(Oe.address):r.mint,m=_n({programId:new fe(n.programId),poolId:new fe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[zi({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:o}=e,s=et[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Xe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Ke)?new fe(Oe.address):l.mint,d=_n({programId:new fe(n.programId),poolId:new fe(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=zi({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(R({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,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=et[d];qi(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new fe(n.programId),new fe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=tt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let D of this.scope.account.tokenAccounts)if(a){let Q=we(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&Q.equals(D.publicKey)&&(A[D.mint.toString()]=D.publicKey)}else A[D.mint.toString()]=D.publicKey;let k=b.lpMint,P=A[k.address];P||this.logAndCreateError("you don't have any lp","lp zero",A);let x=[];for(let D of m){let Q=s&&D.mint.address===te.toString(),re=A[D.mint.address];if(!re){let{account:Z,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D.mint.programId,mint:new fe(D.mint.address),notUseTokenAccount:Q,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!Q,associatedOnly:Q?!1:a,checkCreateATAOwner:u});re=Z,ft&&h.addInstruction(ft)}A[D.mint.address]=re,x.push(re)}let S,I=await this.scope.connection.getAccountInfo(g);if(I&&(S=En(p).decode(I.data)),n.programId!==Cn.toString()&&!S){let{instruction:D,instructionType:Q}=Ur({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[D],instructionTypes:[Q]})}let B=Ui({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:x});B&&this.logAndCreateError(B);let L={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:P,rewardAccounts:x,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new fe(D))},V=p===6?Ms(L):p===5?Ns(L):Os(L),H={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return h.addInstruction({instructions:[V],instructionTypes:[H[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,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=et[n.programId];qi(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 B of this.scope.account.tokenAccounts)if(u){let L=we(this.scope.ownerPubKey,B.mint).publicKey;B.publicKey&&L.equals(B.publicKey)&&(b[B.mint.toString()]=B.publicKey)}else b[B.mint.toString()]=B.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let B=tt({programId:new fe(n.programId),poolId:new fe(n.id),owner:this.scope.ownerPubKey,version:p}),L=await this.scope.connection.getAccountInfo(B);L||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:L}),En(p).decode(L.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:B,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new fe(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=B,L&&f.addInstruction(L)}b[g.toString()]=A;let k=[];for(let B of d){let L=s&&B.mint.address===te.toString(),V=b[B.mint.address];if(!V){let{account:H,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:B.mint.programId,mint:new fe(B.mint.address),notUseTokenAccount:L,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:c});V=H,D&&f.addInstruction(D)}b[B.mint.address]=V,k.push(V)}let P=Ui({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});P&&this.logAndCreateError(P);let x={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(B=>new fe(B))},S=p===6?Vn(x):p===5?Fn(x):vn(x),I={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[I[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Xe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=et[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ke.toString()?new fe(Oe.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Ke,c=this.createTxBuilder(),l;if(t.equals(Ke)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Gi(W(R({},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:[cl(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Rs({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.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:r,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=we(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)=>W(R({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=et[f],k=b.address,P=n&&k===te.toString(),x=m[k];if(!x){let{account:H,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new fe(k),notUseTokenAccount:P,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:o,checkCreateATAOwner:s});x=H,D&&l.addInstruction(D)}m[k.toString()]=x;let S=[];for(let H of g){let D=n&&H.mint.address===te.toString(),Q=m[H.mint.address];if(!Q){let{account:re,instructionParams:Z}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new fe(H.mint.address),notUseTokenAccount:D,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});Q=re,Z&&l.addInstruction(Z)}m[H.mint.address]=Q,S.push(Q)}let I=p[h],B={amount:Ge,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:I,lpAccount:x,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new fe(H))},L=A===6?Vn(B):A===5?Fn(B):vn(B),V={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[L],instructionTypes:[V[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Be}from"@solana/web3.js";import{AccountLayout as zl,NATIVE_MINT as ya,TOKEN_PROGRAM_ID as Qr}from"@solana/spl-token";var Kw=M([ze("mintAuthorityOption"),K("mintAuthority"),w("supply"),F("decimals"),F("isInitialized"),ze("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as Ow}from"@solana/web3.js";import{MintLayout as Mw,TOKEN_PROGRAM_ID as Ew}from"@solana/spl-token";var _s=i=>new he({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});import{TOKEN_PROGRAM_ID as qn,ASSOCIATED_TOKEN_PROGRAM_ID as Il}from"@solana/spl-token";import{PublicKey as wt,TransactionInstruction as pn,SystemProgram as xl,SYSVAR_RENT_PUBKEY as oA}from"@solana/web3.js";var Yi=M([F("instruction"),w("amountIn"),w("minAmountOut")]),Hi=M([F("instruction"),w("maxAmountIn"),w("amountOut")]),Qw=M([F("instruction"),F("nonce")]),ml=M([F("instruction"),F("nonce"),w("startTime")]),Es=M([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),q(w(),3,"padding")]),Zw=M([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(w(),64,"padding")]),ji=M([F("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Qi=M([F("instruction"),w("amountIn")]);var Vs=M([w("fee")]);import{PublicKey as dl}from"@solana/web3.js";var dn=new dl("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ht=5e4,pl=M([w("x"),w("y"),w("price")]),fl=M([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(pl,Ht,"DataElement")]);function yl(i,e){return[0,Ht-2]}function bl(i){return[0,Ht-2]}function gl(i){return[0,Ht-2]}function wl(i,e,t){let[n,r]=yl(e,t),o=n,s=r,a=0,u=e*i.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Ht-2)return[a,a,!1];let c=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.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 Zi(i,e,t){let[n,r,o]=wl(i,e,t);if(!o)return 0;if(n===r){let s=i.DataElement[n].x;return e*i.multiplier/s}else{let s=i.DataElement[n].x,a=i.DataElement[n].y,u=i.DataElement[r].x,c=i.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*i.multiplier*l/p}}function Yt(i,e,t){return e*i.multiplier/t}function Fs(i,e,t){return e*t/i.multiplier}function Al(i,e){let[t,n]=bl(e),r=t,o=n,s=0,a=e;for(;r<o;){if(s=Math.floor((o+r)/2),s<=0||s>Ht-2)return[s,s,!1];let u=i.DataElement[s].x,c=i.DataElement[s-1].x,l=i.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];r=s+1}}return[s,s,!1]}function hl(i,e){let[t,n]=gl(e),r=t,o=n,s=0,a=e;for(;r<=o;){if(s=Math.floor((o+r)/2),s<=0||s>=Ht-2)return[s,s,!1];let u=i.DataElement[s].y,c=i.DataElement[s-1].y,l=i.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)r=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 vs(i,e,t,n){let r=n?e+t:e-t,[o,s,a]=Al(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].y,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-(r-u)*i.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*i.multiplier/l),[y,f,!1,a]}}}function Pl(i,e,t,n){let r=n?e-t:e+t,[o,s,a]=hl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].x,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-r)/i.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/i.multiplier),[y,f,!1,a]}}}function kl(i,e){let t=vs(i,e,0,!1);return t[3]?t[0]:0}function Ds(i,e,t,n){let r=Zi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!0,[c,l,m,d]=vs(i,o,a,u);if(!d)return 0;if(m)return n*i.multiplier/c;{let p=s-l;return Fs(i,p,r)}}function Ws(i,e,t,n){let r=Zi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!1,[c,l,m,d]=Pl(i,s,a,u);if(!d)return 0;if(m)return n*c/i.multiplier;{let p=o-l;return Fs(i,p,r)}}function Tl(i){let e=fl.decode(i);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 qs(i,e,t,n){let r=kl(i,Yt(i,e,Zi(i,e,t)))/i.multiplier;return n?r:1/r}var Wn=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(dn);e&&(this._layoutData=Tl(e==null?void 0:e.data))}}};var Us=oe("Raydium_liquidity_instruction");function Gs(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:o,fixedSide:s}=i,a=Buffer.alloc(ji.span);ji.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(o),fixedSide:s==="base"?Ge:Uo},a);let u=[T({pubkey:qn,isWritable:!1}),T({pubkey:new wt(e.id)}),T({pubkey:new wt(t.authority),isWritable:!1}),T({pubkey:new wt(t.openOrders),isWritable:!1}),T({pubkey:new wt(t.targetOrders)}),T({pubkey:new wt(e.lpMint.address)}),T({pubkey:new wt(t.vault.A)}),T({pubkey:new wt(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:dn})),u.push(T({pubkey:new wt(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new wt(t.marketEventQueue),isWritable:!1})),new pn({programId:new wt(e.programId),keys:u,data:a})}function $i(i){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=i,o=Xe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Qi.span);Qi.encode({instruction:4,amountIn:Y(r)},a);let u=[T({pubkey:qn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:dn})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new pn({programId:o.programId,keys:u,data:a})}return new pn({programId:o.programId,keys:[]})}function Xs({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,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:h,openTime:A,coinAmount:k,pcAmount:P,ammConfigId:x,feeDestinationId:S}){let I=M([F("instruction"),F("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),B=[{pubkey:qn,isSigner:!1,isWritable:!1},{pubkey:Il,isSigner:!1,isWritable:!1},{pubkey:xl.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:x,isSigner:!1,isWritable:!1},{pubkey:S,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}],L=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:P},L),{instruction:new pn({keys:B,programId:i,data:L}),instructionType:E.AmmV4CreatePool}}function Bl({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Xe(i),s=Buffer.alloc(Yi.span);Yi.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[T({pubkey:qn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:dn})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new pn({programId:o.programId,keys:a,data:s})}function Sl({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Xe(i),s=Buffer.alloc(Hi.span);Hi.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[T({pubkey:qn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:dn})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new pn({programId:o.programId,keys:a,data:s})}function zs(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Bl(W(R({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Sl(W(R({},a),{maxAmountIn:r,amountOut:o}),t);Us.logWithError("invalid params","params",i)}throw Us.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as _e,TOKEN_2022_PROGRAM_ID as qt,ASSOCIATED_TOKEN_PROGRAM_ID as aa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as dt,SystemProgram as fn,Keypair as so}from"@solana/web3.js";import ua from"bn.js";import El from"bn.js";function Gr(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Ji(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function eo(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Un(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Ys(i,e){return Un(i,e)?null:Ji(i,e)}function Hs(i,e){return Un(i,e)?null:eo(i,e)}var AA=Buffer.from("amm_config","utf8"),Kl=Buffer.from("pool","utf8"),Cl=Buffer.from("pool_vault","utf8"),Ll=Buffer.from("pool_reward_vault","utf8"),js=Buffer.from("position","utf8"),Rl=Buffer.from("tick_array","utf8"),Ol=Buffer.from("operation","utf8"),Nl=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Qs(i,e,t,n){return ue([Kl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function to(i,e,t){return ue([Cl,e.toBuffer(),t.toBuffer()],i)}function Zs(i,e,t){return ue([Ll,e.toBuffer(),t.toBuffer()],i)}function de(i,e,t){return ue([Rl,e.toBuffer(),Gr(t)],i)}function jt(i,e,t,n){return ue([js,e.toBuffer(),Gr(t),Gr(n)],i)}function nt(i,e){return ue([js,e.toBuffer()],i)}function Xr(i){return ue([Buffer.from("metadata","utf8"),sn.toBuffer(),i.toBuffer()],sn)}function Gn(i){return ue([Ol],i)}function At(i,e){return ue([Nl,e.toBuffer()],i)}import ht from"bn.js";var xe=new ht(0),Pt=new ht(1),Bt=new ht(-1),$e=new ht(1).shln(64),zr=new ht(1).shln(128),no=$e.sub(Pt),Xn=64,$s=zr.subn(1),ve=-443636,Ye=-ve,Dt=new ht("4295048016"),Wt=new ht("79226673521066979257578248091"),Js=16,ea="59543866431248",ta="184467440737095516",na="15793534762490258745",Yr=new ht(10).pow(new ht(6));var ra={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:[]},kA=new ht("18446744073700000000");var Ml=15,se=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(r,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Ml/2));for(let p=0;p<l.length;p++){let{publicKey:y}=de(t,n,l[p]);u.push(y)}let m=(await bt(e,u)).map(p=>p!==null?zn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(R({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=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,r,o){let s=Math.floor(e/se.tickCount(t)),a=n?G.searchLowBitFromStart(r,o,s-1,1,t):G.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ce-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<Ce;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=G.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ce;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=de(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>Ye)return!1;let n=G.getTickArrayStartIndexByTick(ve,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ce*e}};import ne from"bn.js";import{PublicKey as Kt}from"@solana/web3.js";import Te from"bn.js";var ro=14,St=class{static maxTickInTickarrayBitmap(e){return e*Ce*Qt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!se.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-se.tickCount(n):t+se.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ce,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Ys(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=Hs(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-se.tickCount(n)}}}},Yn=class{static getBitmapOffset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=St.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;if(Ye<=t)throw Error(`extensionTickBoundary check error: ${Ye}, ${t}`);if(n<=ve)throw Error(`extensionTickBoundary check error: ${n}, ${ve}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=se.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=St.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=G.mergeTickArrayBitmap(e).shln(Qt-1-a),c=Un(512,u)?null:Ji(512,u);if(c!==null){let l=t-c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=Un(512,u)?null:eo(512,u);if(c!==null){let l=t+c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-se.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%St.maxTickInTickarrayBitmap(t),r=Math.floor(n/se.tickCount(t));return e<0&&n!=0&&(r=Qt-r),r}};import kt from"bn.js";var Hn=class{static getfeeGrowthInside(e,t,n){let r=new kt(0),o=new kt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new kt(0),a=new kt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,h,A;let a=ee.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),u=ee.getSqrtPriceX64FromTick(t.tickLower),c=ee.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=ae.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),ye(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[ye(new kt(new _(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ye(new kt(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:Xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ia}from"@solana/spl-token";var De=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...d),{expectedAmountOut:m.mul(Bt),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=de(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Bt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=De.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Yn.checkTickArrayIsInit(se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(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/se.tickCount(e.tickSpacing)),r=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=se.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=St.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Yn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<ve||t>Ye)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],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=W(R({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Kt(d)});if(p.tokenMint.equals(Kt.default))continue;if(n<=p.openTime.toNumber()||r.eq(xe)){s.push(p);continue}let y=new Te(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=$.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=$.mulDivFloor(f,p.emissionsPerSecondX64,$e),A=p.rewardTotalEmissioned.add(h);s.push(W(R({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;return t>Ye&&(t=se.getArrayStartIndex(Ye,e)+se.tickCount(e)),n<ve&&(n=se.getArrayStartIndex(ve,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/se.tickCount(t)*Qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Ir(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=oa.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=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}=de(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await Ir(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=zn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(R({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(nt(p,d).publicKey);let l=await bt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=jr.decode(d.data),y=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=G._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=ae.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:k,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(I=>W(R({},I),{pendingReward:new Te(0)})),leverage:P,tokenFeeAmountA:new Te(0),tokenFeeAmountB:new Te(0)}];let x=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await bt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=zn.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],P=y[m[A].toString()],x=k.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=P.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:B}=await Hn.GetPositionFees(f,g,x,S),L=await Hn.GetPositionRewards(f,g,x,S);g.tokenFeeAmountA=I.gte(new Te(0))?I:new Te(0),g.tokenFeeAmountB=B.gte(new Te(0))?B:new Te(0);for(let V=0;V<L.length;V++)g.rewardInfos[V].pendingReward=L[V].gte(new Te(0))?L[V]:new Te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new _(0)}){var L;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?Dt.add(new Te(1)):Wt.sub(new Te(1)):u=ee.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,r,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=De.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((L=d.fee)!=null?L:xe),u),g=ye(p,m,r,!1),h=ee.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new _(1).div(h),k=p.mul(new Te(Math.floor((1-s)*1e10))).div(new Te(1e10)),P=ye(k,m,r,!1),x=c?e.currentPrice:new _(1).div(e.currentPrice),S=new _(A).sub(x).abs(),I=x,B=new Ue(new _(S).mul(10**15).toFixed(0),new _(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:P,expirationTime:Xt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:B,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(R({},u),{mint:u.address,isToken2022:u.programId===ia.toBase58()})),new he(W(R({},c),{mint:c.address,isToken2022:c.programId===ia.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:h,fee:A,remainingAccounts:k}=await De.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Kt(u.address),amountIn:n,slippage:o,epochInfo:s}),P=W(R({},d),{amount:new ke(l,d.amount),fee:d.fee===void 0?void 0:new ke(l,d.fee)}),x=W(R({},p),{amount:new ke(m,p.amount),fee:p.fee===void 0?void 0:new ke(m,p.fee)}),S=W(R({},y),{amount:new ke(m,y.amount),fee:y.fee===void 0?void 0:new ke(m,y.fee)}),I=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:b.mul(new _(10**(20+m.decimals))).toFixed(0)}),B=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:g.mul(new _(10**(20+m.decimals))).toFixed(0)}),L=new ke(l,A);return{realAmountIn:P,amountOut:x,minAmountOut:S,expirationTime:f,currentPrice:I,executionPrice:B,priceImpact:h,fee:L,remainingAccounts:k}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){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:r,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:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[an(e.mintA.address).toString()],d=r[an(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=ee.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),b=ee.getSqrtPriceX64FromTick(s),g=ee.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:P}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),x=new _(h.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(A.toString()).div(new _(10).pow(y)).mul(d.value)),S=new _(k.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(P.toString()).div(new _(10).pow(y)).mul(d.value)),I=S.div(x.add(S)).div(S),L=new _(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),V=3600*24*365,H=e.rewardDefaultInfos.map(D=>{var Z,ft;let Q=D.mint.decimals,re=r[D.mint.address];return u<((Z=D.startTime)!=null?Z:0)||u>((ft=D.endTime)!=null?ft:0)||!D.perSecond||!re||Q===void 0?0:new _(re.value).mul(new _(D.perSecond).mul(V)).div(new _(10).pow(Q)).mul(I).mul(100).toNumber()});return{feeApr:L,rewardsApr:H,apr:L+H.reduce((D,Q)=>D+Q,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=ee.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),m=ee.getSqrtPriceX64FromTick(n),d=ee.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Te(new _(y.amount.sub((h=y.fee)!=null?h:xe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ae.getLiquidityFromTokenAmountA(m,d,f,!a):new Te(0);else if(l.lte(d)){let A=ae.getLiquidityFromTokenAmountA(l,d,f,!a),k=ae.getLiquidityFromTokenAmountB(m,l,f);b=t?A:k}else b=t?new Te(0):ae.getLiquidityFromTokenAmountB(m,d,f);return De.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,h,A;let u=ee.getSqrtPriceX64FromTick(n),c=ee.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ae.getAmountsFromLiquidity(ee.priceToSqrtPriceX64(new _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),ye(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[ye(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ye(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:Xt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new Kt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=Hr.decode(n.data),o=At(new Kt(t.programId),new Kt(t.id)).publicKey,s=await De.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return W(R({},r),{id:new Kt(t.id),programId:new Kt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:W(R({},t.config),{id:new Kt(t.config.id),fundOwner:""}),currentPrice:new _(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var $=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(xe)||(o=o.add(Pt)),o}static mulDivFloor(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).add(n.sub(Pt)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(zr).sub(t).mod(zr)}};function Le(i,e){return io(i.mul(e),64,256)}function _l(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function io(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ee=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(xe))return e;let o=t.shln(Xn);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,Pt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Xn);if(r)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,Pt,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<ve||e>Ye)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Le(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Le(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Le(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Le(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Le(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Le(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Le(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Le(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Le(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Le(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Le(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Le(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Le(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Le(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Le(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Le(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Le(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Le(n,new ne("37481735321082"))),e>0&&(n=$s.div(n)),n}static getTickFromPrice(e,t,n){return ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Wt)||e.lt(Dt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),r=_l(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Js;){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=r.add(c).mul(new ne(ea)),d=io(m.sub(new ne(ta)),64,128).toNumber(),p=io(m.add(new ne(na)),64,128).toNumber();return d==p?d:ee.getSqrtPriceX64FromTick(p).lte(e)?p:d}},$t=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=$t.getTickWithPriceAndTickspacing(e,t,n,r),s=ee.getSqrtPriceX64FromTick(o);return ee.sqrtPriceX64ToPrice(s,n,r)}},ae=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Xn),s=t.sub(e);return r?$.mulDivRoundingUp($.mulDivCeil(o,s,t),Pt,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");return r?$.mulDivCeil(n,t.sub(e),$e):$.mulDivFloor(n,t.sub(e),$e)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?$.mulDivRoundingUp(a,Pt,no):a.shrn(Xn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,no,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ae.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ae.getLiquidityFromTokenAmountA(e,n,r,!1),a=ae.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ae.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ae.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ne(0)};if(e.lt(n)){let s=ae.getTokenAmountAFromLiquidity(e,n,r,o),a=ae.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ae.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=ae.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new ne(new _(u.toString()).mul(l).toFixed(0)),d=new ne(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,k,P;let c=ee.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=ee.getSqrtPriceX64FromTick(t),m=ee.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ae.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[ye(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ye(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[ye(new ne(new _(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),ye(new ne(new _(p.amountB.toString()).mul(d).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Xt(y.expirationTime,f.expirationTime)}}},Zt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y){if(d.eq(xe))throw new Error("amountSpecified must not be 0");if(y||(y=s?Dt.add(Pt):Wt.sub(Pt)),s){if(y.lt(Dt))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(Wt))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(xe),b={amountSpecifiedRemaining:d,amountCalculated:xe,sqrtPriceX64:m,tick:c>p?Math.min(p+se.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,h=n[p],A=0,k=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(xe)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let x=G.nextInitTick(h,b.tick,l,s,k),S=x||null,I=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let L=De.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},g,s);if(!L.isExist)throw Error("swapCompute LiquidityInsufficient");g=L.nextStartIndex;let{publicKey:V}=de(e,t,g);I=V,h=n[g],S=G.firstInitializedTick(h,s)}P.tickNext=S.tick,P.initialized=S.liquidityGross.gtn(0),p!==g&&I&&(b.accounts.push(I),p=g),P.tickNext<ve?P.tickNext=ve:P.tickNext>Ye&&(P.tickNext=Ye),P.sqrtPriceNextX64=ee.getSqrtPriceX64FromTick(P.tickNext);let B;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?B=y:B=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Zt.swapStepCompute(b.sqrtPriceX64,B,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let L=S.liquidityNet;s&&(L=L.mul(Bt)),b.liquidity=ae.addDelta(b.liquidity,L)}k=P.tickNext!=b.tick&&!s&&h.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let L=ee.getTickFromSqrtPriceX64(b.sqrtPriceX64);k=L!=b.tick&&!s&&h.startTickIndex===L,b.tick=L}++A}try{let{nextStartIndex:P,isExist:x}=se.nextInitializedTickArray(b.tick,l,s,r,o);x&&p!==P&&(b.accounts.push(de(e,t,P).publicKey),p=P)}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,r,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=r.gte(xe);if(u){let l=$.mulDivFloor(r,Yr.sub(new ne(o.toString())),Yr);s.amountIn=a?ae.getTokenAmountAFromLiquidity(t,e,n,!0):ae.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ae.getTokenAmountBFromLiquidity(t,e,n,!1):ae.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Bt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromOutput(e,n,r.mul(Bt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ae.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ae.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ae.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ae.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Bt))&&(s.amountOut=r.mul(Bt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new ne(o),Yr.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ce=60,Qt=512,G=class{static getTickArrayAddressByTick(e,t,n,r){let o=G.getTickArrayStartIndexByTick(n,r),{publicKey:s}=de(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),r=Math.floor((e-n)/t);if(r<0||r>=Ce)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=se.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*se.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ce,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ce,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ce:e+t*Ce}static mergeTickArrayBitmap(e){let t=new El(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ce));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,Qt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<ve||e>Ye}static nextInitTick(e,t,n,r,o){if(se.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ce;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ce-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ce;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=ee.getSqrtPriceX64FromTick(t),o=ee.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=ee.getSqrtPriceX64FromTick(o),a=ee.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 r=ee.getSqrtPriceX64FromTick(t),o=ee.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=ee.getSqrtPriceX64FromTick(o),a=ee.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new _(1).div(a)}}};var Lh=M([be(8),F("bump"),gt("index"),K(""),ze("protocolFeeRate"),ze("tradeFeeRate"),gt("tickSpacing"),q(w(),8,"")]),Vl=M([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),oo=M([be(8),Ve("initialized"),K("poolId"),q(Vl,1e3,"observations"),q(z(),5,"")]),Fl=M([F("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),z("rewardGrowthGlobalX64")]),Hr=M([be(8),F("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),gt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Me("tickCurrent"),gt("observationIndex"),gt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),F("status"),q(F(),7,""),q(Fl,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")]),vl=M([z("growthInsideLastX64"),w("rewardAmountOwed")]),jr=M([be(8),F("bump"),K("nftMint"),K("poolId"),Me("tickLower"),Me("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(vl,3,"rewardInfos"),q(w(),8,"")]),Rh=M([be(8),F("bump"),K("poolId"),Me("tickLowerIndex"),Me("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Dl=M([Me("tick"),ds("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),zn=M([be(8),K("poolId"),Me("startTickIndex"),q(Dl,Ce,"ticks"),F("initializedTickCount"),q(F(),115,"")]),sa=M([be(329),q(K(),100,"whitelistMints")]),oa=M([be(8),K("poolId"),q(q(w(),8),ro,"positiveTickArrayBitmap"),q(q(w(),8),ro,"negativeTickArrayBitmap")]);var ca=oe("Raydium_Clmm"),pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:fn.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...pt.createPool,...g]);return new dt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Fe({fromPublicKey:r,programId:n}),[d,p]=[new v(o.address),new v(s.address)],y=[fn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(oo.span),space:oo.span,programId:n})],{publicKey:f}=Qs(n,a,d,p),{publicKey:b}=to(n,f,d),{publicKey:g}=to(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new v(o.programId||_e),p,g,new v(s.programId||_e),At(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,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,S,I,B,L){let V=M([Me("tickLowerIndex"),Me("tickUpperIndex"),Me("tickArrayLowerStartIndex"),Me("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),F("optionBaseFlag"),Ve("baseFlag")]),H=[...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:fn.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:aa,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],Q=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:x,amountMaxA:S,amountMaxB:I,withMetadata:B==="create",baseFlag:!1,optionBaseFlag:0},Q);let re=Buffer.from([...pt.openPosition,...Q]);return new dt({keys:D,programId:e,data:re})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let I=so.generate();m.push(I),y=I.publicKey}let f=G.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,_e),{publicKey:k}=Xr(y),{publicKey:P}=nt(d,y),{publicKey:x}=jt(d,p,r,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),r,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let I=so.generate();m.push(I),y=I.publicKey}let f=G.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,_e),{publicKey:k}=Xr(y),{publicKey:P}=nt(d,y),{publicKey:x}=jt(d,p,r,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),r,o,f,b,c,s,a,u,De.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,S,I,B,L){let V=M([Me("tickLowerIndex"),Me("tickUpperIndex"),Me("tickArrayLowerStartIndex"),Me("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),F("optionBaseFlag"),Ve("baseFlag")]),H=[...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:fn.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:aa,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],Q=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:new ua(0),amountMaxA:S==="MintA"?I:B,amountMaxB:S==="MintA"?B:I,withMetadata:x==="create",baseFlag:S==="MintA",optionBaseFlag:1},Q);let re=Buffer.from([...pt.openPosition,...Q]);return new dt({keys:D,programId:e,data:re})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new v((await l(1))[0]);else{let I=so.generate();d.push(I),m=I.publicKey}let[p,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(p,y,f),{publicKey:h}=de(p,y,b),{publicKey:A}=we(n.wallet,m,_e),{publicKey:k}=Xr(m),{publicKey:P}=nt(p,m),{publicKey:x}=jt(p,y,r,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),r,o,f,b,s,a,u,c,De.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=M([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:fn.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...pt.closePosition,...u]);return new dt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new v(e.programId),{publicKey:s}=we(n.wallet,r.nftMint,_e),{publicKey:a}=nt(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ve("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},x);let S=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,_e),{publicKey:f}=nt(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,De.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(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:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,_e),{publicKey:f}=nt(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,De.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ve("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:new ua(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},x);let S=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=M([z("liquidity"),w("amountMinA"),w("amountMinB")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(B=>[{pubkey:B.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey: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:_e,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:gr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let I=Buffer.from([...pt.decreaseLiquidity,...S]);return new dt({keys:x,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=de(c,l,m),{publicKey:y}=de(c,l,d),{publicKey:f}=we(r.wallet,n.nftMint,u),{publicKey:b}=nt(c,n.nftMint),{publicKey:g}=jt(c,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new v(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new v(e.rewardDefaultInfos[k].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),h,o,s,a,De.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?At(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,r,o,s,a,u,c,l,m,d,p,y,f,b,g){let h=M([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ve("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:gr,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},P);let x=Buffer.from([...pt.swap,...P]);return new dt({keys:k,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new v(e.programId),new v(e.id)],[d,p]=[new v(t.vault.A),new v(t.vault.B)],[y,f]=[new v(e.mintA.address),new v(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,m,new v(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,At(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:fn.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...pt.initReward,...f]);return new dt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new v(e.programId),new v(e.id)],a=Zs(o,s,r.mint).publicKey,u=Gn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([F("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:qt,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:Y(l),endTime:Y(m)},f);let b=Buffer.from([...pt.setRewardEmissions,...f]);return new dt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new v(t.rewardInfos[d].vault),c=new v(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&ca.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Gn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=M([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:gr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...pt.collectReward,...l]);return new dt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&ca.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[p,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(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 Ul}from"@solana/web3.js";import{PublicKey as Wl}from"@solana/web3.js";import la from"bn.js";var ma=new la(25),da=new la(1e4);var ql=oe("Raydium_liquidity_serum");function pa({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));r=Wl.createProgramAddressSync(o,i)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:r,nonce:n}}throw ql.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}import mP from"bn.js";function ao({programId:i}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Jt({name:i,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function Gl({programId:i,marketId:e}){let{publicKey:t}=ue([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Xl({programId:i}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function fa({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=Jt({name:"amm_associated_seed",programId:a,marketId:t}),l=Jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Xl({programId:a}),p=Jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Gl({programId:a,marketId:t}),g=Jt({name:"target_associated_seed",programId:a,marketId:t}),h=Jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=pa({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:i,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Ul.default,configId:ao({programId:a})}}import Qe from"bn.js";var jn=class extends Pe{constructor(t){super(t);this.stableLayout=new Wn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:o}){let s=new Qe(new _(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=_s(t[o?"mintB":"mintA"]),[u,c]=[new Qe(new _(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Qe(new _(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Qe(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:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Ge;s.isZero()||(d=m==="base"?Pr(s.mul(c),u):Pr(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Pr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ue(new Qe(1)).add(r).mul(d).quotient,b=new ke(a,d),g=new ke(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:r,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:",r,"amountInB:",o),(r.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[r.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 Be(n.lpMint.address)}),h=[p,y],A=[f,b],k=[r.raw,o.raw],P=r.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(P)||this.logAndCreateError("invalid fixedSide","fixedSide",s),P==="quote"?(h.reverse(),A.reverse(),k.reverse(),x=s==="a"?"quote":"base"):P==="base"&&(x=s==="a"?"base":"quote");let[S,I]=h,[B,L]=A,[V,H]=k,D=await this.getAmmPoolKeys(n.id),Q=this.createTxBuilder(),ur=await l.handleTokenAccount({side:"in",amount:V,mint:S.mint,tokenAccount:B,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:re}=ur,Z=Ae(ur,["tokenAccount"]);Q.addInstruction(Z);let tn=await l.handleTokenAccount({side:"in",amount:H,mint:I.mint,tokenAccount:L,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ft}=tn,sr=Ae(tn,["tokenAccount"]);Q.addInstruction(sr);let nn=await l.handleTokenAccount({side:"out",amount:0,mint:new Be(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ar}=nn,gn=Ae(nn,["tokenAccount"]);return Q.addInstruction(gn),Q.addInstruction({instructions:[Gs({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:re,quoteTokenAccount:ft,lpTokenAccount:ar,owner:this.scope.ownerPubKey},baseAmountIn:V,quoteAmountIn:H,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),Q.addCustomComputeBudget(c),u===0&&await Q.buildV0(),Q.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:r,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Be(n.mintA.address),new Be(n.mintB.address),new Be(n.lpMint.address)];this.logDebug("amountIn:",r),r.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",r.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:h}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=S,k=Ae(S,["tokenAccount"]);b.addInstruction(k);let I=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:P}=I,x=Ae(I,["tokenAccount"]);return b.addInstruction(x),b.addInstruction({instructions:[$i({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:P,owner:this.scope.ownerPubKey},amountIn:r})],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:r,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Qr,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let b=this.createTxBuilder();b.addCustomComputeBudget(c);let g={};for(let Z of this.scope.account.tokenAccountRawInfos)(g[Z.accountInfo.mint.toString()]===void 0||we(this.scope.ownerPubKey,Z.accountInfo.mint,Qr).publicKey.equals(Z.pubkey))&&(g[Z.accountInfo.mint.toString()]=Z.pubkey);let h=g[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let A=r.add(a!=null?a:new Qe(0)),k=t.mintA.address===he.WSOL.mint.toString(),P=t.mintB.address===he.WSOL.mint.toString(),{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Qr,mint:new Be(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(S||{}),x===void 0)throw new Error("base token account not found");let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Qr,mint:new Be(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(B||{}),I===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=x,g[t.mintB.address]=I,s!==void 0&&!(a!=null&&a.isZero())){let Z=et[s.programId],ft=tt({programId:new Be(s.programId),poolId:new Be(s.id),owner:this.scope.ownerPubKey,version:Z}),sr,ar=await this.scope.connection.getAccountInfo(ft);if(ar&&(sr=En(Z).decode(ar.data)),Z!==6&&!sr){let{instruction:Ct,instructionType:ti}=Ur({id:new Be(s.id),programId:new Be(s.programId),version:Z,ledger:ft,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[Ct],instructionTypes:[ti]})}let gn=[];for(let Ct of s.rewardInfos){let ti=Ct.mint.address===he.WSOL.mint.toString();if(g[Ct.mint.address])gn.push(g[Ct.mint.address]);else{let{account:yo,instructionParams:bo}=await this.scope.account.getOrCreateTokenAccount({mint:new Be(Ct.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!ti,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});yo||this.logAndCreateError("farm reward account not found:",Ct.mint.address),bo&&b.addInstruction(bo),gn.push(yo)}}let ur=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],tn={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:ur,lpAccount:h,rewardAccounts:gn},nn=et[s.programId],_a=nn===6?Vn(tn):nn===5?Fn(tn):vn(tn),Ea={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};b.addInstruction({instructions:[_a],instructionTypes:[Ea[nn]]})}let L=await this.getAmmPoolKeys(t.id),V=$i({poolInfo:t,poolKeys:L,userKeys:{lpTokenAccount:h,baseTokenAccount:x,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:A});b.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]});let[H,D]=t.mintA.address===n.mintA.address?[x,I]:[I,x],Q=await this.scope.clmm.getClmmPoolKeys(t.id),re=await Ie.openPositionFromBaseInstructions(W(R({poolInfo:n,poolKeys:Q,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:H,tokenAccountB:D},withMetadata:"create"},o),{base:u,getEphemeralSigners:y}));return b.addInstruction({instructions:[...re.instructions],signers:re.signers,instructionTypes:[...re.instructionTypes],lookupTableAddress:Q.lookupTableAccount?[Q.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,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&&r.mint.equals(ya),h=c.useSOLBalance&&o.mint.equals(ya),A=this.createTxBuilder(),{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:r.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(P||{});let{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),k===void 0||x===void 0)throw Error("you don't has some token account");let I=fa({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:o.mint,baseDecimals:r.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),B={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:y},{instruction:L,instructionType:V}=Xs(W(R({},B),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:x,userLpVault:we(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[L],instructionTypes:[V]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:B}})}async getCreatePoolFee({programId:t}){let n=ao({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Vs.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:o,slippage:s}){if(r!==t.mintA.address&&r!==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=r==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===ts.toBase58(),y;if(p)y=new _(d.toString()).div(m.toString());else{let I=qs(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new _(1e6).div(I*1e6):y=new _(I*1e6).div(1e6)}let f=n,b=new Qe(0),g=new Qe(0);if(!f.isZero())if(p){g=On(f.mul(ma),da);let I=f.sub(g),B=m.add(I);b=d.mul(I).div(B)}else{g=f.mul(new Qe(2)).div(new Qe(1e4));let I=f.sub(g);l==="quote"?b=new Qe(Ds(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber())):b=new Qe(Ws(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber()))}let h=new Qe(new _(b.toString()).mul(1-s).toFixed(0)),A=b,k=h,P=new _(b.toString()).div(new _(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(P=new _(b.toString()).div(f.sub(g).toString()));let x=y.sub(P).div(y).mul(100);return{amountOut:A,minAmountOut:k,currentPrice:y,executionPrice:P,priceImpact:x,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:r,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 Be(l.address),programId:new Be(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Be(m.address),programId:new Be(m.programId),associatedOnly:!1}),k=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Be(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=k,f=Ae(k,["tokenAccount"]);c.addInstruction(f);let P=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Be(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=P,g=Ae(P,["tokenAccount"]);c.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[zs({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:r,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 Be(c))),r={},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=Es.decode(l.data);r[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new Be(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 Qe(zl.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(r)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=W(R({},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 ie}from"@solana/web3.js";import rt from"bn.js";var Qn=class extends Pe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new rt(new ie(r.address).toBuffer()).gt(new rt(new ie(o.address).toBuffer()))?[o,r,new _(1).div(a)]:[r,o,a],b=ee.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ie.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:W(R({},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:R({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:[]}},ra),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,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,h=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[k,P]=s==="MintA"?[a,u]:[u,a],{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(S||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});I&&(g=I),f.addInstruction(B||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=t||await this.getClmmPoolKeys(e.id),V=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:L,ownerInfo:W(R({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(V),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:V.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,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===te.toBase58(),h=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});P&&(b=P),y.addInstruction(x||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),I=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(I),y.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:r,amountMaxB:o});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:o,otherAmountMax:s});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:r,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=r.useSOLBalance&&t.mintA.address===te.toString(),y=r.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(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,h&&d.addInstruction(h);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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,k&&d.addInstruction(k);let P=[];for(let B of t.rewardDefaultInfos){let L=r.useSOLBalance&&B.mint.address===te.toString(),V;if(B.mint.address===t.mintA.address)V=f;else if(B.mint.address===t.mintB.address)V=b;else{let{account:H,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(B.mint.programId),mint:new ie(B.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:c});V=H,D&&d.addInstruction(D)}P.push(V)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=await this.getClmmPoolKeys(t.id),S=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:P},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let I=R({},S.address);if(r.closePosition){let B=await Ie.closePositionInstructions({poolInfo:t,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:B.instructions,endInstructionTypes:B.instructionTypes}),I=R(R({},I),B.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new rt(new _(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ie(n.mint.programId),mint:new ie(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new rt(new _(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ie(l.mint.programId),mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=R(R({},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:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new rt(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:r,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Ie.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.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:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new rt(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:r,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=R(R({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!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(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Ie.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:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=R(R({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,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===te.toBase58(),y=a.useSOLBalance&&e.mintB.address===te.toBase58(),f;!o||o.equals(new _(0))?f=t.toString()===e.mintA.address?Dt.add(new rt(1)):Wt.sub(new rt(1)):f=ee.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let b;if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(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,k&&d.addInstruction(k)}let g;if(!g){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(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,k&&d.addInstruction(k)}(!b||!g)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let h=await this.getClmmPoolKeys(e.id);return d.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:h,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},inputMint:new ie(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?we(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(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===te.toString(),y=n.useSOLBalance&&d.mintB.address===te.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=A,k&&l.addInstruction(k)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:o});b=A,k&&l.addInstruction(k)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===te.toString(),P=c[A.mint.address];if(!P){let{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});P=x,S&&l.addInstruction(S)}c[A.mint.address]=P,g.push(P)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let k=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new rt(0),amountMinA:new rt(0),amountMinB:new rt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Gn(e).publicKey);return t?sa.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new rt(1))).map(s=>nt(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=jr.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(r=>new ie(r))),n={};for(let r=0;r<e.length;r++){let o=t[r];if(o===null)throw Error("fetch pool info error: "+String(e[r]));let s=Hr.decode(o.data),a=ee.sqrtPriceX64ToPrice(s.sqrtPriceX64,s.mintDecimalsA,s.mintDecimalsB).toNumber();n[String(e[r])]=W(R({},s),{currentPrice:a})}return n}};import{PublicKey as U}from"@solana/web3.js";import{NATIVE_MINT as $r,TOKEN_PROGRAM_ID as Ut,AccountLayout as sm}from"@solana/spl-token";var Yl=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Hl=Buffer.from("amm_config","utf8"),jl=Buffer.from("pool","utf8"),Ql=Buffer.from("pool_lp_mint","utf8"),Zl=Buffer.from("pool_vault","utf8"),$l=Buffer.from("observation","utf8");function Jl(i){return ue([Yl],i)}function em(i,e){return ue([Hl,rm(e)],i)}function tm(i,e,t,n){return ue([jl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function nm(i,e){return ue([Ql,e.toBuffer()],i)}function ba(i,e,t){return ue([Zl,e.toBuffer(),t.toBuffer()],i)}function Zr(i,e){return ue([$l,e.toBuffer()],i)}function rm(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function ga({programId:i,mintA:e,mintB:t}){let n=em(i,0).publicKey,r=Jl(i).publicKey,o=tm(i,n,e,t).publicKey,s=nm(i,o).publicKey,a=ba(i,o,e).publicKey,u=ba(i,o,t).publicKey,c=Zr(i,o).publicKey;return{poolId:o,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Zn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as uo,TOKEN_2022_PROGRAM_ID as wa,ASSOCIATED_TOKEN_PROGRAM_ID as im}from"@solana/spl-token";var om=oe("Raydium_cpmm"),$n={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 Aa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=M([w("amountMaxA"),w("amountMaxB"),w("openTime")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!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:uo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:im,isSigner:!1,isWritable:!1},{pubkey:di,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],x=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},x),new Zn({keys:P,programId:i,data:Buffer.from([...$n.initialize,...x])})}function ha(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:uo,isSigner:!1,isWritable:!1},{pubkey:wa,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 om.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Zn({keys:b,programId:i,data:Buffer.from([...$n.deposit,...g])})}function Pa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:uo,isSigner:!1,isWritable:!1},{pubkey:wa,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Fo,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Zn({keys:b,programId:i,data:Buffer.from([...$n.withdraw,...g])})}function ka(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Zn({keys:g,programId:i,data:Buffer.from([...$n.swapBaseInput,...h])})}function Ta(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Zn({keys:g,programId:i,data:Buffer.from([...$n.swapBaseOutput,...h])})}import We from"bn.js";var Ia=M([be(8),F("bump"),Ve("disableCreatePool"),gt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),q(w(),16)]),xa=M([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),F("bump"),F("status"),F("lpDecimals"),F("mintDecimalA"),F("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var Jn=class extends Pe{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 U(m))),r={},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=xa.decode(d.data);r[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 U(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]]=Ia.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(s.map(m=>new U(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 We(sm.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){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]=W(R({},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:r,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ae(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,D,Q;let d=r.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),p=new We(new U(c.mintA.address).toBuffer()).lte(new We(new U(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],h=r.useSOLBalance&&y.address===$r.toBase58(),A=r.useSOLBalance&&f.address===$r.toBase58(),[k,P]=[new U(y.address),new U(f.address)],x=this.createTxBuilder(),{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});x.addInstruction(I||{});let{account:B,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:new U(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(x.addInstruction(L||{}),S===void 0||B===void 0)throw Error("you don't has some token account");let V=ga({programId:e,mintA:k,mintB:P});return x.addInstruction({instructions:[Aa(e,this.scope.ownerPubKey,V.configId,V.authority,V.poolId,k,P,V.lpMint,S,B,we(this.scope.ownerPubKey,V.lpMint).publicKey,V.vaultA,V.vaultB,t,new U((D=y.programId)!=null?D:Ut),new U((Q=f.programId)!=null?Q:Ut),V.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),x.addCustomComputeBudget(u),x.versionBuild({txVersion:a,extInfo:{address:W(R({},V),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:r,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}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=s?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(R({},t),{lpAmount:new _(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new Ue(0),baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new _(n.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===$r.toString(),A=t.mintB.address===$r.toString(),k=this.createTxBuilder(),[P,x]=[new U(t.mintA.address),new U(t.mintB.address)],{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(r?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:r?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(I||{});let{account:B,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(r?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:r?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(L||{}),!S&&!B&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let V=await l.getCreatedTokenAccount({mint:new U(t.lpMint.address)}),Z=await l.handleTokenAccount({side:"out",amount:0,mint:new U(t.lpMint.address),tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:H}=Z,D=Ae(Z,["tokenAccount"]);k.addInstruction(D);let Q=await this.getCpmmPoolKeys(t.id),re=new Ue(new We(1)).sub(o);return k.addInstruction({instructions:[ha(new U(t.programId),this.scope.ownerPubKey,new U(Q.authority),new U(t.id),H,S,B,new U(Q.vault.A),new U(Q.vault.B),P,x,new U(t.lpMint.address),s?s==null?void 0:s.liquidity:re.mul(y).quotient,r?f.amount:g,r?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:Q.lookupTableAccount?[Q.lookupTableAccount]:[]}),k.addCustomComputeBudget(a),k.versionBuild({txVersion:c})}async withdrawLiquidity(e){var H,D;let{poolInfo:t,lpAmount:n,slippage:r,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new Ue(new We(1)).sub(r),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]=[ye(c,t.mintA.extensions.feeConfig,m,!0),ye(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new U(t.mintA.address),new U(t.mintB.address)],h=b.equals(te),A=g.equals(te),k,P,{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});k=x,S&&f.addInstruction(S);let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});P=I,B&&f.addInstruction(B),(!k||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let L=await y.getCreatedTokenAccount({mint:new U(t.lpMint.address)});L||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let V=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Pa(new U(t.programId),this.scope.ownerPubKey,new U(V.authority),new U(t.id),L,k,P,new U(V.vault.A),new U(V.vault.B),b,g,new U(t.lpMint.address),n,c.sub((H=d.fee)!=null?H:new We(0)),l.sub((D=p.fee)!=null?D:new We(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var P,x,B,L,V,H;let{poolInfo:t,baseIn:n,swapResult:r,slippage:o=0,config:s,computeBudgetConfig:a,txVersion:u}=e,{bypassAssociatedCheck:c,checkCreateATAOwner:l}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),m=this.createTxBuilder(),[d,p]=[new U(t.mintA.address),new U(t.mintB.address)],y=await this.scope.account.getCreatedTokenAccount({programId:new U((P=t.mintA.programId)!=null?P:Ut),mint:d,associatedOnly:!1}),f=await this.scope.account.getCreatedTokenAccount({programId:new U((x=t.mintB.programId)!=null?x:Ut),mint:p,associatedOnly:!1});r.destinationAmountSwapped=r.destinationAmountSwapped.mul(new We((1-o)*1e4)).div(new We(1e4));let S=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?r.sourceAmountSwapped:r.destinationAmountSwapped,programId:new U(t.mintA.programId),mint:d,tokenAccount:y,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:b}=S,g=Ae(S,["tokenAccount"]);m.addInstruction(g);let I=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?r.destinationAmountSwapped:r.sourceAmountSwapped,programId:new U(t.mintB.programId),mint:p,tokenAccount:f,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:h}=I,A=Ae(I,["tokenAccount"]);m.addInstruction(A),!b&&!h&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?ka(new U(t.programId),this.scope.ownerPubKey,new U(k.authority),new U(k.config.id),new U(t.id),b,h,new U(k.vault.A),new U(k.vault.B),new U((B=t.mintA.programId)!=null?B:Ut),new U((L=t.mintB.programId)!=null?L:Ut),d,p,Zr(new U(t.programId),new U(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped):Ta(new U(t.programId),this.scope.ownerPubKey,new U(k.authority),new U(k.config.id),new U(t.id),h,b,new U(k.vault.B),new U(k.vault.A),new U((V=t.mintB.programId)!=null?V:Ut),new U((H=t.mintA.programId)!=null?H:Ut),p,d,Zr(new U(t.programId),new U(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:u})}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:r,slippage:o,epochInfo:s,baseIn:a}){var h,A,k,P,x,S,I,B;let u=1-Number(o.toSignificant())/100,c=new We(new _(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=ye(c,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=c.sub((h=l.fee)!=null?h:new We(0)),d=new We(new _(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(k=(A=l.fee)==null?void 0:A.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${o.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:Ge,fee:void 0,expirationTime:void 0};if(!m.isZero()){let L=am(y,t,n,d);this.logDebug("lpAmountData:",{amountA:L.amountA.toString(),amountB:L.amountB.toString()}),f=ye(L[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Ue(new We(1)).add(o),g=ye(b.mul(f.amount.sub((P=f.fee)!=null?P:new We(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(x=f.fee)==null?void 0:x.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(B=(I=g.fee)==null?void 0:I.toString())!=null?B:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function am(i,e,t,n){let r=i.mul(e).div(n);!r.isZero()&&!i.mul(e).mod(n).isZero()&&(r=r.add(new We(1)));let o=i.mul(t).div(n);return!o.isZero()&&!i.mul(t).mod(n).isZero()&&(o=o.add(new We(1))),{amountA:r,amountB:o}}var er=class extends Pe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((r,o)=>o.version-r.version),e[0].version!==e[1].version))return e[0];let n=e.filter(r=>r.version===e[0].version);return n.sort((r,o)=>this.comparePoolSize(r,o,t)),n[0]}static comparePoolSize(e,t,n){let r=n[e.id],o=n[t.id];return r===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?r.baseReserve.sub(o.baseReserve).gte(Ge)?-1:1:r.baseReserve.sub(o.quoteReserve).gte(Ge)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,r=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=Y(t);for(let u=0;u<r.length;u++)a.gte(r[u].amount)?(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(r[u].amount)):(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Nn({destination:s.addresses.newAccount,source:r[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),r=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),n.length&&r.addInstruction({instructions:[Nn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[It({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),r.build()}};import{TOKEN_PROGRAM_ID as um}from"@solana/spl-token";import{PublicKey as cm,Transaction as co,TransactionInstruction as lm}from"@solana/web3.js";import Ba from"bn.js";var qe=class extends Pe{static getPdaPoolId(e,t){return ue([qe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([qe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ba(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>qe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<qe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>qe.getPdaOwnerId(t,m,r,l).publicKey));let u=await bt(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!==qe.POOL_LAYOUT.span||b.data.length!==qe.OWNER_LAYOUT.span)continue;let g=qe.POOL_LAYOUT.decode(f.data),h=qe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),P=h.tokenInfo.map(I=>I.debtAmount.gt(new Ba(0))).filter(I=>!I).length!==3,x=o>A&&o<k&&g.status===1,S=P&&x;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:qe.VERSION_PROJECT[m],openTime:A,endTime:k,canClaim:S,canClaimErrorType:P?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((I,B)=>({mintAddress:I.mintAddress,mintVault:I.mintVault,mintDecimals:I.mintDecimals,perLpLoss:I.perLpLoss,debtAmount:h.tokenInfo[B].debtAmount.add(h.tokenInfo[B].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=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(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[qe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,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(),r=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(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[qe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Ai(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new co().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new co().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new co().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=M([]),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:um,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new lm({keys:o,programId:e,data:a})}},it=qe;it.CLAIMED_NUM=3,it.POOL_LAYOUT=M([be(8),F("bump"),F("status"),w("openTime"),w("endTime"),K("ammId"),q(M([F("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),qe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),it.OWNER_LAYOUT=M([be(8),F("bump"),F("version"),K("poolId"),K("owner"),w("lpAmount"),q(M([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),qe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),it.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cm(e)),it.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},it.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as tr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ra}from"@solana/spl-token";import nr from"bn.js";import{TransactionInstruction as dm,SYSVAR_RENT_PUBKEY as pm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sa}from"@solana/spl-token";import{createInitializeAccountInstruction as Ka}from"@solana/spl-token";import{SystemProgram as en,Transaction as Ca}from"@solana/web3.js";function mm(i="accountFlags"){let e=new Mr(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var lo=M([be(5),mm("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function fm({programId:i,marketInfo:e}){let t=M([F("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),gt("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:pm,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}:[]),r=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},r),new dm({keys:n,programId:i,data:r})}async function La({connection:i,wallet:e,marketInfo:t}){let n=new Ca,r=await i.getMinimumBalanceForRentExemption(165);n.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:Sa}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:Sa}),Ka(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Ka(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Ca;return o.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(lo.span),space:lo.span,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),fm({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 yn=class extends Pe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Fe({fromPublicKey:u,programId:o}),l=Fe({fromPublicKey:u,programId:o}),m=Fe({fromPublicKey:u,programId:o}),d=Fe({fromPublicKey:u,programId:o}),p=Fe({fromPublicKey:u,programId:o}),y=Fe({fromPublicKey:u,programId:Ra}),f=Fe({fromPublicKey:u,programId:Ra}),b=0,g=new nr(100);function h(){let B=new nr(0);for(;;)try{return{vaultOwner:tr.createProgramAddressSync([c.publicKey.toBuffer(),B.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:B}}catch{if(B.iaddn(1),B.gt(new nr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),P=new nr(Math.round(10**e.decimals*n)),x=new nr(Math.round(n*10**t.decimals*r));if(P.eq(Ge))throw Error("lot size is too small");if(x.eq(Ge))throw Error("tick size or lot size is too small");let S=await La({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:k,baseLotSize:P,quoteLotSize:x}}),I=this.createTxBuilder();I.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let B of S.slice(1,S.length))I.addInstruction({instructions:B.transaction.instructions,signers:B.signer,instructionTypes:B.instructionTypes});return s===0?I.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 tr(e.mint),quoteMin:new tr(t.mint)}}):I.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 tr(e.mint),quoteMin:new tr(t.mint)}})}};import{PublicKey as ir}from"@solana/web3.js";import{TransactionInstruction as Oa,SYSVAR_CLOCK_PUBKEY as bm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Na}from"@solana/spl-token";var ym=M([F("instruction"),as("amount")]),rr=M([F("instruction")]);function Jr({programId:i},e){let t=[{pubkey:Na,isSigner:!1,isWritable:!1},{pubkey:vo,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,o])=>({pubkey:o,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(rr.span);return rr.encode({instruction:2},n),new Oa({keys:t,programId:i,data:n})}function mo(i){let{poolConfig:e,userKeys:t,side:n}=i,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(rr.span);rr.encode({instruction:2},s);let a=[{pubkey:Na,isWritable:!1,isSigner:!1},{pubkey:bm,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:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Oa({programId:e.programId,keys:a,data:s})}import Ma from"bn.js";var gm={[Ln.IDO_PROGRAM_ID_V1.toString()]:1,[Ln.IDO_PROGRAM_ID_V2.toString()]:2,[Ln.IDO_PROGRAM_ID_V3.toString()]:3,[Ln.IDO_PROGRAM_ID_V4.toString()]:4},bn=class extends Pe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:o}){let s=this.createTxBuilder(),a=gm[t.programId];a||this.logAndCreateError("invalid version",a);let u=Xe(t),[c,l]=[!new Ma(e.coin).isZero(),!new Ma(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{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:r});!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(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});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?[Jr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Jr({programId:new ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Jr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[mo(W(R({},g),{side:"base"}))]:[],...l?[mo(W(R({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as wm}from"@solana/web3.js";import{MintLayout as Am,TOKEN_2022_PROGRAM_ID as po,TOKEN_PROGRAM_ID as fo}from"@solana/spl-token";var or=class extends Pe{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:r="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,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(Mt.address,Mt),this._mintGroup.official.add(Mt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,W(R({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?po.toBase58():fo.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,W(R({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?po.toBase58():fo.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,W(R({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?po.toBase58():fo.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(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Mt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(R({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new wm(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Am.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 ei=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new ut(r):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=oe("Raydium"),this.farm=new Dn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Mn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new jn({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new or({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new er({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Qn({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Jn({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new it({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new yn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new bn({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=hm({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Rr({cluster:n,timeout:r,urlConfigs:a,logCount:o,logRequests:s}),c=new ei(W(R({},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(Or);return this._owner.publicKey}setOwner(e){return this._owner=e?new ut(e):void 0,this}get connection(){if(!this._connection)throw new Error(is);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(Or),new Error(Or)}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 r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(R({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),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{}}}};export{ei as Raydium};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=raydium.mjs.map
|