@raydium-io/raydium-sdk-v2 0.0.25-alpha → 0.0.26-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.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/cpmm/cpmm.js +1 -1
- package/lib/raydium/cpmm/cpmm.js.map +1 -1
- package/lib/raydium/cpmm/cpmm.mjs +1 -1
- package/lib/raydium/cpmm/cpmm.mjs.map +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/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-1fe6ab0b.d.ts → raydium-d75706f4.d.ts} +3 -2
- package/package.json +1 -1
- package/src/raydium/cpmm/cpmm.ts +14 -2
package/lib/raydium/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var gr=Object.getOwnPropertySymbols;var Ho=Object.prototype.hasOwnProperty,Zo=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))Ho.call(e,t)&&jo(r,t,e[t]);if(gr)for(var t of gr(e))Zo.call(e,t)&&jo(r,t,e[t]);return r},W=(r,e)=>Nu(r,Mu(e));var ke=(r,e)=>{var t={};for(var n in r)Ho.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&gr)for(var n of gr(r))e.indexOf(n)<0&&Zo.call(r,n)&&(t[n]=r[n]);return t};import{merge as Ad}from"lodash";import ul from"axios";import{get as $o,set as _u}from"lodash";import es from"dayjs";import Vu from"dayjs/plugin/utc";es.extend(Vu);var fi=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 es().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}},Jo={},Eu={};function se(r){let e=$o(Jo,r);if(!e){let t=$o(Eu,r);e=new fi({name:r,logLevel:t}),_u(Jo,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Rr from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,yi="0123456789abcdef",Ar="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",bi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},is,Rt,$=!0,hr="[DecimalError] ",Wt=hr+"Invalid argument: ",os=hr+"Precision limit exceeded",ss=hr+"crypto unavailable",as="[object Decimal]",Fe=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,us=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,dt=1e7,Q=7,Du=9007199254740991,qu=Ar.length-1,gi=kr.length-1,R={toStringTag:as};R.absoluteValue=R.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};R.ceil=function(){return G(new this.constructor(this),this.e+1,2)};R.clampedTo=R.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};R.comparedTo=R.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};R.cosine=R.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Uu(n,ps(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};R.cubeRoot=R.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=Fe((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ge(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,G(n,r,m.rounding,e)};R.decimalPlaces=R.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Fe(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};R.dividedBy=R.div=function(r){return ge(this,new this.constructor(r))};R.dividedToIntegerBy=R.divToInt=function(r){var e=this,t=e.constructor;return G(ge(e,new t(r),0,1,1),t.precision,t.rounding)};R.equals=R.eq=function(r){return this.cmp(r)===0};R.floor=function(){return G(new this.constructor(this),this.e+1,3)};R.greaterThan=R.gt=function(r){return this.cmp(r)>0};R.greaterThanOrEqualTo=R.gte=function(r){var e=this.cmp(r);return e==1||e===0};R.hyperbolicCosine=R.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Ir(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};R.hyperbolicSine=R.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Ir(5,r)),i=ln(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(i,e,t,!0)};R.hyperbolicTangent=R.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ge(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};R.inverseCosine=R.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?mt(t,i,o):new t(0):new t(NaN):e.isZero()?mt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=mt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};R.inverseHyperbolicCosine=R.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};R.inverseHyperbolicSine=R.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln())};R.inverseHyperbolicTangent=R.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ge(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};R.inverseSine=R.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=mt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};R.inverseTangent=R.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=gi)return s=mt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=gi)return s=mt(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),$=!0,G(s,l.precision=m,l.rounding=d,!0)};R.isFinite=function(){return!!this.d};R.isInteger=R.isInt=function(){return!!this.d&&Fe(this.e/Q)>this.d.length-2};R.isNaN=function(){return!this.s};R.isNegative=R.isNeg=function(){return this.s<0};R.isPositive=R.isPos=function(){return this.s>0};R.isZero=function(){return!!this.d&&this.d[0]===0};R.lessThan=R.lt=function(r){return this.cmp(r)<0};R.lessThanOrEqualTo=R.lte=function(r){return this.cmp(r)<1};R.logarithm=R.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if($=!1,a=m+p,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),In(u.d,i=m,d))do if(a+=10,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(In(u.d,i+=10,d));return $=!0,G(u,m,d)};R.minus=R.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return $?G(r,a,u):r}if(t=Fe(r.e/Q),l=Fe(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=dt-1;--c[i],c[n]+=dt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Tr(c,t),$?G(r,a,u):r):new y(u===3?-0:0)};R.modulo=R.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=ge(t,r.abs(),0,3,1),e.s*=r.s):e=ge(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};R.naturalExponential=R.exp=function(){return wi(this)};R.naturalLogarithm=R.ln=function(){return vt(this)};R.negated=R.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};R.plus=R.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),$?G(r,a,u):r;if(o=Fe(m.e/Q),n=Fe(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/dt|0,c[i]%=dt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Tr(c,n),$?G(r,a,u):r};R.precision=R.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};R.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};R.sine=R.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Xu(n,ps(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};R.squareRoot=R.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Fe((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(ge(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,G(n,u,l.rounding,r)};R.tangent=R.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ge(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};R.times=R.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Fe(l.e/Q)+Fe(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%dt|0,e=a/dt|0;o[i]=(o[i]+e)%dt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Tr(o,t),$?G(r,m.precision,m.rounding):r};R.toBinary=function(r,e){return ki(this,2,r,e)};R.toDecimalPlaces=R.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(je(r,0,Dt),e===void 0?e=n.rounding:je(e,0,8),G(t,r+t.e+1,e))};R.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(je(r,0,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(je(r,0,Dt),e===void 0?e=o.rounding:je(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};R.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=cs(y)-p.e-1,s=o%Q,e.d[0]=Ke(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*Q*2;m=ge(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ge(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ge(c,n,o,1).minus(p).abs().cmp(ge(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};R.toHexadecimal=R.toHex=function(r,e){return ki(this,16,r,e)};R.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:je(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?($=!1,t=ge(t,r,0,e,1).times(r),$=!0,G(t)):(r.s=t.s,t=r),t};R.toNumber=function(){return+this};R.toOctal=function(r,e){return ki(this,8,r,e)};R.toPower=R.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=Fe(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=ls(u,a,t,n),r.s<0?new u(1).div(i):G(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ke(+a,c),e=t==0||!isFinite(t)?Fe(c*(Math.log("0."+Me(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=wi(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),In(i.d,n,o)&&(e=n+10,i=G(wi(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,G(i,n,o))};R.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(je(r,1,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toSignificantDigits=R.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(je(r,1,Dt),e===void 0?e=n.rounding:je(e,0,8)),G(new n(t),r,e)};R.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};R.truncated=R.trunc=function(){return G(new this.constructor(this),this.e+1,1)};R.valueOf=R.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Me(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function je(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function In(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Ke(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ke(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ke(10,e-3)-1,s}function wr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=yi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Ir(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ge=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V,F,j,D=n.constructor,ee=n.s==i.s?1:-1,te=n.d,oe=i.d;if(!te||!te[0]||!oe||!oe[0])return new D(!n.s||!i.s||(te?oe&&te[0]==oe[0]:!oe)?NaN:te&&te[0]==0||!oe?ee*0:ee/0);for(u?(p=1,l=n.e-i.e):(u=dt,p=Q,l=Fe(n.e/p)-Fe(i.e/p)),F=oe.length,O=te.length,g=new D(ee),P=g.d=[],m=0;oe[m]==(te[m]||0);m++);if(oe[m]>(te[m]||0)&&l--,o==null?(I=o=D.precision,s=D.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/p+2|0,m=0,F==1){for(d=0,oe=oe[0],I++;(m<O||d)&&I--;m++)S=d*u+(te[m]||0),P[m]=S/oe|0,d=S%oe|0;y=d||m<O}else{for(d=u/(oe[0]+1)|0,d>1&&(oe=r(oe,d,u),te=r(te,d,u),F=oe.length,O=te.length),x=F,k=te.slice(0,F),T=k.length;T<F;)k[T++]=0;j=oe.slice(),j.unshift(0),V=oe[0],oe[1]>=u/2&&++V;do d=0,c=e(oe,k,F,T),c<0?(h=k[0],F!=T&&(h=h*u+(k[1]||0)),d=h/V|0,d>1?(d>=u&&(d=u-1),f=r(oe,d,u),b=f.length,T=k.length,c=e(f,k,b,T),c==1&&(d--,t(f,F<b?j:oe,b,u))):(d==0&&(c=d=1),f=oe.slice()),b=f.length,b<T&&f.unshift(0),t(k,f,T,u),c==-1&&(T=k.length,c=e(oe,k,F,T),c<1&&(d++,t(k,F<T?j:oe,T,u))),T=k.length):c===0&&(d++,k=[0]),P[m++]=d,c&&k[0]?k[T++]=te[x]||0:(k=[te[x]],T=1);while((x++<O||k[0]!==void 0)&&I--);y=k[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,is=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[d=0],u=l/Ke(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/Q),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Ke(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ke(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ke(10,Q-o),m[d]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==dt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=dt)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ds(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function Tr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Pr(r,e,t){if(e>qu)throw $=!0,t&&(r.precision=t),Error(os);return G(new r(Ar),e,1,!0)}function mt(r,e,t){if(e>gi)throw Error(os);return G(new r(kr),e,t,!0)}function cs(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ft(r){for(var e="";r--;)e+="0";return e}function ls(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for($=!1;;){if(t%2&&(o=o.times(e),ns(o.d,s)&&(i=!0)),t=Fe(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ns(e.d,s)}return $=!0,o}function ts(r){return r.d[r.d.length-1]&1}function ms(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function wi(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(ge(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&In(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return G(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,k=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=k):l=e,g.precision=l+=y,t=Me(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Me(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,k).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=k,e==null?G(f,k,P,$=!0):f;for(m=f,u=s=f=ge(f.minus(1),f.plus(1),l,1),d=G(f.times(f),l,1),i=3;;){if(s=G(s.times(d),l,1),c=u.plus(ge(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Pr(g,l+2,k).times(o+""))),u=ge(u,new g(p),l,1),e==null)if(In(u.d,l-y,P,a))g.precision=l+=y,c=s=f=ge(m.minus(1),m.plus(1),l,1),d=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=k,P,$=!0);else return g.precision=k,u;u=c,i+=2}}function ds(r){return String(r.s*r.s/0)}function Ai(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),$&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),us.test(e))return Ai(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=ls(n,new n(t),o,o*2)),c=wr(e,t,dt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Tr(c,l),r.d=c,$=!1,s&&(r=ge(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):xn.pow(2,u))),$=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Ir(5,t)),e=ln(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for($=!1,u=t.times(t),a=new r(n);;){if(s=ge(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ge(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function Ir(r,e){for(var t=r;--e;)t*=r;return t}function ps(r,e){var t,n=e.s<0,i=mt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ts(t)?n?2:3:n?4:1,e;Rt=ts(t)?n?1:4:n?3:2}return e.minus(i).abs()}function ki(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(je(t,1,Dt),n===void 0?n=p.rounding:je(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ds(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=wr(kt(d),10,i),d.e=d.d.length),m=wr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ge(r,d,t,n,0,i),m=r.d,o=r.e,c=is),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=yi.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=wr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=yi.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function ns(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Qu(r){return new this(r).acosh()}function ju(r,e){return new this(r).plus(e)}function Hu(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=mt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?mt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=mt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ge(r,e,o,1)),e=mt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ge(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(hr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=bi[t]),(n=r[t])!==void 0)if(Fe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=bi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ss);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function fs(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,rs(o)){c.s=o.s,$?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Ai(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),us.test(o)?Ai(c,o):Gu(c,o)}if(i.prototype=R,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ic,i.clone=fs,i.isDecimal=rs,i.abs=zu,i.acos=Yu,i.acosh=Qu,i.add=ju,i.asin=Hu,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=kc,i.round=Pc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(r=new this(r),r.e+1,3)}function lc(){var r,e,t=new this(0);for($=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function rs(r){return r instanceof xn||r&&r.toStringTag===as||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ms(this,arguments,"lt")}function bc(){return ms(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function kc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:je(r,1,Dt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(ss);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Ke(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function Pc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString;R[Symbol.toStringTag]="Decimal";var xn=R.constructor=fs(bi);Ar=new xn(Ar);kr=new xn(kr);var E=xn;import{PublicKey as Bi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as ys,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function A({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Pi=[A({pubkey:Lc,isWritable:!1}),A({pubkey:ys.programId,isWritable:!1}),A({pubkey:Oc,isWritable:!1})];function hi({publicKey:r,transformSol:e}){let t=Ti(r.toString());if(t instanceof Pe)return e&&t.equals(Ce)?J:t;if(e&&t.toString()===Ce.toBase58())return J;if(typeof t=="string"){if(t===Pe.default.toBase58())return Pe.default;try{return new Pe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ti(r){try{return new Pe(r)}catch{return r}}var mn=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bs=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new Pe("SysvarRent111111111111111111111111111111111"),Ii=new Pe("SysvarC1ock11111111111111111111111111111111"),dn=new Pe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xr=new Pe("Sysvar1nstructions1111111111111111111111111"),gs=ys.programId,Nd=new Pe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Md=new Pe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),_d=new Pe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Vd=new Pe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ed=new Pe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Fd=new Pe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vd=new Pe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Wd=new Pe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Dd=new Pe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qd=new Pe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ud=new Pe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Pe("So11111111111111111111111111111111111111112"),Ce=Pe.default;function xi(r){return hi({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ws}from"@solana/spl-token";var Pt={chainId:101,address:Nc.default.toBase58(),programId:ws.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ws.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 Si=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Bi&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Bi(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Bi.default:hi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Si;he.WSOL=new Si(W(N({},Re),{mint:Re.address}));import Sr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Bn=_c;var Br=se("module/fraction"),Ki=Bn(Sr),Sn=Bn(Ec),Fc={[0]:Sn.ROUND_DOWN,[1]:Sn.ROUND_HALF_UP,[2]:Sn.ROUND_UP},vc={[0]:Sr.roundDown,[1]:Sr.roundHalfUp,[2]:Sr.roundUp},le=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Br.logWithError(`${e} is not an integer.`),e<=0&&Br.logWithError(`${e} is not positive.`),Sn.set({precision:e+1,rounding:Fc[n]});let i=new Sn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Br.logWithError(`${e} is not an integer.`),e<0&&Br.logWithError(`${e} is negative.`),Ki.DP=e,Ki.RM=vc[n]||1,new Ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=se("Raydium_price"),ot=class extends le{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new le(Ci(n.decimals),Ci(i.decimals))}get raw(){return new le(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ot({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new ot({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ri=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Kr=Ri;Kr.SOL=new Ri(Pt);import qc from"bn.js";var As=new le(new qc(100)),tt=class extends le{toSignificant(e=5,t,n){return this.mul(As).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(As).toFixed(e,t,n)}};var ze=new Ze(0),Ps=new Ze(1),vp=new Ze(2),Wp=new Ze(3),Dp=new Ze(5),Li=new Ze(10),qp=new Ze(100),Up=new Ze(1e3),Gp=new Ze(1e4),ks=9007199254740991;function X(r){let e=se("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ci(r){return Li.pow(X(r))}function Cr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=se("Raydium_amount"),Ts=Bn(Uc);function Xc(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ae=class extends le{constructor(t,n,i=!0,o){let s=new Rr(0),a=Li.pow(new Rr(t.decimals));if(i)s=X(n);else{let u=new Rr(0),c=new Rr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Ts.DP=this.token.decimals,new Ts(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function hs(r){return typeof r=="object"&&r!==null&&![he,Ae,zc,le,Yc,ot,tt].some(e=>typeof e=="object"&&r instanceof e)}function pe(r){return typeof r=="string"?Ti(r):Array.isArray(r)?r.map(e=>pe(e)):hs(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,pe(t)])):r}import{PublicKey as Ln,sendAndConfirmTransaction as _i,Transaction as On,TransactionMessage as Nn,VersionedTransaction as Mn}from"@solana/web3.js";import Jc from"axios";var _={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as xs,ComputeBudgetProgram as Is,Transaction as Lr,TransactionMessage as Qc,Keypair as Bs,VersionedTransaction as Ss}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as jc}from"@solana/spl-token";var Lt=se("Raydium_txUtil"),Ks=1644;function Or(r){let e=[],t=[];return r.microLamports&&(e.push(Is.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(Is.setComputeUnitLimit({units:r.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Nr(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Lr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ks}catch{return!1}}async function Cs(r,e,t,n=!0){let i=new xs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Lr;s.feePayer=i;for(let c of e)Nr([...s.instructions,c],[i])||(o.push(s),s=new Lr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Hc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Rs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=xs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Hc(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");o.push(p)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Kn({instructions:r,payer:e,signers:t}){return Nr(r,[e,...t])}function Cn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Bs.generate().publicKey.toString()}){let o=new Qc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ss(o).serialize()).toString("base64").length<Ks}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function Ht(r){let e=[];return r.forEach(t=>{t instanceof Lr&&(t.recentBlockhash||(t.recentBlockhash=jc.toBase58()),t.feePayer||(t.feePayer=Bs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ss&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Ls,AddressLookupTableAccount as Mr}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Of,unpackMint as Nf}from"@solana/spl-token";var Oi=se("Raydium_accountInfo_util");async function ht(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Ni(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Ni(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Oi.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"&&Oi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Oi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Rn(r,e,t){let n=await ht(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>W(N({},i),{accountInfo:n[o]}))}async function Mi({connection:r,address:e}){let t=await ht(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Ls(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Mr({key:s,state:Mr.deserialize(o.data)});n[s.toString()]=a,_r[s.toString()]=a}return n}var _r={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Mr({key:new Ls("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Mr.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 Vr=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}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 Jc.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}=Or(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Ln.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new On;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()=>{var i;let n=await pn(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),Ht([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await _i(this.connection,t,this.signers.find(o=>o.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer]),signedTx:t};if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0}),signedTx:o[0]}}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var p;let{sequentially:l,onTxUpdate:m}=c||{},d=await pn(this.connection);if((p=this.owner)!=null&&p.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=d,await _i(this.connection,y,a[f].find(b=>b.publicKey.equals(this.owner.publicKey))?a[f]:[...a[f],this.owner.signer])))),signedTxs:s};if(this.signAllTransactions){let y=s.map((b,g)=>(b.recentBlockhash=d,a[g].length&&b.sign(...a[g]),b));Ht(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=ke(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},_r),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Ln(p));let c=await Mi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Nn({payerKey:this.feePayer,recentBlockhash:i?Ln.default.toBase58():await pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Mn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var p;if(Ht([m]),(p=this.owner)!=null&&p.isKeyPair){this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:!0}),{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:!0}),signedTx:y[0]}}throw new Error("please connect wallet first")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var d;Ht(s);let{sequentially:l,onTxUpdate:m}=c||{};if((d=this.owner)!=null&&d.isKeyPair){let{lastValidBlockHeight:p,blockhash:y}=await this.connection.getLatestBlockhash();return s.forEach((f,b)=>{a[b].find(g=>g.publicKey.equals(this.owner.publicKey))||f.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async f=>{let b=await this.connection.sendTransaction(f);return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:p,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!p[y])return;let g=await this.connection.sendTransaction(p[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:p[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let k=f.findIndex(T=>T.txId===g);k>-1&&(f[k].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:p}}else{let y=[];for(let f=0;f<p.length;f+=1){let b=await this.connection.sendTransaction(p[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:p}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=ke(c,["computeBudgetConfig"]),i=t?Or(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Ln(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?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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 y;let{sequentially:m,onTxUpdate:d}=l||{},p=await pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=p,a[b].length&&f.sign(...a[b])}),Ht(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await _i(this.connection,f,a[b].find(g=>g.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer]))),signedTxs:s};if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),d==null||d([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),d==null||d([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},_r),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Ln(g));let c=await Mi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Or(t):{instructions:[],instructionTypes:[]},m=await pn(this.connection),d=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],k=t?[...l.instructions,...P]:P;if(f.length<12&&Cn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||Cn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mn(h))}else{let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mn(k))}else{let k=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mn(k))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:k}=g||{};if(p.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),Ht(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((S,x)=>{y[x].find(O=>O.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:p}}if(this.signAllTransactions){let h=await this.signAllTransactions(p);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let O=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:O,status:"sent",signedTx:h[I]}),k==null||k([...S]),I++,this.connection.onSignature(O,V=>{let F=S.findIndex(j=>j.txId===O);F>-1&&(S[F].status=V.err?"error":"success"),k==null||k([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(O)};return x(),{txIds:[],signedTxs:h}}else{let I=[];for(let S=0;S<h.length;S+=1){let x=await this.connection.sendTransaction(h[S],{skipPreflight:!0});I.push(x)}return{txIds:I,signedTxs:h}}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var pt=class{constructor(e){this._owner=e}get publicKey(){return pt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return pt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return pt.isKeyPair(this._owner)}get isPublicKey(){return pt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!pt.isKeyPair(e)}};function Ni(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Os=r=>typeof r=="number";function Ns(r,e,t){let n=Os(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Ms(r,e,t){let n=Os(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as Se}from"@solana/web3.js";var _s=new Se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Vs=new Se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),_n=new Se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ty=new Se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ny=new Se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ei=new Se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Es=new Se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ry=new Se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),iy=new Se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),oy=new Se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),el=new Se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new Se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new Se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new Se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),sy=new Se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ay=new Se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),uy=new Se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),cy=new Se("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ly=new Se("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),my=new Se("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Vn={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ol}from"@solana/spl-token";function fe(r,e,t){return ie([r.toBuffer(),(t!=null?t:ol).toBuffer(),e.toBuffer()],new il("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ft from"bn.js";var En=1e4;function xe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=W(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new ft(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===En){let u=new ft(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Fn(r.mul(new ft(En)),new ft(En-o.transferFeeBasisPoints)),c=new ft(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Fn(l.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Fn(r.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Fn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new ft(0))?t.add(new ft(1)):t}var ve={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Ey=N({},ve);var Fs="ray_tab_hash",Fi="ray_req_hash",sl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Fs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Fs,r)),r},Er=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=ke(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Fi)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(N({},t),{time:Date.now(),session:sl()}));try{localStorage.setItem(Fi,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(Fi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Er(W(N({},t),{logCount:r,removeLastLog:!0}))}};var Fr=se("Raydium_Api"),vi=new Map;var vr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ul.create({baseURL:this.urlConfigs.BASE_HOST||ve.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Fr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Fr.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&&Er({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Fr.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&&Er({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Fr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||ve.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||ve.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return this.api.get(this.urlConfigs.CHAIN_TIME||ve.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||ve.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||ve.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||ve.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||ve.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||ve.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||ve.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>vi.has(s)?(n.push(vi.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||ve.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{vi.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||ve.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||ve.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||ve.CHECK_AVAILABILITY)).data}};var Wr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",vs="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Hi,TOKEN_PROGRAM_ID as Xt,AccountLayout as yn,TOKEN_2022_PROGRAM_ID as El}from"@solana/spl-token";import{PublicKey as Qr,SystemProgram as Fl}from"@solana/web3.js";var Wi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new Vr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Wi(e))}logInfo(...e){this.logger.info(Wi(e))}logAndCreateError(...e){let t=Wi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ll,createCloseAccountInstruction as Ol,createTransferInstruction as Nl,TOKEN_PROGRAM_ID as fn}from"@solana/spl-token";import{PublicKey as Ml,SystemProgram as _l}from"@solana/web3.js";import Vl from"bn.js";import{PublicKey as Js,Keypair as Sl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import Cl from"bn.js";import{PublicKey as kl}from"@solana/web3.js";import Gs,{isBN as Xs}from"bn.js";import{bits as cl,BitStructure as yb,blob as ll,Blob as bb,cstr as gb,f32 as wb,f32be as Ab,f64 as kb,f64be as Pb,greedy as hb,Layout as ml,ns64 as Tb,ns64be as Ib,nu64 as dl,nu64be as xb,offset as Bb,s16 as Sb,s16be as Kb,s24 as Cb,s24be as Rb,s32 as pl,s32be as Lb,s40 as Ob,s40be as Nb,s48 as Mb,s48be as _b,s8 as Vb,seq as fl,struct as Eb,Structure as yl,u16 as bl,u16be as Fb,u24 as vb,u24be as Wb,u32 as gl,u32be as Db,u40 as qb,u40be as Ub,u48 as Gb,u48be as Xb,u8 as wl,UInt as Al,union as zb,Union as Yb,unionLayoutDiscriminator as Qb,utf8 as jb}from"@solana/buffer-layout";var Dr=ml,Ws=yl;var Di=Al;var Ds=wl,Tt=bl;var qi=gl;var qs=dl;var _e=pl;var Us=fl;var de=ll;var Ui=cl;var $t=class extends Dr{constructor(t,n,i){super(t,i);this.blob=de(t),this.signed=n}decode(t,n=0){let i=new Gs(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Gs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},qr=class extends Dr{constructor(t){super(8,t);this._lower=Ui(qi(),!1),this._upper=Ui(qi(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function M(r){return new Di(1,r)}function We(r){return new Di(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function zs(r){return new $t(1,!0,r)}function Gr(r){return new $t(8,!0,r)}function Ys(r){return new $t(16,!0,r)}var Ur=class extends Dr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new Ur(de(32),e=>new kl(e),e=>e.toBuffer(),r)}function Ve(r){return new Ur(Ds(),Pl,hl,r)}function Pl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hl(r){return r?1:0}var Gi=class extends Ws{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new Gi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:Xs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Xs(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(r,i,t)}var qt=L([B("mint"),B("owner"),w("amount"),We("delegateOption"),B("delegate"),M("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),B("closeAuthority")]);function Tl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Xi(r,...e){if(!Tl(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function zi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Qs(r,e){Xi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var zr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),yt=(r,e)=>r<<32-e|r>>>e;var lg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Il(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Yi(r){return typeof r=="string"&&(r=Il(r)),Xi(r),r}var Xr=class{clone(){return this._cloneInto()}},mg={}.toString;function js(r){let e=n=>r().update(Yi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function xl(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var Hs=(r,e,t)=>r&e^~r&t,Zs=(r,e,t)=>r&e^r&t^e&t,Yr=class extends Xr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=zr(this.buffer)}update(e){zi(this);let{view:t,buffer:n,blockLen:i}=this;e=Yi(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=zr(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){zi(this),Qs(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;xl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=zr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Bl=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]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Qi=class extends Yr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Gt[m-15],p=Gt[m-2],y=yt(d,7)^yt(d,18)^d>>>3,f=yt(p,17)^yt(p,19)^p>>>10;Gt[m]=f+Gt[m-7]+y+Gt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=yt(a,6)^yt(a,11)^yt(a,25),p=l+d+Hs(a,u,c)+Bl[m]+Gt[m]|0,f=(yt(n,2)^yt(n,13)^yt(n,22))+Zs(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var $s=js(()=>new Qi);var Kg=se("Raydium_Util");function ea({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:fe(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Js.default,amount:new Cl(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Kl}){let t=Sl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Rl(r,t,e),seed:t}}function Rl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=$s(n);return new Js(i)}function ji(r){let{mint:e,tokenAccount:t,owner:n,programId:i=fn}=r;return Ll(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=fn}=r;return Ol(e,t,i,n,o)}async function It(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new Vl(a)),c=De({fromPublicKey:i,programId:fn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[_l.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:fn}),ji({mint:new Ml(Re.address),tokenAccount:c.publicKey,owner:o,programId:fn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function vn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=fn}){return Nl(r,e,t,BigInt(String(n)),i,o)}var Wn=class extends Te{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return fe(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:El},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ea({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Xt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u)return i&&s.equals(u),u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Qr(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new Qr(l)),d=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=Hi(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=p.instructions)==null||y.push(g),p.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&yn.decode(P.data).mint.equals(n)&&yn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(g),p.instructionTypes.push(_.CreateATA);if(n.equals(J)&&i.amount){let P=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(p.instructions.push(vn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:p}}else if(n.equals(J)){let g=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return p.instructions.push(...g.instructions||[]),p.endInstructions.push(...g.endInstructions||[]),p.signers.push(...g.signers||[]),p.instructionTypes.push(...g.instructionTypes||[]),p.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:p}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(yn.span),k=Fl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:yn.span,programId:l});return p.instructions.push(k,ji({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Xt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await Hi(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new Qr(J).equals(o)){let p=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Hi(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(Xt)&&yn.decode(f.data).mint.equals(o)&&yn.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:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Qr(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=ke(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=m,p=ke(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as om}from"@solana/spl-token";import{PublicKey as we,SystemProgram as sm}from"@solana/web3.js";import{PublicKey as aa}from"@solana/web3.js";var Zi=L([M("instruction")]),$i=L([M("instruction")]),vl=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Wl=L([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Dl=L([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),de(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),ql=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(vl,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),ta=new Proxy(Wl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),na=new Proxy(Dl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),Dn=new Proxy(ql,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return W(N({},o),{rewardType:((s=Object.entries(zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Ul=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ji=L([M("instruction"),w("nonce"),q(Ul,5,"rewardTimeInfo")]),eo=L([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),to=L([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),sw=L([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),qn=L([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),aw=L([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ra=L([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),ia=L([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=L([M("instruction"),w("amount")]),Gl=L([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),zs("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),oa=L([de(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(Gl,4,"votingMints"),Gr("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),Xl=L([Gr("startTime"),Gr("endTime"),M("kind"),q(M(),15,"reserved")]),zl=L([q(Xl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ve("isUsed"),Ve("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),sa=L([de(8),B("voterAuthority"),B("registrar"),q(zl,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var yw=se("Raydium_farm_config"),ua=new aa("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ca=new aa("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),la={3:ta,5:na,6:Dn},ma={3:qn,5:ra,6:ia},no=r=>[3,5,6].indexOf(r)!==-1,ro=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},zt={"Standard SPL":0,"Option tokens":1},bt={[_s.toString()]:3,[Vs.toString()]:5,[_n.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as jl,SYSVAR_CLOCK_PUBKEY as Xn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Hl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as Zl}from"@solana/spl-token";import Hr from"bn.js";function io(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function oo(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function so(r,e){return ie([e.toBuffer()],r)}function ao(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function uo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function co(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Un=se("Raydium.farm.util");function Gn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var da=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function pa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function lo(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function jr(r){let e=ma[r];return e||Un.logWithError("invalid version",r),e}function Yl(r){let e=la[r];return e||Un.logWithError("invalid version",r),e}function Ql(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new $e(0)))continue;let o=$e.min(new $e(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function Ow({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let d of e){let p=pe(d);p.version===6?s=!0:o=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:Je({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await Rn(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=Yl(p);(!b||!b.data||b.data.length!==P.span)&&Un.logWithError(`invalid farm state account info, pools.id, ${d}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Un.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=jr(p);b&&b.data&&(b.data.length!==P.span&&Un.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=Ql(c[d].state,c[d].lpVault,m,i));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=p.rewardInfos.map((g,P)=>{let k=y.rewardDebts[P];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(k)});c[d].wrapped=W(N({},c[d].wrapped),{pendingRewards:b})}return c}function Nw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ns(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ms(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function mo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=oa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=sa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var $l=se("Raydium_farm_instruction"),zn={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 fa(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||$l.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Zi.span);Zi.encode({instruction:s},a);let u=[A({pubkey:t}),A({pubkey:n}),A({pubkey:o,isWritable:!1}),A({pubkey:Jt.programId,isWritable:!1}),A({pubkey:jl,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function ya(r){var n;let e=Buffer.alloc(Ji.span);Ji.encode({instruction:0,nonce:new Hr(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Pi,A({pubkey:r.farmId}),A({pubkey:r.farmAuthority,isWritable:!1}),A({pubkey:r.lpVault}),A({pubkey:r.lpMint,isWritable:!1}),A({pubkey:r.lockVault}),A({pubkey:r.lockMint,isWritable:!1}),A({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(A({pubkey:i.rewardMint,isWritable:!1}),A({pubkey:i.rewardVault}),A({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function ba(r){let e=Buffer.alloc($i.span);$i.encode({instruction:5},e);let t=[A({pubkey:nt,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.authority,isWritable:!1}),A({pubkey:r.lpVault,isWritable:!1}),A({pubkey:r.rewardVault}),A({pubkey:r.userRewardToken}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function Jl(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=L([M("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...zn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function em(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...zn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function tm(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([M("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...zn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function nm(r,e,t,n,i,o){let s=L([M("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function rm(r,e,t,n,i,o,s,a){let u=L([M("voterBump"),M("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...zn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function im(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),We("periods"),Ve("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Zl,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...zn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:p,programId:r,data:f})}async function Hw({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=io(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=qn.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new Hr(0)))throw Error("user do not has new stake amount");let y=oo(e,a).publicKey,f=so(e,a).publicKey,{publicKey:b,nonce:g}=ao(n,c,s),P=fe(b,y,u).publicKey,{publicKey:k,nonce:T}=uo(n,c,s),h=co(t,i,o,s).publicKey,I=[],S=fe(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(Hl(s,S,s,y)),await r.getAccountInfo(b)===null){let j=nm(t,i,s,o,s,h);I.push(j,rm(n,c,b,k,s,s,g,T))}let{index:V,isInit:F}=await mo(r,c,b,y);return F||I.push(im(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(Jl(n,c,b,P,S,s,l,a,y,f,e,V,p),em(n,c,b,k)),I}async function Zw({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=io(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=qn.decode(m.data);if(d.voteLockedBalance.eq(new Hr(0)))throw Error("user has vote locked balance = 0");let p=oo(e,a).publicKey,y=so(e,a).publicKey,{publicKey:f}=ao(n,c,s),b=fe(f,p,u).publicKey,{publicKey:g}=uo(n,c,s),P=co(t,i,o,s).publicKey,k=[],{index:T,isInit:h}=await mo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return k.push(tm(n,c,f,s,P,g,b,fe(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),k}function po({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(eo.span);eo.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[A({pubkey:nt,isWritable:!1}),A({pubkey:n.id}),A({pubkey:n.lpVault,isWritable:!1}),A({pubkey:e}),A({pubkey:t}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function fo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(to.span);to.encode({instruction:4,isSet:new Hr(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...Pi,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:i.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function $w(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],d=Je({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},p);let y=n===6?[A({pubkey:nt,isWritable:!1}),...c?[A({pubkey:Jt.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new re(t.lpVault)}),A({pubkey:o[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(A({pubkey:o[f]})),y.push(A({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new re(t.rewardInfos[f].vault)})),y.push(A({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:p})}function Yn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[A({pubkey:nt,isWritable:!1}),A({pubkey:u}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new re(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Oe({programId:a,keys:m,data:l})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new re(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function ga(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new re(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[A({pubkey:nt,isWritable:!1}),A({pubkey:Jt.programId,isWritable:!1}),A({pubkey:u}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new re(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Oe({programId:a,keys:m,data:l})}var Hn=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:lo(W(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=_n,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new we(e.lpMint.address),lockInfo:{lockMint:ua,lockVault:ca},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Dn.span);u.addInstruction({instructions:[sm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Dn.span,programId:a.programId})]});let{publicKey:d,nonce:p}=da({programId:new we(a.programId),poolId:l.publicKey}),y=Gn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(zt[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(pa(T));let{rewardPubKey:h,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:T,payer:c});I&&u.addInstruction(I),h||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let S=T.mint.equals(Ce)?new we(Re.address):T.mint;b.push({rewardMint:S,rewardVault:Gn({programId:a.programId,poolId:l.publicKey,mint:S,type:"rewardVault"}),userRewardToken:h})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=ya({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:[P],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:i}){var b;let o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((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(Ce)?new we(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new we(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:Ce,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:[po({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((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(Ce)?new we(Re.address):m.mint,p=a.rewardInfos.findIndex(k=>new we(k.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Ce,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=po({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new we(Re.address):i.mint,m=Gn({programId:new we(n.programId),poolId:new we(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[fo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ce)?new we(Re.address):l.mint,d=Gn({programId:new we(n.programId),poolId:new we(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=fo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=bt[d];no(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new we(n.programId),new we(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let k={};for(let D of this.scope.account.tokenAccounts)if(a){let ee=fe(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&ee.equals(D.publicKey)&&(k[D.mint.toString()]=D.publicKey)}else k[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=k[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",k);let I=[];for(let D of m){let ee=s&&D.mint.address===J.toString(),te=k[D.mint.address];if(!te){let{account:oe,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({mint:new we(D.mint.address),notUseTokenAccount:ee,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!ee,associatedOnly:ee?!1:a,checkCreateATAOwner:u});te=oe,lt&&P.addInstruction(lt)}k[D.mint.address]=te,I.push(te)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=jr(p).decode(x.data)),n.programId!==_n.toString()&&!S){let{instruction:D,instructionType:ee}=fa({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[ee]})}let O=ro({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new we(D))},F=p===6?Aa(V):p===5?wa(V):ga(V),j={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[j[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=bt[n.programId];no(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 O of this.scope.account.tokenAccounts)if(u){let V=fe(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&V.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let O=Je({programId:new we(n.programId),poolId:new we(n.id),owner:this.scope.ownerPubKey,version:p}),V=await this.scope.connection.getAccountInfo(O);V||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:V}),jr(p).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===J.toString(),k=b[g.toString()];if(!k){let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new we(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});k=O,V&&f.addInstruction(V)}b[g.toString()]=k;let T=[];for(let O of d){let V=s&&O.mint.address===J.toString(),F=b[O.mint.address];if(!F){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new we(O.mint.address),notUseTokenAccount:V,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&f.addInstruction(D)}b[O.mint.address]=F,T.push(F)}let h=ro({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:k,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new we(O))},S=p===6?Yn(I):p===5?Qn(I):jn(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let i=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ce.toString()?new we(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:lo(W(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(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:[om(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=ba({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=fe(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(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,k=bt[f],T=b.address,h=n&&T===J.toString(),I=m[T];if(!I){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new we(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=j,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let j of g){let D=n&&j.mint.address===J.toString(),ee=m[j.mint.address];if(!ee){let{account:te,instructionParams:oe}=await this.scope.account.getOrCreateTokenAccount({mint:new we(j.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});ee=te,oe&&l.addInstruction(oe)}m[j.mint.address]=ee,S.push(ee)}let x=p[P],O={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(j=>new we(j))},V=k===6?Yn(O):k===5?Qn(O):jn(O),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[k]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ri}from"@solana/spl-token";var PA=L([We("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),We("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as am}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";var CA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new am(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},RA=({mint:r,decimals:e,programId:t=um,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},Zr=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),LA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=ke(o,["amount","isRaw","name"]);return new Ae(new he({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function OA(r){return r.address===Pt.address?Re:r}function NA(r){return r.address===Re.address?Pt:r}import{TOKEN_PROGRAM_ID as Zn,ASSOCIATED_TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as ye,TransactionInstruction as Mt,SystemProgram as Po,SYSVAR_RENT_PUBKEY as Im}from"@solana/web3.js";var yo=L([M("instruction"),w("amountIn"),w("minAmountOut")]),bo=L([M("instruction"),w("maxAmountIn"),w("amountOut")]),XA=L([M("instruction"),M("nonce")]),go=L([M("instruction"),M("nonce"),w("startTime")]),cm=L([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),q(w(),3,"padding")]),lm=L([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),q(w(),64,"padding")]),wo=L([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Ao=L([M("instruction"),w("amountIn")]),zA={4:cm,5:lm},Pa=L([w("fee")]);import{PublicKey as mm}from"@solana/web3.js";var gn=new mm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,dm=L([w("x"),w("y"),w("price")]),pm=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(dm,tn,"DataElement")]);function fm(r,e){return[0,tn-2]}function ym(r){return[0,tn-2]}function bm(r){return[0,tn-2]}function gm(r,e,t){let[n,i]=fm(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=tn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function ko(r,e,t){let[n,i,o]=gm(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function en(r,e,t){return e*r.multiplier/t}function ha(r,e,t){return e*t/r.multiplier}function wm(r,e){let[t,n]=ym(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Am(r,e){let[t,n]=bm(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Ta(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=wm(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function km(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Am(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function Pm(r,e){let t=Ta(r,e,0,!1);return t[3]?t[0]:0}function Ia(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,d]=Ta(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return ha(r,p,i)}}function xa(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,d]=km(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return ha(r,p,i)}}function hm(r){let e=pm.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ba(r,e,t,n){let i=Pm(r,en(r,e,ko(r,e,t)))/r.multiplier;return n?i:1/i}var bn=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(gn);e&&(this._layoutData=hm(e==null?void 0:e.data))}}};var Sa=se("Raydium_liquidity_instruction");function Ka(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(wo.span);wo.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:Ps},a);let u=[A({pubkey:Zn,isWritable:!1}),A({pubkey:new ye(e.id)}),A({pubkey:new ye(t.authority),isWritable:!1}),A({pubkey:new ye(t.openOrders),isWritable:!1}),A({pubkey:new ye(t.targetOrders)}),A({pubkey:new ye(e.lpMint.address)}),A({pubkey:new ye(t.vault.A)}),A({pubkey:new ye(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(A({pubkey:gn})),u.push(A({pubkey:new ye(e.marketId),isWritable:!1}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:new ye(t.marketEventQueue),isWritable:!1})),new Mt({programId:new ye(e.programId),keys:u,data:a})}function ho(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=pe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Ao.span);Ao.encode({instruction:4,amountIn:X(i)},a);let u=[A({pubkey:Zn,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.mintLp.address}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return s===5?u.push(A({pubkey:gn})):(u.push(A({pubkey:o.id})),u.push(A({pubkey:o.id}))),u.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function Ca({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:k,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=L([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:Zn,isSigner:!1,isWritable:!1},{pubkey:Tm,isSigner:!1,isWritable:!1},{pubkey:Po.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey: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}],V=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:k,coinAmount:T,pcAmount:h},V),{instruction:new Mt({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function uk(r){let e=L([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ye(r.id),isWritable:!1}),A({pubkey:new ye(r.authority),isWritable:!1}),A({pubkey:new ye(r.openOrders),isWritable:!1}),A({pubkey:new ye(r.vault.A),isWritable:!1}),A({pubkey:new ye(r.vault.B),isWritable:!1}),A({pubkey:new ye(r.mintLp.address),isWritable:!1}),A({pubkey:new ye(r.marketId),isWritable:!1}),A({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new ye(r.programId),keys:n,data:t})}function xm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=pe(r),s=Buffer.alloc(yo.span);yo.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[A({pubkey:Zn,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders})];return i===4&&a.push(A({pubkey:o.targetOrders})),a.push(A({pubkey:o.vault.A}),A({pubkey:o.vault.B})),i===5&&a.push(A({pubkey:gn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Bm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=pe(r),s=Buffer.alloc(bo.span);bo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[A({pubkey:Po.programId,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return i===5&&a.push(A({pubkey:gn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function $r(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return xm(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Bm(W(N({},a),{maxAmountIn:i,amountOut:o}),t);Sa.logWithError("invalid params","params",r)}throw Sa.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function ck({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(go.span);go.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=pe(r),o=[A({pubkey:Zn,isWritable:!1}),A({pubkey:Po.programId,isWritable:!1}),A({pubkey:Im,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.mintA.address,isWritable:!1}),A({pubkey:i.mintB.address,isWritable:!1}),A({pubkey:i.vault.A,isWritable:!1}),A({pubkey:i.vault.B,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:i.id,isWritable:!1}),A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Ra({poolKeys:r}){let e=L([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ye(r.id),isWritable:!1}),A({pubkey:new ye(r.authority),isWritable:!1}),A({pubkey:new ye(r.openOrders),isWritable:!1}),A({pubkey:new ye(r.vault.A),isWritable:!1}),A({pubkey:new ye(r.vault.B),isWritable:!1}),A({pubkey:new ye(r.mintLp.address),isWritable:!1}),A({pubkey:new ye(r.marketId),isWritable:!1}),A({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new ye(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ee,TOKEN_2022_PROGRAM_ID as Qt,ASSOCIATED_TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as gt,SystemProgram as wn,Keypair as Ro}from"@solana/web3.js";import ja from"bn.js";import Em from"bn.js";function La(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function mk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function dk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function Jr(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function To(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Io(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function $n(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Oa(r,e){return $n(r,e)?null:To(r,e)}function Na(r,e){return $n(r,e)?null:Io(r,e)}var Sm=Buffer.from("amm_config","utf8"),Km=Buffer.from("pool","utf8"),Cm=Buffer.from("pool_vault","utf8"),Rm=Buffer.from("pool_reward_vault","utf8"),Ma=Buffer.from("position","utf8"),Lm=Buffer.from("tick_array","utf8"),Om=Buffer.from("operation","utf8"),Nm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function bk(r,e){return ie([Sm,La(e)],r)}function _a(r,e,t,n){return ie([Km,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function xo(r,e,t){return ie([Cm,e.toBuffer(),t.toBuffer()],r)}function Va(r,e,t){return ie([Rm,e.toBuffer(),t.toBuffer()],r)}function be(r,e,t){return ie([Lm,e.toBuffer(),Jr(t)],r)}function nn(r,e,t,n){return ie([Ma,e.toBuffer(),Jr(t),Jr(n)],r)}function xt(r,e){return ie([Ma,e.toBuffer()],r)}function ei(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function Jn(r){return ie([Om],r)}function st(r,e){return ie([Nm,e.toBuffer()],r)}import Bt from"bn.js";var me=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ti=new Bt(1).shln(128),Bo=it.sub(rt),er=64,Ea=ti.subn(1),qe=-443636,Qe=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Fa=16,va="59543866431248",Wa="184467440737095516",Da="15793534762490258745",ni=new Bt(10).pow(new Bt(6)),Mm=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Mm||{}),Ak={[500]:10,[3e3]:60,[1e4]:200},kk={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},qa={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:[]},Pk=new Bt("18446744073700000000");var _m=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_m/2));for(let p=0;p<l.length;p++){let{publicKey:y}=be(t,n,l[p]);u.push(y)}let m=(await ht(e,u)).map(p=>p!==null?tr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(N({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Le-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<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=be(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Le;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=be(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(U.checkIsOutOfBoundary(e)){if(e>Qe)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Be from"bn.js";var So=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Oa(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=Na(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},nr=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;if(Qe<=t)throw Error(`extensionTickBoundary check error: ${Qe}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=$n(512,u)?null:To(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=$n(512,u)?null:Io(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var rr=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ct(0),a=new Ct(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,i),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,it),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,it),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,k;let a=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ue.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[xe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),xe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[xe(new Ct(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),xe(new Ct(new E(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Ua}from"@solana/spl-token";var Ue=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=be(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?nr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=be(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=be(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/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=nr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Qe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(N({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Yt(d)});if(p.tokenMint.equals(Yt.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let y=new Be(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=Z.mulDivFloor(f,p.emissionsPerSecondX64,it),k=p.rewardTotalEmissioned.add(P);s.push(W(N({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:k,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ce.getArrayStartIndex(Qe,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Rn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=be(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Rn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=tr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(xt(p,d).publicKey);let l=await ht(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Xa.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:T}=ue.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:k,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>W(N({},x),{pendingReward:new Be(0)})),leverage:h,tokenFeeAmountA:new Be(0),tokenFeeAmountB:new Be(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await ht(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=tr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,k=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[k].toString()],I=T.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await rr.GetPositionFees(f,g,I,S),V=await rr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Be(0))?x:new Be(0),g.tokenFeeAmountB=O.gte(new Be(0))?O:new Be(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Be(0))?V[F]:new Be(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var V;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 E(0))?u=c?St.add(new Be(1)):Kt.sub(new Be(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=xe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:me),u),g=xe(p,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),k=c?P:new E(1).div(P),T=p.mul(new Be(Math.floor((1-s)*1e10))).div(new Be(1e10)),h=xe(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(k).sub(I).abs(),x=I,O=new tt(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:Zt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:O,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(N({},u),{mint:u.address,isToken2022:u.programId===Ua.toBase58()})),new he(W(N({},c),{mint:c.address,isToken2022:c.programId===Ua.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:k,remainingAccounts:T}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},d),{amount:new Ae(l,d.amount),fee:d.fee===void 0?void 0:new Ae(l,d.fee)}),I=W(N({},p),{amount:new Ae(m,p.amount),fee:p.fee===void 0?void 0:new Ae(m,p.fee)}),S=W(N({},y),{amount:new Ae(m,y.amount),fee:y.fee===void 0?void 0:new Ae(m,y.fee)}),x=new ot({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new ot({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new Ae(l,k);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:O,priceImpact:P,fee:V,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[xi(e.mintA.address).toString()],d=i[xi(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=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:k}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(k.toString()).div(new E(10).pow(y)).mul(d.value)),S=new E(T.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(d.value)),x=S.div(I.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,j=e.rewardDefaultInfos.map(D=>{var oe,lt;let ee=D.mint.decimals,te=i[D.mint.address];return u<((oe=D.startTime)!=null?oe:0)||u>((lt=D.endTime)!=null?lt:0)||!D.perSecond||!te||ee===void 0?0:new E(te.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(ee)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:j,apr:V+j.reduce((D,ee)=>D+ee,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=xe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Be(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,d,f,!a):new Be(0);else if(l.lte(d)){let k=ue.getLiquidityFromTokenAmountA(l,d,f,!a),T=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?k:T}else b=t?new Be(0):ue.getLiquidityFromTokenAmountB(m,d,f);return Ue.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,k;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[xe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),xe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[xe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),xe(m.amountB.muln(l),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=Ga.decode(i.data),s=st(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function sP({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var k,T,h,I;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[xe(m,(k=r.mintA.extensions)==null?void 0:k.feeConfig,a,!u),xe(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var Z=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(rt)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(rt)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ti).sub(t).mod(ti)}};function Ne(r,e){return Ko(r.mul(e),64,256)}function Vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ko(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(er);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,rt,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,i){let o=n.shln(er);if(i)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,rt,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<qe||e>Qe)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=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=Ea.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=Vm(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<Fa;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ne(va)),d=Ko(m.sub(new ne(Wa)),64,128).toNumber(),p=Ko(m.add(new ne(Da)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},sn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(er),s=t.sub(e);return i?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),rt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?Z.mulDivCeil(n,t.sub(e),it):Z.mulDivFloor(n,t.sub(e),it)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?Z.mulDivRoundingUp(a,rt,Bo):a.shrn(er)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Bo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new E(u.toString()).mul(l).toFixed(0)),d=new ne(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,k,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[xe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),xe(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)],[b,g]=[xe(new ne(new E(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),xe(new ne(new E(p.amountB.toString()).mul(d).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))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(Kt))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(me),b={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+ce.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,P=n[p],k=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(k>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=Ue.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");g=V.nextStartIndex;let{publicKey:F}=be(e,t,g);x=F,P=n[g],S=U.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),h.tickNext<qe?h.tickNext=qe:h.tickNext>Qe&&(h.tickNext=Qe),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let O;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?O=y:O=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=on.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let V=S.liquidityNet;s&&(V=V.mul(_t)),b.liquidity=ue.addDelta(b.liquidity,V)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=V!=b.tick&&!s&&P.startTickIndex===V,b.tick=V}++k}try{let{nextStartIndex:h,isExist:I}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(be(e,t,h).publicKey),p=h)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(me);if(u){let l=Z.mulDivFloor(i,ni.sub(new ne(o.toString())),ni);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),ni.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=be(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Em(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=be(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>Qe}static nextInitTick(e,t,n,i,o){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var RP=L([de(8),M("bump"),Tt("index"),B(""),We("protocolFeeRate"),We("tradeFeeRate"),Tt("tickSpacing"),q(w(),8,"")]),Fm=L([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Co=L([de(8),Ve("initialized"),B("poolId"),q(Fm,1e3,"observations"),q(z(),5,"")]),vm=L([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),Ga=L([de(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),Tt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),_e("tickCurrent"),Tt("observationIndex"),Tt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(vm,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")]),Wm=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),Xa=L([de(8),M("bump"),B("nftMint"),B("poolId"),_e("tickLower"),_e("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Wm,3,"rewardInfos"),q(w(),8,"")]),LP=L([de(8),M("bump"),B("poolId"),_e("tickLowerIndex"),_e("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Dm=L([_e("tick"),Ys("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),tr=L([de(8),B("poolId"),_e("startTickIndex"),q(Dm,Le,"ticks"),M("initializedTickCount"),q(M(),115,"")]),Ya=L([de(329),q(B(),100,"whitelistMints")]),za=L([de(8),B("poolId"),q(q(w(),8),So,"positiveTickArrayBitmap"),q(q(w(),8),So,"negativeTickArrayBitmap")]);var Ha=se("Raydium_Clmm"),wt={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,i,o,s,a,u,c,l,m,d,p,y){let f=L([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let P=Buffer.from([...wt.createPool,...g]);return new gt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=De({fromPublicKey:i,programId:n}),[d,p]=[new v(o.address),new v(s.address)],y=[wn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Co.span),space:Co.span,programId:n})],{publicKey:f}=_a(n,a,d,p),{publicKey:b}=xo(n,f,d),{publicKey:g}=xo(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new v(o.programId||Ee),p,g,new v(s.programId||Ee),st(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=L([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],ee=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},ee);let te=Buffer.from([...wt.openPosition,...ee]);return new gt({keys:D,programId:e,data:te})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Ro.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,p,f),{publicKey:P}=be(d,p,b),{publicKey:k}=fe(n.wallet,y,Ee),{publicKey:T}=ei(y),{publicKey:h}=xt(d,y),{publicKey:I}=nn(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Ro.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,p,f),{publicKey:P}=be(d,p,b),{publicKey:k}=fe(n.wallet,y,Ee),{publicKey:T}=ei(y),{publicKey:h}=xt(d,y),{publicKey:I}=nn(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?st(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=L([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],ee=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new ja(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},ee);let te=Buffer.from([...wt.openPosition,...ee]);return new gt({keys:D,programId:e,data:te})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new v((await l(1))[0]);else{let x=Ro.generate();d.push(x),m=x.publicKey}let[p,y]=[new v(e.programId),new v(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,y,f),{publicKey:P}=be(p,y,b),{publicKey:k}=fe(n.wallet,m,Ee),{publicKey:T}=ei(m),{publicKey:h}=xt(p,m),{publicKey:I}=nn(p,y,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?st(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:d,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=L([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...wt.closePosition,...u]);return new gt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=fe(n.wallet,i.nftMint,Ee),{publicKey:a}=xt(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...wt.increaseLiquidity,...I]);return new gt({keys:h,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(u,c,l),{publicKey:p}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(u,c,l),{publicKey:p}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:new ja(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...wt.increaseLiquidity,...I]);return new gt({keys:h,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=L([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],S=Buffer.alloc(T.span);T.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...wt.decreaseLiquidity,...S]);return new gt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(c,l,m),{publicKey:y}=be(c,l,d),{publicKey:f}=fe(i.wallet,n.nftMint,u),{publicKey:b}=xt(c,n.nftMint),{publicKey:g}=nn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new v(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new v(e.rewardDefaultInfos[T].mint.address)});let k=[];return k.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,p,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?st(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:k,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g){let P=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ve("isBaseInput")]),k=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],h=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...wt.swap,...h]);return new gt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,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===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:y,f?y:p,u,m,o,s,a,!0,st(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...wt.initReward,...f]);return new gt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=Va(o,s,i.mint).publicKey,u=Jn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([M("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Ee,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:X(l),endTime:X(m)},f);let b=Buffer.from([...wt.setRewardEmissions,...f]);return new gt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.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)&&Ha.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Jn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([M("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...wt.collectReward,...l]);return new gt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Ha.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,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===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Xm}from"@solana/web3.js";import{PublicKey as Um}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),qm={4:3,5:3};var Gm=se("Raydium_liquidity_serum");function eu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Um.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Gm.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import ir from"bn.js";function Oo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function zm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ym({programId:r}){return ie([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ym({programId:a}),p=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=zm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=eu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:k,lookupTableAccount:Xm.default,configId:Oo({programId:a})}}var Lo;async function ah({connection:r,poolKeysList:e,config:t}){Lo||(Lo=new bn({connection:r}),await Lo.initStableModelLayout());let n=e.map(s=>Ra({poolKeys:s}));return(await Cs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Rs(s,"GetPoolData"),u=new ir(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),d=new ir(Ot(a,"pool_coin_amount")),p=new ir(Ot(a,"pool_pc_amount")),y=new ir(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new ir(f)}})}import Ge from"bn.js";var or=class extends Te{constructor(t){super(t);this.stableLayout=new bn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Ge(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Zr(t[o?"mintB":"mintA"]),[u,c]=[new Ge(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ge(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ge(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let d=ze;s.isZero()||(d=m==="base"?Cr(s.mul(c),u):Cr(s.mul(u),c));let p=Cr(s.mul(l),new Ge(m==="base"?t.mintAmountA:t.mintAmountB).mul(new Ge(10).pow(new Ge(t[m==="base"?"mintA":"mintB"].decimals)))),f=new tt(new Ge(1)).add(i).mul(d).quotient,b=new Ae(a,d),g=new Ae(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new et(n.lpMint.address)}),P=[p,y],k=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),k.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[O,V]=k,[F,j]=T,D=await this.getAmmPoolKeys(n.id),ee=this.createTxBuilder(),Et=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:te}=Et,oe=ke(Et,["tokenAccount"]);ee.addInstruction(oe);let br=await l.handleTokenAccount({side:"in",amount:j,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:lt}=br,hn=ke(br,["tokenAccount"]);ee.addInstruction(hn);let Tn=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:di}=Tn,pi=ke(Tn,["tokenAccount"]);return ee.addInstruction(pi),ee.addInstruction({instructions:[Ka({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:te,quoteTokenAccount:lt,lpTokenAccount:di,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:j,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),ee.addCustomComputeBudget(c),u===0&&await ee.buildV0(),ee.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:k}=S,T=ke(S,["tokenAccount"]);b.addInstruction(T);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=ke(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[ho({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:k,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=ri,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 te of this.scope.account.tokenAccountRawInfos)(b[te.accountInfo.mint.toString()]===void 0||fe(this.scope.ownerPubKey,te.accountInfo.mint,ri).publicKey.equals(te.pubkey))&&(b[te.accountInfo.mint.toString()]=te.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new Ge(0)),k=t.mintA.address===he.WSOL.mint.toString(),T=t.mintB.address===he.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ri,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ri,mint:new et(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let te=[];for(let Et of s.rewardInfos){let br=Et.mint.address===he.WSOL.mint.toString();if(b[Et.mint.address])te.push(b[Et.mint.address]);else{let{account:Tn,instructionParams:Qo}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!br,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Tn||this.logAndCreateError("farm reward account not found:",Et.mint.address),Qo&&f.addInstruction(Qo),te.push(Tn)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],lt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:te},hn=bt[s.programId],di=hn===6?Yn(lt):hn===5?Qn(lt):jn(lt),pi={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[di],instructionTypes:[pi[hn]]})}let O=await this.getAmmPoolKeys(t.id),V=ho({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[F,j]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),ee=await Ie.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:j},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...ee.instructions],signers:ee.signers,instructionTypes:[...ee.instructionTypes],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var j;let b=c.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),g=c.useSOLBalance&&i.mint.equals(nu),P=c.useSOLBalance&&o.mint.equals(nu),k=this.createTxBuilder(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});k.addInstruction(h||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(k.addInstruction(S||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:V,instructionType:F}=Ca(W(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:fe(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return k.addInstruction({instructions:[V],instructionTypes:[F]}),k.addCustomComputeBudget(f),k.versionBuild({txVersion:p,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=Oo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Pa.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Es.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let x=Ba(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new Ge(0),g=new Ge(0);if(!f.isZero())if(p){g=Fn(f.mul($a),Ja);let x=f.sub(g),O=m.add(x);b=d.mul(x).div(O)}else{g=f.mul(new Ge(2)).div(new Ge(1e4));let x=f.sub(g);l==="quote"?b=new Ge(Ia(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new Ge(xa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new Ge(new E(b.toString()).mul(1-s).toFixed(0)),k=b,T=P,h=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:k,minAmountOut:T,currentPrice:y,executionPrice:h,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new et(l.address),programId:new et(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=ke(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=ke(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),c.addInstruction({instructions:[$r({version:k,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[k===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ae}from"@solana/web3.js";import At from"bn.js";var sr=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ae.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new At(new ae(i.address).toBuffer()).gt(new At(new ae(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.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(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},qa),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),k=n.useSOLBalance&&e.mintB.address===J.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(O||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:W(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(F),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});k&&(f=k),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id);console.log(123123444,S);let x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===J.toString(),y=i.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,P&&d.addInstruction(P);let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(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=k,T&&d.addInstruction(T);let h=[];for(let O of t.rewardDefaultInfos){let V=i.useSOLBalance&&O.mint.address===J.toString(),F;if(O.mint.address===t.mintA.address)F=f;else if(O.mint.address===t.mintB.address)F=b;else{let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(O.mint.programId),mint:new ae(O.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&d.addInstruction(D)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let O=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),x=N(N({},x),O.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(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:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ae(l.mint.programId),mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(J),{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 At(new E(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=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:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=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:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===J.toBase58(),p=s.useSOLBalance&&e.mintB.address===J.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?St.add(new At(1)):Kt.sub(new At(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});f=P,k&&m.addInstruction(k)}let b;if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});b=P,k&&m.addInstruction(k)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ae(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?fe(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(k=>!k.liquidity.isZero()||k.rewardInfos.find(T=>!T.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),y=n.useSOLBalance&&d.mintB.address===J.toString(),f=c[d.mintA.address];if(!f){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ae(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=k,T&&l.addInstruction(T)}let b=c[d.mintB.address];if(!b){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ae(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=k,T&&l.addInstruction(T)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let k of d.rewardDefaultInfos){let T=n.useSOLBalance&&k.mint.address===J.toString(),h=c[k.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(k.mint.programId),mint:new ae(k.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,S&&l.addInstruction(S)}c[k.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(d.id);for(let k of t[m.id]){let T=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:k,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new At(0),amountMinA:new At(0),amountMinB:new At(0)});l.addInstruction(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Jn(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(ae.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as oi,TOKEN_PROGRAM_ID as jt,AccountLayout as pu}from"@solana/spl-token";var Qm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),jm=Buffer.from("amm_config","utf8"),Hm=Buffer.from("pool","utf8"),Zm=Buffer.from("pool_lp_mint","utf8"),$m=Buffer.from("pool_vault","utf8"),Jm=Buffer.from("observation","utf8");function ed(r){return ie([Qm],r)}function td(r,e){return ie([jm,id(e)],r)}function nd(r,e,t,n){return ie([Hm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function rd(r,e){return ie([Zm,e.toBuffer()],r)}function ru(r,e,t){return ie([$m,e.toBuffer(),t.toBuffer()],r)}function ii(r,e){return ie([Jm,e.toBuffer()],r)}function id(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=td(r,0).publicKey,i=ed(r).publicKey,o=nd(r,n,e,t).publicKey,s=rd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ii(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ar}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No,TOKEN_2022_PROGRAM_ID as su,ASSOCIATED_TOKEN_PROGRAM_ID as od}from"@solana/spl-token";var ou=se("Raydium_Cpmm_ins"),ur={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 au(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:od,isSigner:!1,isWritable:!1},{pubkey:gs,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:k},I),new ar({keys:h,programId:r,data:Buffer.from([...ur.initialize,...I])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){ou.info(123123,{mintA:c.toBase58(),mintB:l.toBase58(),lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()});let f=L([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return ou.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.deposit,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.withdraw,...g])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=L([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseInput,...P])})}function mu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=L([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseOutput,...P])})}import at from"bn.js";var KT=L([de(8),M("bump"),Ve("disableCreatePool"),Tt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),du=L([de(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var cr=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e){let t=await this.scope.connection.getAccountInfo(new Y(e));if(!t)throw new Error(`pool not found: ${e}`);let n=du.decode(t.data),[i,o]=await this.scope.connection.getMultipleAccountsInfo([n.vaultA,n.vaultB]);if(!i)throw new Error(`pool vaultA info not found: ${n.vaultA.toBase58()}`);if(!o)throw new Error(`pool vaultB info not found: ${n.vaultB.toBase58()}`);return W(N({},n),{baseReserve:new at(pu.decode(i.data).amount.toString()).sub(n.protocolFeesMintA).sub(n.fundFeesMintA),quoteReserve:new at(pu.decode(o.data).amount.toString()).sub(n.protocolFeesMintB).sub(n.fundFeesMintB)})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var j,D,ee;let d=i.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),p=new at(new Y(c.mintA.address).toBuffer()).lte(new at(new Y(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===oi.toBase58(),k=i.useSOLBalance&&f.address===oi.toBase58(),[T,h]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:k?{payer:d,amount:g}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||O===void 0)throw Error("you don't has some token account");let F=iu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[au(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,fe(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:jt),new Y((ee=f.programId)!=null?ee:jt),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeBudgetConfig:s,config:a,txVersion:u}=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:c}=this.scope,{bypassAssociatedCheck:l,checkCreateATAOwner:m}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),d=await this.getRpcPoolInfo(t.id),{liquidity:p,anotherAmount:y}=this.computePairAmount({poolInfo:W(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),f=y.raw,b=t.mintA.address===oi.toString(),g=t.mintB.address===oi.toString(),P=this.createTxBuilder(),[k,T]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||(i?n:f).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:f}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(I||{});let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i?f:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?f:n}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(x||{}),!h&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",c.tokenAccounts);let O=await c.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),D=await c.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:O,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:V}=D,F=ke(D,["tokenAccount"]);P.addInstruction(F);let j=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[uu(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),V,h,S,new Y(j.vault.A),new Y(j.vault.B),k,T,new Y(t.lpMint.address),p,i?n:f,i?f:n)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),P.addCustomComputeBudget(s),P.versionBuild({txVersion:u})}async withdrawLiquidity(e){let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new tt(new at(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],{account:m}=this.scope,d=this.createTxBuilder(),[p,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=p.equals(J),b=y.equals(J),g,P,{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});g=k,T&&d.addInstruction(T);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:!b,checkCreateATAOwner:!1});P=h,I&&d.addInstruction(I),(!g||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let S=await m.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});S||this.logAndCreateError("cannot found lp token account","tokenAccounts",m.tokenAccounts);let x=await this.getCpmmPoolKeys(t.id);return d.addInstruction({instructions:[cu(new Y(t.programId),this.scope.ownerPubKey,new Y(x.authority),new Y(t.id),S,g,P,new Y(x.vault.A),new Y(x.vault.B),p,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),d.addCustomComputeBudget(o),d.versionBuild({txVersion:s})}async swap(e){var T,h,x,O,V,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new Y(t.mintA.address),new Y(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:jt),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:jt),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=ke(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=ke(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?lu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),f,g,new Y(k.vault.A),new Y(k.vault.B),new Y((x=t.mintA.programId)!=null?x:jt),new Y((O=t.mintB.programId)!=null?O:jt),m,d,ii(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):mu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),g,f,new Y(k.vault.B),new Y(k.vault.A),new Y((V=t.mintB.programId)!=null?V:jt),new Y((F=t.mintA.programId)!=null?F:jt),d,m,ii(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,baseIn:i}){let o=new at(new E(t).mul(10**e[i?"mintA":"mintB"].decimals).toFixed(0)),s=Zr(e[i?"mintB":"mintA"]),[a,u]=[new at(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new at(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],c=new at(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",a.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?e.mintA.symbol:e.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",i?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let l=i?"base":"quote";this.logDebug("input side:",l);let m=o.mul(c).div(l==="base"?a:u),d=ze;o.isZero()||(d=sd(m,a,u,c)[i?"amountB":"amountA"]);let y=new tt(new at(1)).add(n).mul(d).quotient,f=new Ae(s,d),b=new Ae(s,y);return this.logDebug("anotherAmount:",f.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:f,maxAnotherAmount:b,liquidity:m}}};function sd(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new at(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new at(1))),{amountA:i,amountB:o}}var lr=class extends Te{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(J));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),vn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[vn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as ad}from"@solana/spl-token";import{PublicKey as ud,Transaction as Mo,TransactionInstruction as cd}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Te{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.getPdaOwnerId(t,m,i,l).publicKey));let u=await ht(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!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(0))).filter(x=>!x).length!==3,I=o>k&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Xe.VERSION_PROJECT[m],openTime:k,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,O)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[O].debtAmount.add(P.tokenInfo[O].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,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:[Xe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,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:[Xe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Nr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Mo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Mo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Mo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:ad,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new cd({keys:o,programId:e,data:a})}},ut=Xe;ut.CLAIMED_NUM=3,ut.POOL_LAYOUT=L([de(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(L([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),ut.OWNER_LAYOUT=L([de(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(L([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),ut.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new ud(e)),ut.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ut.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import mr from"bn.js";import{TransactionInstruction as md,SYSVAR_RENT_PUBKEY as dd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function ld(r="accountFlags"){let e=new qr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var _o=L([de(5),ld("accountFlags"),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]);function pd({programId:r,marketInfo:e}){let t=L([M("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),Tt("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:dd,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new md({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(_o.span),space:_o.span,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),pd({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:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:o,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var An=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new mr(100);function P(){let V=new mr(0);for(;;)try{return{vaultOwner:Vo.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new mr(25555)))throw Error("find vault owner error")}}let{vaultOwner:k,vaultSignerNonce:T}=P(),h=new mr(Math.round(10**e.decimals*n)),I=new mr(Math.round(n*10**t.decimals*i));if(h.eq(ze))throw Error("lot size is too small");if(I.eq(ze))throw Error("tick size or lot size is too small");let S=await wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:k,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});let O=[];for await(let V of S.slice(1,S.length)){let F=this.createTxBuilder();F.addCustomComputeBudget(a),F.addInstruction({instructions:V.transaction.instructions,signers:V.signer,instructionTypes:V.instructionTypes});let j=await F.versionBuild({txVersion:s});O.push(j)}return x.versionMultiBuild({extraPreBuildData:O,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Vo(e.mint),quoteMin:new Vo(t.mint)}},txVersion:s})}};import{PublicKey as pr}from"@solana/web3.js";import{PublicKey as fd,TransactionInstruction as Fo,SYSVAR_CLOCK_PUBKEY as yd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";var Eo=L([M("instruction"),qs("amount")]),dr=L([M("instruction")]);function HI({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new fd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:vo,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Ii,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(Eo.span);return Eo.encode({instruction:1,amount:Number(e)},i),new Fo({keys:n,programId:r,data:i})}function si({programId:r},e){let t=[{pubkey:vo,isSigner:!1,isWritable:!1},{pubkey:Ii,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(dr.span);return dr.encode({instruction:2},n),new Fo({keys:t,programId:r,data:n})}function Wo(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(dr.span);dr.encode({instruction:2},s);let a=[{pubkey:vo,isWritable:!1,isSigner:!1},{pubkey:yd,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Fo({programId:e.programId,keys:a,data:s})}import ku from"bn.js";var bd={[Vn.IDO_PROGRAM_ID_V1.toString()]:1,[Vn.IDO_PROGRAM_ID_V2.toString()]:2,[Vn.IDO_PROGRAM_ID_V3.toString()]:3,[Vn.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=bd[t.programId];a||this.logAndCreateError("invalid version",a);let u=pe(t),[c,l]=[!new ku(e.coin).isZero(),!new ku(e.pc).isZero()],m=u.projectInfo.mint.address.equals(J),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[si({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[si({programId:new pr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[si({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new pr(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 pr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Wo(W(N({},g),{side:"base"}))]:[],...l?[Wo(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as gd}from"@solana/web3.js";import{MintLayout as wd,TOKEN_2022_PROGRAM_ID as Do,TOKEN_PROGRAM_ID as qo}from"@solana/spl-token";var fr=class extends Te{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(Pt.address,Pt),this._mintGroup.official.add(Pt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,W(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?Do.toBase58():qo.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?Do.toBase58():qo.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Do.toBase58():qo.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Pt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new gd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=wd.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 ai=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n,this._owner=i?new pt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=se("Raydium"),this.farm=new Hn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Wn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new or({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new fr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new lr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new sr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new cr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new ut({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new An({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({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){let t=Ad({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new vr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new ai(W(N({},t),{api:u}));return await c.fetchAvailabilityStatus(e.disableFeatureCheck),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Wr);return this._owner.publicKey}setOwner(e){return this._owner=e?new pt(e):void 0,this}get connection(){if(!this._connection)throw new Error(vs);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(Wr),new Error(Wr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()-e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as Xo,TOKEN_2022_PROGRAM_ID as Uo}from"@solana/spl-token";import{PublicKey as ct,TransactionInstruction as zo,SystemProgram as hu}from"@solana/web3.js";import Go from"bn.js";function nB(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([M("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1},{pubkey:new ct(t.programId),isSigner:!1,isWritable:!1},{pubkey:new ct(t.id),isSigner:!1,isWritable:!0},{pubkey:new ct(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=pe(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=pe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=pe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new zo({keys:p,programId:r,data:y})}function rB(r,e,t,n,i,o,s,a,u,c){let l=L([M("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new ct(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=pe(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=pe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=pe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new zo({keys:m,programId:r,data:d})}function Pu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=pe(e),u=s.mintA.address===t;return[{pubkey:new ct(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Uo)||a.mintB.programId.equals(Uo)?[{pubkey:Uo,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:st(new ct(String(r.programId)),new ct(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function kd(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=L([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1}];f.push(...Pu(a,c,o,t,n,p[0])),f.push(...Pu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new zo({keys:f,programId:r,data:b})}async function iB({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=pe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await Ie.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new Go(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[$r({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Go(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?_.AmmV5SwapBaseIn:_.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],p=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[kd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,d,p,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Go(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var Yo=new Iu(1e6);function Pd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var ui=class{static tradingFee(e,t){return Pd(e,t,Yo)}static protocolFee(e,t){return Tu(e,t,Yo)}static fundFee(e,t){return Tu(e,t,Yo)}};import yr from"bn.js";function ci(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function hd(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=ci(r,e);if(n.gt(Pn)){t=t.add(new yr(1));let i=r.div(t);n=ci(r,t),n.gt(Pn)&&(i=i.add(new yr(1)))}return[t,e]}var Pn=new yr(0),li=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=hd(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return ci(e.mul(n),t).gt(Pn)&&s.gt(Pn)&&(s=s.add(new yr(1))),ci(e.mul(i),t).gt(Pn)&&a.gt(Pn)&&(a=a.add(new yr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=ui.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=li.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[Ei.toBase58()]:3},Ku={3:Ei};var Td=L([de(5),de(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]),Cu={3:Td};import{PublicKey as Ru}from"@solana/web3.js";var mi=se("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||mi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||mi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||mi.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return mi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var $B=r=>r;export{Sm as AMM_CONFIG_SEED,RP as AmmConfigLayout,Fa as BIT_PRECISION,sr as Clmm,Ie as ClmmInstrument,li as ConstantProductCurve,KT as CpmmConfigInfoLayout,ui as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,dm as DataElement,So as EXTENSION_TICKARRAY_BITMAP_SIZE,ua as FARM_LOCK_MINT,ca as FARM_LOCK_VAULT,bt as FARM_PROGRAM_TO_VERSION,ma as FARM_VERSION_TO_LEDGER_LAYOUT,la as FARM_VERSION_TO_STATE_LAYOUT,ni as FEE_RATE_DENOMINATOR,Yo as FEE_RATE_DENOMINATOR_VALUE,_m as FETCH_TICKARRAY_COUNT,Mm as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,qm as LIQUIDITY_VERSION_TO_SERUM_VERSION,zA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,va as LOG_B_2_X32,Wa as LOG_B_P_ERR_MARGIN_LOWER_X64,Da as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,_o as MARKET_STATE_LAYOUT_V2,Td as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,Qe as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,gn as MODEL_DATA_PUBKEY,Lu as Market,Z as MathUtil,Bo as MaxU64,Ea as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,Om as OPERATION_SEED,Co as ObservationInfoLayout,Fm as ObservationLayout,Ya as OperationLayout,Rm as POOL_REWARD_VAULT_SEED,Km as POOL_SEED,Nm as POOL_TICK_ARRAY_BITMAP_SEED,Cm as POOL_VAULT_SEED,Ma as POSITION_SEED,Ga as PoolInfoLayout,Ue as PoolUtils,Xa as PositionInfoLayout,Wm as PositionRewardInfoLayout,rr as PositionUtils,LP as ProtocolPositionLayout,ti as Q128,it as Q64,ai as Raydium,vm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,Pt as SOL_INFO,PA as SPL_MINT_LAYOUT,H as SqrtPriceMath,bn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Lm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,Ak as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,nr as TickArrayBitmapExtensionUtils,tr as TickArrayLayout,Dm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,er as U64Resolution,Pk as U64_IGNORE_RANGE,sa as Voter,zl as VoterDepositEntry,Xl as VoterLockup,oa as VoterRegistrar,Gl as VoterVotingMintConfig,me as ZERO,wo as addLiquidityLayout,Zi as associatedLedgerAccountLayout,lo as calFarmRewardAmount,Pd as ceilDiv,dr as claimLayout,Nt as closeAccountInstruction,fa as createAssociatedLedgerAccountInstruction,Pa as createPoolFeeLayout,Ca as createPoolV4InstructionV2,XA as createPoolV4Layout,It as createWSolAccountInstructions,Ye as dwLayout,to as farmAddRewardLayout,sw as farmLedgerLayoutV3_1,qn as farmLedgerLayoutV3_2,aw as farmLedgerLayoutV5_1,ra as farmLedgerLayoutV5_2,ia as farmLedgerLayoutV6_1,pa as farmRewardInfoToConfig,Ji as farmRewardLayout,eo as farmRewardRestartLayout,Ul as farmRewardTimeInfoLayout,ta as farmStateV3Layout,na as farmStateV5Layout,Dn as farmStateV6Layout,Ow as fetchMultipleFarmInfoAndUpdate,ah as fetchMultipleInfo,yo as fixedSwapInLayout,bo as fixedSwapOutLayout,Tu as floorDiv,hm as formatLayout,De as generatePubKey,da as getAssociatedAuthority,Oo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Gn as getAssociatedLedgerPoolAccount,zm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,td as getCpmmPdaAmmConfigId,nd as getCpmmPdaPoolId,iu as getCreatePoolKeys,mo as getDepositEntryIndex,xa as getDxByDyBaseIn,Ia as getDyByDxBaseIn,jr as getFarmLedgerLayout,Yl as getFarmStateLayout,Ym as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,sP as getLiquidityFromAmounts,bk as getPdaAmmConfigId,st as getPdaExBitmapAccount,rd as getPdaLpMint,ei as getPdaMetadataKey,ii as getPdaObservationId,Jn as getPdaOperationAccount,xt as getPdaPersonalPositionAddress,ed as getPdaPoolAuthority,_a as getPdaPoolId,Va as getPdaPoolRewardVaulId,xo as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,be as getPdaTickArrayAddress,ru as getPdaVault,io as getRegistrarAddress,Ba as getStablePrice,co as getTokenOwnerRecordAddress,ao as getVoterAddress,uo as getVoterWeightRecordAddress,so as getVotingMintAuthority,oo as getVotingTokenMint,nm as governanceCreateTokenOwnerRecord,mk as i16ToBytes,Jr as i32ToBytes,go as initPoolLayout,ji as initTokenAccountInstruction,pd as initializeMarket,no as isValidFarmVersion,$n as isZero,Nw as judgeFarmType,To as leadingZeros,Na as leastSignificantBit,cm as liquidityStateV4Layout,lm as liquidityStateV5Layout,$r as makeAMMSwapInstruction,Ka as makeAddLiquidityInstruction,fo as makeAddNewRewardInstruction,si as makeClaimInstruction,Wo as makeClaimInstructionV4,au as makeCreateCpmmPoolInInstruction,ya as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ba as makeCreatorWithdrawFarmRewardInstruction,uu as makeDepositCpmmInInstruction,ga as makeDepositInstructionV3,wa as makeDepositInstructionV5,Aa as makeDepositInstructionV6,Hw as makeDepositTokenInstruction,$w as makeDepositWithdrawInstruction,ck as makeInitPoolInstructionV4,HI as makePurchaseInstruction,po as makeRestartRewardInstruction,Ra as makeSimulatePoolInfoInstruction,lu as makeSwapCpmmBaseInInInstruction,mu as makeSwapCpmmBaseOutInInstruction,xm as makeSwapFixedInInstruction,Bm as makeSwapFixedOutInstruction,iB as makeSwapInstruction,vn as makeTransferInstruction,cu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Qn as makeWithdrawInstructionV5,Yn as makeWithdrawInstructionV6,Zw as makeWithdrawTokenInstruction,kk as mockCreatePoolInfo,qa as mockV3CreatePoolInfo,pm as modelDataInfoLayout,Oa as mostSignificantBit,ea as parseTokenAccountResp,CA as parseTokenInfo,zt as poolTypeV6,Eo as purchaseLayout,Wl as realFarmStateV3Layout,Dl as realFarmStateV5Layout,ql as realFarmV6Layout,ho as removeLiquidityInstruction,Ao as removeLiquidityLayout,nB as route1Instruction,rB as route2Instruction,kd as routeInstruction,uk as simulatePoolInfoInstruction,OA as solToWSolToken,qt as splAccountLayout,Zr as toToken,LA as toTokenAmount,RA as toTokenInfo,Io as trailingZeros,La as u16ToBytes,dk as u32ToBytes,$B as unionArr,Ql as updateFarmPoolInfo,ro as validateFarmRewards,im as voterStakeRegistryCreateDepositEntry,rm as voterStakeRegistryCreateVoter,Jl as voterStakeRegistryDeposit,em as voterStakeRegistryUpdateVoterWeightRecord,tm as voterStakeRegistryWithdraw,NA as wSolToSolToken,$i as withdrawRewardLayout};
|
|
1
|
+
var Nu=Object.defineProperty,Mu=Object.defineProperties;var _u=Object.getOwnPropertyDescriptors;var gr=Object.getOwnPropertySymbols;var Ho=Object.prototype.hasOwnProperty,Zo=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Nu(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))Ho.call(e,t)&&jo(r,t,e[t]);if(gr)for(var t of gr(e))Zo.call(e,t)&&jo(r,t,e[t]);return r},W=(r,e)=>Mu(r,_u(e));var ke=(r,e)=>{var t={};for(var n in r)Ho.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&gr)for(var n of gr(r))e.indexOf(n)<0&&Zo.call(r,n)&&(t[n]=r[n]);return t};import{merge as kd}from"lodash";import cl from"axios";import{get as $o,set as Vu}from"lodash";import es from"dayjs";import Eu from"dayjs/plugin/utc";es.extend(Eu);var fi=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 es().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}},Jo={},Fu={};function se(r){let e=$o(Jo,r);if(!e){let t=$o(Fu,r);e=new fi({name:r,logLevel:t}),Vu(Jo,r,e)}return e}import{PublicKey as Yc}from"@solana/web3.js";import Qc from"bn.js";import Gc from"big.js";import Rr from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,yi="0123456789abcdef",Ar="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",bi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},is,Rt,$=!0,hr="[DecimalError] ",Wt=hr+"Invalid argument: ",os=hr+"Precision limit exceeded",ss=hr+"crypto unavailable",as="[object Decimal]",Fe=Math.floor,Ke=Math.pow,vu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Wu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Du=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,us=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,dt=1e7,Q=7,qu=9007199254740991,Uu=Ar.length-1,gi=kr.length-1,R={toStringTag:as};R.absoluteValue=R.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};R.ceil=function(){return G(new this.constructor(this),this.e+1,2)};R.clampedTo=R.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};R.comparedTo=R.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};R.cosine=R.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Gu(n,ps(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};R.cubeRoot=R.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=Fe((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ge(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,G(n,r,m.rounding,e)};R.decimalPlaces=R.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Fe(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};R.dividedBy=R.div=function(r){return ge(this,new this.constructor(r))};R.dividedToIntegerBy=R.divToInt=function(r){var e=this,t=e.constructor;return G(ge(e,new t(r),0,1,1),t.precision,t.rounding)};R.equals=R.eq=function(r){return this.cmp(r)===0};R.floor=function(){return G(new this.constructor(this),this.e+1,3)};R.greaterThan=R.gt=function(r){return this.cmp(r)>0};R.greaterThanOrEqualTo=R.gte=function(r){var e=this.cmp(r);return e==1||e===0};R.hyperbolicCosine=R.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Ir(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};R.hyperbolicSine=R.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Ir(5,r)),i=ln(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(i,e,t,!0)};R.hyperbolicTangent=R.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ge(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};R.inverseCosine=R.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?mt(t,i,o):new t(0):new t(NaN):e.isZero()?mt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=mt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};R.inverseHyperbolicCosine=R.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};R.inverseHyperbolicSine=R.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln())};R.inverseHyperbolicTangent=R.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ge(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};R.inverseSine=R.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=mt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};R.inverseTangent=R.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=gi)return s=mt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=gi)return s=mt(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),$=!0,G(s,l.precision=m,l.rounding=d,!0)};R.isFinite=function(){return!!this.d};R.isInteger=R.isInt=function(){return!!this.d&&Fe(this.e/Q)>this.d.length-2};R.isNaN=function(){return!this.s};R.isNegative=R.isNeg=function(){return this.s<0};R.isPositive=R.isPos=function(){return this.s>0};R.isZero=function(){return!!this.d&&this.d[0]===0};R.lessThan=R.lt=function(r){return this.cmp(r)<0};R.lessThanOrEqualTo=R.lte=function(r){return this.cmp(r)<1};R.logarithm=R.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if($=!1,a=m+p,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),In(u.d,i=m,d))do if(a+=10,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(In(u.d,i+=10,d));return $=!0,G(u,m,d)};R.minus=R.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return $?G(r,a,u):r}if(t=Fe(r.e/Q),l=Fe(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=dt-1;--c[i],c[n]+=dt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Tr(c,t),$?G(r,a,u):r):new y(u===3?-0:0)};R.modulo=R.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=ge(t,r.abs(),0,3,1),e.s*=r.s):e=ge(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};R.naturalExponential=R.exp=function(){return wi(this)};R.naturalLogarithm=R.ln=function(){return vt(this)};R.negated=R.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};R.plus=R.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),$?G(r,a,u):r;if(o=Fe(m.e/Q),n=Fe(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/dt|0,c[i]%=dt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Tr(c,n),$?G(r,a,u):r};R.precision=R.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};R.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};R.sine=R.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=zu(n,ps(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};R.squareRoot=R.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Fe((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(ge(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,G(n,u,l.rounding,r)};R.tangent=R.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ge(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};R.times=R.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Fe(l.e/Q)+Fe(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%dt|0,e=a/dt|0;o[i]=(o[i]+e)%dt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Tr(o,t),$?G(r,m.precision,m.rounding):r};R.toBinary=function(r,e){return ki(this,2,r,e)};R.toDecimalPlaces=R.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(je(r,0,Dt),e===void 0?e=n.rounding:je(e,0,8),G(t,r+t.e+1,e))};R.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(je(r,0,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(je(r,0,Dt),e===void 0?e=o.rounding:je(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};R.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=cs(y)-p.e-1,s=o%Q,e.d[0]=Ke(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*Q*2;m=ge(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ge(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ge(c,n,o,1).minus(p).abs().cmp(ge(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};R.toHexadecimal=R.toHex=function(r,e){return ki(this,16,r,e)};R.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:je(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?($=!1,t=ge(t,r,0,e,1).times(r),$=!0,G(t)):(r.s=t.s,t=r),t};R.toNumber=function(){return+this};R.toOctal=function(r,e){return ki(this,8,r,e)};R.toPower=R.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=Fe(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=qu)return i=ls(u,a,t,n),r.s<0?new u(1).div(i):G(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ke(+a,c),e=t==0||!isFinite(t)?Fe(c*(Math.log("0."+Me(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=wi(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),In(i.d,n,o)&&(e=n+10,i=G(wi(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,G(i,n,o))};R.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(je(r,1,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toSignificantDigits=R.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(je(r,1,Dt),e===void 0?e=n.rounding:je(e,0,8)),G(new n(t),r,e)};R.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};R.truncated=R.trunc=function(){return G(new this.constructor(this),this.e+1,1)};R.valueOf=R.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Me(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function je(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function In(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Ke(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ke(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ke(10,e-3)-1,s}function wr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=yi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Gu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Ir(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ge=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V,F,j,D=n.constructor,ee=n.s==i.s?1:-1,te=n.d,oe=i.d;if(!te||!te[0]||!oe||!oe[0])return new D(!n.s||!i.s||(te?oe&&te[0]==oe[0]:!oe)?NaN:te&&te[0]==0||!oe?ee*0:ee/0);for(u?(p=1,l=n.e-i.e):(u=dt,p=Q,l=Fe(n.e/p)-Fe(i.e/p)),F=oe.length,O=te.length,g=new D(ee),P=g.d=[],m=0;oe[m]==(te[m]||0);m++);if(oe[m]>(te[m]||0)&&l--,o==null?(I=o=D.precision,s=D.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/p+2|0,m=0,F==1){for(d=0,oe=oe[0],I++;(m<O||d)&&I--;m++)S=d*u+(te[m]||0),P[m]=S/oe|0,d=S%oe|0;y=d||m<O}else{for(d=u/(oe[0]+1)|0,d>1&&(oe=r(oe,d,u),te=r(te,d,u),F=oe.length,O=te.length),x=F,k=te.slice(0,F),T=k.length;T<F;)k[T++]=0;j=oe.slice(),j.unshift(0),V=oe[0],oe[1]>=u/2&&++V;do d=0,c=e(oe,k,F,T),c<0?(h=k[0],F!=T&&(h=h*u+(k[1]||0)),d=h/V|0,d>1?(d>=u&&(d=u-1),f=r(oe,d,u),b=f.length,T=k.length,c=e(f,k,b,T),c==1&&(d--,t(f,F<b?j:oe,b,u))):(d==0&&(c=d=1),f=oe.slice()),b=f.length,b<T&&f.unshift(0),t(k,f,T,u),c==-1&&(T=k.length,c=e(oe,k,F,T),c<1&&(d++,t(k,F<T?j:oe,T,u))),T=k.length):c===0&&(d++,k=[0]),P[m++]=d,c&&k[0]?k[T++]=te[x]||0:(k=[te[x]],T=1);while((x++<O||k[0]!==void 0)&&I--);y=k[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,is=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[d=0],u=l/Ke(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/Q),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Ke(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ke(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ke(10,Q-o),m[d]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==dt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=dt)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ds(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function Tr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Pr(r,e,t){if(e>Uu)throw $=!0,t&&(r.precision=t),Error(os);return G(new r(Ar),e,1,!0)}function mt(r,e,t){if(e>gi)throw Error(os);return G(new r(kr),e,t,!0)}function cs(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ft(r){for(var e="";r--;)e+="0";return e}function ls(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for($=!1;;){if(t%2&&(o=o.times(e),ns(o.d,s)&&(i=!0)),t=Fe(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ns(e.d,s)}return $=!0,o}function ts(r){return r.d[r.d.length-1]&1}function ms(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function wi(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(ge(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&In(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return G(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,k=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=k):l=e,g.precision=l+=y,t=Me(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Me(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,k).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=k,e==null?G(f,k,P,$=!0):f;for(m=f,u=s=f=ge(f.minus(1),f.plus(1),l,1),d=G(f.times(f),l,1),i=3;;){if(s=G(s.times(d),l,1),c=u.plus(ge(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Pr(g,l+2,k).times(o+""))),u=ge(u,new g(p),l,1),e==null)if(In(u.d,l-y,P,a))g.precision=l+=y,c=s=f=ge(m.minus(1),m.plus(1),l,1),d=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=k,P,$=!0);else return g.precision=k,u;u=c,i+=2}}function ds(r){return String(r.s*r.s/0)}function Ai(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),$&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Xu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),us.test(e))return Ai(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Wu.test(e))t=16,e=e.toLowerCase();else if(vu.test(e))t=2;else if(Du.test(e))t=8;else throw Error(Wt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=ls(n,new n(t),o,o*2)),c=wr(e,t,dt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Tr(c,l),r.d=c,$=!1,s&&(r=ge(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):xn.pow(2,u))),$=!0,r)}function zu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Ir(5,t)),e=ln(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for($=!1,u=t.times(t),a=new r(n);;){if(s=ge(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ge(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function Ir(r,e){for(var t=r;--e;)t*=r;return t}function ps(r,e){var t,n=e.s<0,i=mt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ts(t)?n?2:3:n?4:1,e;Rt=ts(t)?n?1:4:n?3:2}return e.minus(i).abs()}function ki(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(je(t,1,Dt),n===void 0?n=p.rounding:je(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ds(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=wr(kt(d),10,i),d.e=d.d.length),m=wr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ge(r,d,t,n,0,i),m=r.d,o=r.e,c=is),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=yi.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=wr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=yi.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function ns(r,e){if(r.length>e)return r.length=e,!0}function Yu(r){return new this(r).abs()}function Qu(r){return new this(r).acos()}function ju(r){return new this(r).acosh()}function Hu(r,e){return new this(r).plus(e)}function Zu(r){return new this(r).asin()}function $u(r){return new this(r).asinh()}function Ju(r){return new this(r).atan()}function ec(r){return new this(r).atanh()}function tc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=mt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?mt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=mt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ge(r,e,o,1)),e=mt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ge(r,e,o,1)),t}function nc(r){return new this(r).cbrt()}function rc(r){return G(r=new this(r),r.e+1,2)}function ic(r,e,t){return new this(r).clamp(e,t)}function oc(r){if(!r||typeof r!="object")throw Error(hr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=bi[t]),(n=r[t])!==void 0)if(Fe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=bi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ss);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function sc(r){return new this(r).cos()}function ac(r){return new this(r).cosh()}function fs(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,rs(o)){c.s=o.s,$?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Ai(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),us.test(o)?Ai(c,o):Xu(c,o)}if(i.prototype=R,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=oc,i.clone=fs,i.isDecimal=rs,i.abs=Yu,i.acos=Qu,i.acosh=ju,i.add=Hu,i.asin=Zu,i.asinh=$u,i.atan=Ju,i.atanh=ec,i.atan2=tc,i.cbrt=nc,i.ceil=rc,i.clamp=ic,i.cos=sc,i.cosh=ac,i.div=uc,i.exp=cc,i.floor=lc,i.hypot=mc,i.ln=dc,i.log=pc,i.log10=yc,i.log2=fc,i.max=bc,i.min=gc,i.mod=wc,i.mul=Ac,i.pow=kc,i.random=Pc,i.round=hc,i.sign=Tc,i.sin=Ic,i.sinh=xc,i.sqrt=Bc,i.sub=Sc,i.sum=Kc,i.tan=Cc,i.tanh=Rc,i.trunc=Lc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function uc(r,e){return new this(r).div(e)}function cc(r){return new this(r).exp()}function lc(r){return G(r=new this(r),r.e+1,3)}function mc(){var r,e,t=new this(0);for($=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function rs(r){return r instanceof xn||r&&r.toStringTag===as||!1}function dc(r){return new this(r).ln()}function pc(r,e){return new this(r).log(e)}function fc(r){return new this(r).log(2)}function yc(r){return new this(r).log(10)}function bc(){return ms(this,arguments,"lt")}function gc(){return ms(this,arguments,"gt")}function wc(r,e){return new this(r).mod(e)}function Ac(r,e){return new this(r).mul(e)}function kc(r,e){return new this(r).pow(e)}function Pc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:je(r,1,Dt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(ss);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Ke(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function hc(r){return G(r=new this(r),r.e+1,this.rounding)}function Tc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Ic(r){return new this(r).sin()}function xc(r){return new this(r).sinh()}function Bc(r){return new this(r).sqrt()}function Sc(r,e){return new this(r).sub(e)}function Kc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,G(t,this.precision,this.rounding)}function Cc(r){return new this(r).tan()}function Rc(r){return new this(r).tanh()}function Lc(r){return G(r=new this(r),r.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString;R[Symbol.toStringTag]="Decimal";var xn=R.constructor=fs(bi);Ar=new xn(Ar);kr=new xn(kr);var E=xn;import{PublicKey as Bi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oc}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as ys,SYSVAR_RENT_PUBKEY as Nc}from"@solana/web3.js";function A({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Pi=[A({pubkey:Oc,isWritable:!1}),A({pubkey:ys.programId,isWritable:!1}),A({pubkey:Nc,isWritable:!1})];function hi({publicKey:r,transformSol:e}){let t=Ti(r.toString());if(t instanceof Pe)return e&&t.equals(Ce)?J:t;if(e&&t.toString()===Ce.toBase58())return J;if(typeof t=="string"){if(t===Pe.default.toBase58())return Pe.default;try{return new Pe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ti(r){try{return new Pe(r)}catch{return r}}var mn=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bs=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new Pe("SysvarRent111111111111111111111111111111111"),Ii=new Pe("SysvarC1ock11111111111111111111111111111111"),dn=new Pe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xr=new Pe("Sysvar1nstructions1111111111111111111111111"),gs=ys.programId,Md=new Pe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_d=new Pe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vd=new Pe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ed=new Pe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fd=new Pe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vd=new Pe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Wd=new Pe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new Pe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qd=new Pe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ud=new Pe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gd=new Pe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Pe("So11111111111111111111111111111111111111112"),Ce=Pe.default;function xi(r){return hi({publicKey:r,transformSol:!0})}import{PublicKey as Mc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ws}from"@solana/spl-token";var Pt={chainId:101,address:Mc.default.toBase58(),programId:ws.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ws.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 Si=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Bi&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Bi(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Bi.default:hi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Si;he.WSOL=new Si(W(N({},Re),{mint:Re.address}));import Sr from"big.js";import Ec from"bn.js";import Fc from"decimal.js-light";import _c from"toformat";var Vc=_c,Bn=Vc;var Br=se("module/fraction"),Ki=Bn(Sr),Sn=Bn(Fc),vc={[0]:Sn.ROUND_DOWN,[1]:Sn.ROUND_HALF_UP,[2]:Sn.ROUND_UP},Wc={[0]:Sr.roundDown,[1]:Sr.roundHalfUp,[2]:Sr.roundUp},le=class{constructor(e,t=new Ec(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Br.logWithError(`${e} is not an integer.`),e<=0&&Br.logWithError(`${e} is not positive.`),Sn.set({precision:e+1,rounding:vc[n]});let i=new Sn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Br.logWithError(`${e} is not an integer.`),e<0&&Br.logWithError(`${e} is negative.`),Ki.DP=e,Ki.RM=Wc[n]||1,new Ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qc=se("Raydium_price"),ot=class extends le{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new le(Ci(n.decimals),Ci(i.decimals))}get raw(){return new le(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ot({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qc.logWithError("mul token not equals");let n=super.mul(t);return new ot({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ri=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Kr=Ri;Kr.SOL=new Ri(Pt);import Uc from"bn.js";var As=new le(new Uc(100)),tt=class extends le{toSignificant(e=5,t,n){return this.mul(As).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(As).toFixed(e,t,n)}};var ze=new Ze(0),Ps=new Ze(1),Wp=new Ze(2),Dp=new Ze(3),qp=new Ze(5),Li=new Ze(10),Up=new Ze(100),Gp=new Ze(1e3),Xp=new Ze(1e4),ks=9007199254740991;function X(r){let e=se("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ci(r){return Li.pow(X(r))}function Cr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Xc=se("Raydium_amount"),Ts=Bn(Gc);function zc(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Xc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ae=class extends le{constructor(t,n,i=!0,o){let s=new Rr(0),a=Li.pow(new Rr(t.decimals));if(i)s=X(n);else{let u=new Rr(0),c=new Rr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Ts.DP=this.token.decimals,new Ts(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function hs(r){return typeof r=="object"&&r!==null&&![he,Ae,Yc,le,Qc,ot,tt].some(e=>typeof e=="object"&&r instanceof e)}function pe(r){return typeof r=="string"?Ti(r):Array.isArray(r)?r.map(e=>pe(e)):hs(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,pe(t)])):r}import{PublicKey as Ln,sendAndConfirmTransaction as _i,Transaction as On,TransactionMessage as Nn,VersionedTransaction as Mn}from"@solana/web3.js";import el from"axios";var _={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as xs,ComputeBudgetProgram as Is,Transaction as Lr,TransactionMessage as jc,Keypair as Bs,VersionedTransaction as Ss}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hc}from"@solana/spl-token";var Lt=se("Raydium_txUtil"),Ks=1644;function Or(r){let e=[],t=[];return r.microLamports&&(e.push(Is.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(Is.setComputeUnitLimit({units:r.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Nr(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Lr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ks}catch{return!1}}async function Cs(r,e,t,n=!0){let i=new xs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Lr;s.feePayer=i;for(let c of e)Nr([...s.instructions,c],[i])||(o.push(s),s=new Lr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Zc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Rs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=xs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Zc(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");o.push(p)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Kn({instructions:r,payer:e,signers:t}){return Nr(r,[e,...t])}function Cn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Bs.generate().publicKey.toString()}){let o=new jc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ss(o).serialize()).toString("base64").length<Ks}catch{return!1}}var $c=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function Ht(r){let e=[];return r.forEach(t=>{t instanceof Lr&&(t.recentBlockhash||(t.recentBlockhash=Hc.toBase58()),t.feePayer||(t.feePayer=Bs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ss&&(n=$c(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Ls,AddressLookupTableAccount as Mr}from"@solana/web3.js";import{PublicKey as Jc}from"@solana/web3.js";import{getTransferFeeConfig as Nf,unpackMint as Mf}from"@solana/spl-token";var Oi=se("Raydium_accountInfo_util");async function ht(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Ni(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Ni(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Oi.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"&&Oi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Jc(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Oi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Rn(r,e,t){let n=await ht(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>W(N({},i),{accountInfo:n[o]}))}async function Mi({connection:r,address:e}){let t=await ht(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Ls(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Mr({key:s,state:Mr.deserialize(o.data)});n[s.toString()]=a,_r[s.toString()]=a}return n}var _r={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Mr({key:new Ls("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Mr.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 Vr=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}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 el.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}=Or(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Ln.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new On;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()=>{var i;let n=await pn(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),Ht([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await _i(this.connection,t,this.signers.find(o=>o.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer]),signedTx:t};if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0}),signedTx:o[0]}}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var p;let{sequentially:l,onTxUpdate:m}=c||{},d=await pn(this.connection);if((p=this.owner)!=null&&p.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=d,await _i(this.connection,y,a[f].find(b=>b.publicKey.equals(this.owner.publicKey))?a[f]:[...a[f],this.owner.signer])))),signedTxs:s};if(this.signAllTransactions){let y=s.map((b,g)=>(b.recentBlockhash=d,a[g].length&&b.sign(...a[g]),b));Ht(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=ke(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},_r),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Ln(p));let c=await Mi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Nn({payerKey:this.feePayer,recentBlockhash:i?Ln.default.toBase58():await pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Mn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var p;if(Ht([m]),(p=this.owner)!=null&&p.isKeyPair){this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:!0}),{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:!0}),signedTx:y[0]}}throw new Error("please connect wallet first")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var d;Ht(s);let{sequentially:l,onTxUpdate:m}=c||{};if((d=this.owner)!=null&&d.isKeyPair){let{lastValidBlockHeight:p,blockhash:y}=await this.connection.getLatestBlockhash();return s.forEach((f,b)=>{a[b].find(g=>g.publicKey.equals(this.owner.publicKey))||f.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async f=>{let b=await this.connection.sendTransaction(f);return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:p,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!p[y])return;let g=await this.connection.sendTransaction(p[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:p[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let k=f.findIndex(T=>T.txId===g);k>-1&&(f[k].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:p}}else{let y=[];for(let f=0;f<p.length;f+=1){let b=await this.connection.sendTransaction(p[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:p}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=ke(c,["computeBudgetConfig"]),i=t?Or(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Ln(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?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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 y;let{sequentially:m,onTxUpdate:d}=l||{},p=await pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=p,a[b].length&&f.sign(...a[b])}),Ht(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await _i(this.connection,f,a[b].find(g=>g.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer]))),signedTxs:s};if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),d==null||d([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),d==null||d([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},_r),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Ln(g));let c=await Mi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Or(t):{instructions:[],instructionTypes:[]},m=await pn(this.connection),d=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],k=t?[...l.instructions,...P]:P;if(f.length<12&&Cn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||Cn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mn(h))}else{let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mn(k))}else{let k=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mn(k))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:k}=g||{};if(p.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),Ht(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((S,x)=>{y[x].find(O=>O.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:p}}if(this.signAllTransactions){let h=await this.signAllTransactions(p);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let O=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:O,status:"sent",signedTx:h[I]}),k==null||k([...S]),I++,this.connection.onSignature(O,V=>{let F=S.findIndex(j=>j.txId===O);F>-1&&(S[F].status=V.err?"error":"success"),k==null||k([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(O)};return x(),{txIds:[],signedTxs:h}}else{let I=[];for(let S=0;S<h.length;S+=1){let x=await this.connection.sendTransaction(h[S],{skipPreflight:!0});I.push(x)}return{txIds:I,signedTxs:h}}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var pt=class{constructor(e){this._owner=e}get publicKey(){return pt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return pt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return pt.isKeyPair(this._owner)}get isPublicKey(){return pt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!pt.isKeyPair(e)}};function Ni(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Os=r=>typeof r=="number";function Ns(r,e,t){let n=Os(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Ms(r,e,t){let n=Os(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as Se}from"@solana/web3.js";var _s=new Se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Vs=new Se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),_n=new Se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ny=new Se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ry=new Se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ei=new Se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Es=new Se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),iy=new Se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),oy=new Se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sy=new Se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),tl=new Se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nl=new Se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),rl=new Se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),il=new Se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ay=new Se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),uy=new Se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),cy=new Se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ly=new Se("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),my=new Se("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),dy=new Se("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Vn={IDO_PROGRAM_ID_V1:tl,IDO_PROGRAM_ID_V2:nl,IDO_PROGRAM_ID_V3:rl,IDO_PROGRAM_ID_V4:il};import{PublicKey as ol}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as sl}from"@solana/spl-token";function fe(r,e,t){return ie([r.toBuffer(),(t!=null?t:sl).toBuffer(),e.toBuffer()],new ol("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ft from"bn.js";var En=1e4;function xe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=W(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new ft(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===En){let u=new ft(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Fn(r.mul(new ft(En)),new ft(En-o.transferFeeBasisPoints)),c=new ft(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Fn(l.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Fn(r.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Fn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new ft(0))?t.add(new ft(1)):t}var ve={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Fy=N({},ve);var Fs="ray_tab_hash",Fi="ray_req_hash",al=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Fs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Fs,r)),r},Er=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=ke(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Fi)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(N({},t),{time:Date.now(),session:al()}));try{localStorage.setItem(Fi,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(Fi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Er(W(N({},t),{logCount:r,removeLastLog:!0}))}};var Fr=se("Raydium_Api"),vi=new Map;var vr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=cl.create({baseURL:this.urlConfigs.BASE_HOST||ve.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Fr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Fr.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&&Er({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Fr.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&&Er({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Fr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||ve.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||ve.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return this.api.get(this.urlConfigs.CHAIN_TIME||ve.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||ve.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||ve.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||ve.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||ve.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||ve.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||ve.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>vi.has(s)?(n.push(vi.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||ve.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{vi.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||ve.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||ve.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||ve.CHECK_AVAILABILITY)).data}};var Wr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",vs="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Hi,TOKEN_PROGRAM_ID as Xt,AccountLayout as yn,TOKEN_2022_PROGRAM_ID as Fl}from"@solana/spl-token";import{PublicKey as Qr,SystemProgram as vl}from"@solana/web3.js";var Wi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new Vr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Wi(e))}logInfo(...e){this.logger.info(Wi(e))}logAndCreateError(...e){let t=Wi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ol,createCloseAccountInstruction as Nl,createTransferInstruction as Ml,TOKEN_PROGRAM_ID as fn}from"@solana/spl-token";import{PublicKey as _l,SystemProgram as Vl}from"@solana/web3.js";import El from"bn.js";import{PublicKey as Js,Keypair as Kl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Cl}from"@solana/spl-token";import Rl from"bn.js";import{PublicKey as Pl}from"@solana/web3.js";import Gs,{isBN as Xs}from"bn.js";import{bits as ll,BitStructure as bb,blob as ml,Blob as gb,cstr as wb,f32 as Ab,f32be as kb,f64 as Pb,f64be as hb,greedy as Tb,Layout as dl,ns64 as Ib,ns64be as xb,nu64 as pl,nu64be as Bb,offset as Sb,s16 as Kb,s16be as Cb,s24 as Rb,s24be as Lb,s32 as fl,s32be as Ob,s40 as Nb,s40be as Mb,s48 as _b,s48be as Vb,s8 as Eb,seq as yl,struct as Fb,Structure as bl,u16 as gl,u16be as vb,u24 as Wb,u24be as Db,u32 as wl,u32be as qb,u40 as Ub,u40be as Gb,u48 as Xb,u48be as zb,u8 as Al,UInt as kl,union as Yb,Union as Qb,unionLayoutDiscriminator as jb,utf8 as Hb}from"@solana/buffer-layout";var Dr=dl,Ws=bl;var Di=kl;var Ds=Al,Tt=gl;var qi=wl;var qs=pl;var _e=fl;var Us=yl;var de=ml;var Ui=ll;var $t=class extends Dr{constructor(t,n,i){super(t,i);this.blob=de(t),this.signed=n}decode(t,n=0){let i=new Gs(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Gs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},qr=class extends Dr{constructor(t){super(8,t);this._lower=Ui(qi(),!1),this._upper=Ui(qi(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function M(r){return new Di(1,r)}function We(r){return new Di(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function zs(r){return new $t(1,!0,r)}function Gr(r){return new $t(8,!0,r)}function Ys(r){return new $t(16,!0,r)}var Ur=class extends Dr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new Ur(de(32),e=>new Pl(e),e=>e.toBuffer(),r)}function Ve(r){return new Ur(Ds(),hl,Tl,r)}function hl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Tl(r){return r?1:0}var Gi=class extends Ws{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new Gi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:Xs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Xs(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(r,i,t)}var qt=L([B("mint"),B("owner"),w("amount"),We("delegateOption"),B("delegate"),M("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),B("closeAuthority")]);function Il(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Xi(r,...e){if(!Il(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function zi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Qs(r,e){Xi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var zr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),yt=(r,e)=>r<<32-e|r>>>e;var mg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function xl(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Yi(r){return typeof r=="string"&&(r=xl(r)),Xi(r),r}var Xr=class{clone(){return this._cloneInto()}},dg={}.toString;function js(r){let e=n=>r().update(Yi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Bl(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var Hs=(r,e,t)=>r&e^~r&t,Zs=(r,e,t)=>r&e^r&t^e&t,Yr=class extends Xr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=zr(this.buffer)}update(e){zi(this);let{view:t,buffer:n,blockLen:i}=this;e=Yi(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=zr(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){zi(this),Qs(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Bl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=zr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Sl=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]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Qi=class extends Yr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Gt[m-15],p=Gt[m-2],y=yt(d,7)^yt(d,18)^d>>>3,f=yt(p,17)^yt(p,19)^p>>>10;Gt[m]=f+Gt[m-7]+y+Gt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=yt(a,6)^yt(a,11)^yt(a,25),p=l+d+Hs(a,u,c)+Sl[m]+Gt[m]|0,f=(yt(n,2)^yt(n,13)^yt(n,22))+Zs(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var $s=js(()=>new Qi);var Cg=se("Raydium_Util");function ea({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:fe(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Js.default,amount:new Rl(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Cl}){let t=Kl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ll(r,t,e),seed:t}}function Ll(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=$s(n);return new Js(i)}function ji(r){let{mint:e,tokenAccount:t,owner:n,programId:i=fn}=r;return Ol(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=fn}=r;return Nl(e,t,i,n,o)}async function It(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new El(a)),c=De({fromPublicKey:i,programId:fn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Vl.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:fn}),ji({mint:new _l(Re.address),tokenAccount:c.publicKey,owner:o,programId:fn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function vn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=fn}){return Ml(r,e,t,BigInt(String(n)),i,o)}var Wn=class extends Te{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return fe(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Fl},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ea({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Xt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u)return i&&s.equals(u),u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Qr(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new Qr(l)),d=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=Hi(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=p.instructions)==null||y.push(g),p.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&yn.decode(P.data).mint.equals(n)&&yn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(g),p.instructionTypes.push(_.CreateATA);if(n.equals(J)&&i.amount){let P=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(p.instructions.push(vn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:p}}else if(n.equals(J)){let g=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return p.instructions.push(...g.instructions||[]),p.endInstructions.push(...g.endInstructions||[]),p.signers.push(...g.signers||[]),p.instructionTypes.push(...g.instructionTypes||[]),p.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:p}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(yn.span),k=vl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:yn.span,programId:l});return p.instructions.push(k,ji({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Xt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await Hi(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new Qr(J).equals(o)){let p=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Hi(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(Xt)&&yn.decode(f.data).mint.equals(o)&&yn.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:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Qr(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=ke(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=m,p=ke(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as sm}from"@solana/spl-token";import{PublicKey as we,SystemProgram as am}from"@solana/web3.js";import{PublicKey as aa}from"@solana/web3.js";var Zi=L([M("instruction")]),$i=L([M("instruction")]),Wl=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Dl=L([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),ql=L([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),de(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),Ul=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(Wl,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),ta=new Proxy(Dl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),na=new Proxy(ql,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),Dn=new Proxy(Ul,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return W(N({},o),{rewardType:((s=Object.entries(zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Gl=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ji=L([M("instruction"),w("nonce"),q(Gl,5,"rewardTimeInfo")]),eo=L([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),to=L([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),aw=L([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),qn=L([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),uw=L([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ra=L([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),ia=L([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=L([M("instruction"),w("amount")]),Xl=L([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),zs("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),oa=L([de(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(Xl,4,"votingMints"),Gr("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),zl=L([Gr("startTime"),Gr("endTime"),M("kind"),q(M(),15,"reserved")]),Yl=L([q(zl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ve("isUsed"),Ve("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),sa=L([de(8),B("voterAuthority"),B("registrar"),q(Yl,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var bw=se("Raydium_farm_config"),ua=new aa("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ca=new aa("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),la={3:ta,5:na,6:Dn},ma={3:qn,5:ra,6:ia},no=r=>[3,5,6].indexOf(r)!==-1,ro=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},zt={"Standard SPL":0,"Option tokens":1},bt={[_s.toString()]:3,[Vs.toString()]:5,[_n.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as Hl,SYSVAR_CLOCK_PUBKEY as Xn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Zl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as $l}from"@solana/spl-token";import Hr from"bn.js";function io(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function oo(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function so(r,e){return ie([e.toBuffer()],r)}function ao(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function uo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function co(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Un=se("Raydium.farm.util");function Gn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var da=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function pa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function lo(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function jr(r){let e=ma[r];return e||Un.logWithError("invalid version",r),e}function Ql(r){let e=la[r];return e||Un.logWithError("invalid version",r),e}function jl(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new $e(0)))continue;let o=$e.min(new $e(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function Nw({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let d of e){let p=pe(d);p.version===6?s=!0:o=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:Je({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await Rn(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=Ql(p);(!b||!b.data||b.data.length!==P.span)&&Un.logWithError(`invalid farm state account info, pools.id, ${d}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Un.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=jr(p);b&&b.data&&(b.data.length!==P.span&&Un.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=jl(c[d].state,c[d].lpVault,m,i));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=p.rewardInfos.map((g,P)=>{let k=y.rewardDebts[P];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(k)});c[d].wrapped=W(N({},c[d].wrapped),{pendingRewards:b})}return c}function Mw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ns(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ms(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function mo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=oa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=sa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var Jl=se("Raydium_farm_instruction"),zn={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 fa(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Jl.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Zi.span);Zi.encode({instruction:s},a);let u=[A({pubkey:t}),A({pubkey:n}),A({pubkey:o,isWritable:!1}),A({pubkey:Jt.programId,isWritable:!1}),A({pubkey:Hl,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function ya(r){var n;let e=Buffer.alloc(Ji.span);Ji.encode({instruction:0,nonce:new Hr(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Pi,A({pubkey:r.farmId}),A({pubkey:r.farmAuthority,isWritable:!1}),A({pubkey:r.lpVault}),A({pubkey:r.lpMint,isWritable:!1}),A({pubkey:r.lockVault}),A({pubkey:r.lockMint,isWritable:!1}),A({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(A({pubkey:i.rewardMint,isWritable:!1}),A({pubkey:i.rewardVault}),A({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function ba(r){let e=Buffer.alloc($i.span);$i.encode({instruction:5},e);let t=[A({pubkey:nt,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.authority,isWritable:!1}),A({pubkey:r.lpVault,isWritable:!1}),A({pubkey:r.rewardVault}),A({pubkey:r.userRewardToken}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function em(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=L([M("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...zn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function tm(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...zn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function nm(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([M("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...zn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function rm(r,e,t,n,i,o){let s=L([M("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function im(r,e,t,n,i,o,s,a){let u=L([M("voterBump"),M("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...zn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function om(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),We("periods"),Ve("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:$l,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...zn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:p,programId:r,data:f})}async function Zw({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=io(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=qn.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new Hr(0)))throw Error("user do not has new stake amount");let y=oo(e,a).publicKey,f=so(e,a).publicKey,{publicKey:b,nonce:g}=ao(n,c,s),P=fe(b,y,u).publicKey,{publicKey:k,nonce:T}=uo(n,c,s),h=co(t,i,o,s).publicKey,I=[],S=fe(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(Zl(s,S,s,y)),await r.getAccountInfo(b)===null){let j=rm(t,i,s,o,s,h);I.push(j,im(n,c,b,k,s,s,g,T))}let{index:V,isInit:F}=await mo(r,c,b,y);return F||I.push(om(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(em(n,c,b,P,S,s,l,a,y,f,e,V,p),tm(n,c,b,k)),I}async function $w({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=io(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=qn.decode(m.data);if(d.voteLockedBalance.eq(new Hr(0)))throw Error("user has vote locked balance = 0");let p=oo(e,a).publicKey,y=so(e,a).publicKey,{publicKey:f}=ao(n,c,s),b=fe(f,p,u).publicKey,{publicKey:g}=uo(n,c,s),P=co(t,i,o,s).publicKey,k=[],{index:T,isInit:h}=await mo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return k.push(nm(n,c,f,s,P,g,b,fe(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),k}function po({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(eo.span);eo.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[A({pubkey:nt,isWritable:!1}),A({pubkey:n.id}),A({pubkey:n.lpVault,isWritable:!1}),A({pubkey:e}),A({pubkey:t}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function fo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(to.span);to.encode({instruction:4,isSet:new Hr(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...Pi,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:i.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function Jw(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],d=Je({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},p);let y=n===6?[A({pubkey:nt,isWritable:!1}),...c?[A({pubkey:Jt.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new re(t.lpVault)}),A({pubkey:o[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(A({pubkey:o[f]})),y.push(A({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new re(t.rewardInfos[f].vault)})),y.push(A({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:p})}function Yn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[A({pubkey:nt,isWritable:!1}),A({pubkey:u}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new re(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Oe({programId:a,keys:m,data:l})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new re(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function ga(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new re(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[A({pubkey:nt,isWritable:!1}),A({pubkey:Jt.programId,isWritable:!1}),A({pubkey:u}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new re(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Oe({programId:a,keys:m,data:l})}var Hn=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:lo(W(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=_n,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new we(e.lpMint.address),lockInfo:{lockMint:ua,lockVault:ca},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Dn.span);u.addInstruction({instructions:[am.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Dn.span,programId:a.programId})]});let{publicKey:d,nonce:p}=da({programId:new we(a.programId),poolId:l.publicKey}),y=Gn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(zt[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(pa(T));let{rewardPubKey:h,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:T,payer:c});I&&u.addInstruction(I),h||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let S=T.mint.equals(Ce)?new we(Re.address):T.mint;b.push({rewardMint:S,rewardVault:Gn({programId:a.programId,poolId:l.publicKey,mint:S,type:"rewardVault"}),userRewardToken:h})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=ya({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:[P],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:i}){var b;let o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((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(Ce)?new we(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new we(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:Ce,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:[po({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((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(Ce)?new we(Re.address):m.mint,p=a.rewardInfos.findIndex(k=>new we(k.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Ce,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=po({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new we(Re.address):i.mint,m=Gn({programId:new we(n.programId),poolId:new we(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[fo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ce)?new we(Re.address):l.mint,d=Gn({programId:new we(n.programId),poolId:new we(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=fo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=bt[d];no(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new we(n.programId),new we(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let k={};for(let D of this.scope.account.tokenAccounts)if(a){let ee=fe(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&ee.equals(D.publicKey)&&(k[D.mint.toString()]=D.publicKey)}else k[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=k[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",k);let I=[];for(let D of m){let ee=s&&D.mint.address===J.toString(),te=k[D.mint.address];if(!te){let{account:oe,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({mint:new we(D.mint.address),notUseTokenAccount:ee,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!ee,associatedOnly:ee?!1:a,checkCreateATAOwner:u});te=oe,lt&&P.addInstruction(lt)}k[D.mint.address]=te,I.push(te)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=jr(p).decode(x.data)),n.programId!==_n.toString()&&!S){let{instruction:D,instructionType:ee}=fa({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[ee]})}let O=ro({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new we(D))},F=p===6?Aa(V):p===5?wa(V):ga(V),j={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[j[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=bt[n.programId];no(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 O of this.scope.account.tokenAccounts)if(u){let V=fe(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&V.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let O=Je({programId:new we(n.programId),poolId:new we(n.id),owner:this.scope.ownerPubKey,version:p}),V=await this.scope.connection.getAccountInfo(O);V||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:V}),jr(p).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===J.toString(),k=b[g.toString()];if(!k){let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new we(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});k=O,V&&f.addInstruction(V)}b[g.toString()]=k;let T=[];for(let O of d){let V=s&&O.mint.address===J.toString(),F=b[O.mint.address];if(!F){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new we(O.mint.address),notUseTokenAccount:V,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&f.addInstruction(D)}b[O.mint.address]=F,T.push(F)}let h=ro({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:k,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new we(O))},S=p===6?Yn(I):p===5?Qn(I):jn(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let i=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ce.toString()?new we(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:lo(W(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(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:[sm(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=ba({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=fe(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(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,k=bt[f],T=b.address,h=n&&T===J.toString(),I=m[T];if(!I){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new we(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=j,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let j of g){let D=n&&j.mint.address===J.toString(),ee=m[j.mint.address];if(!ee){let{account:te,instructionParams:oe}=await this.scope.account.getOrCreateTokenAccount({mint:new we(j.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});ee=te,oe&&l.addInstruction(oe)}m[j.mint.address]=ee,S.push(ee)}let x=p[P],O={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(j=>new we(j))},V=k===6?Yn(O):k===5?Qn(O):jn(O),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[k]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ri}from"@solana/spl-token";var hA=L([We("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),We("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as um}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as cm}from"@solana/spl-token";var RA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new um(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},LA=({mint:r,decimals:e,programId:t=cm,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},Zr=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),OA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=ke(o,["amount","isRaw","name"]);return new Ae(new he({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function NA(r){return r.address===Pt.address?Re:r}function MA(r){return r.address===Re.address?Pt:r}import{TOKEN_PROGRAM_ID as Zn,ASSOCIATED_TOKEN_PROGRAM_ID as Im}from"@solana/spl-token";import{PublicKey as ye,TransactionInstruction as Mt,SystemProgram as Po,SYSVAR_RENT_PUBKEY as xm}from"@solana/web3.js";var yo=L([M("instruction"),w("amountIn"),w("minAmountOut")]),bo=L([M("instruction"),w("maxAmountIn"),w("amountOut")]),zA=L([M("instruction"),M("nonce")]),go=L([M("instruction"),M("nonce"),w("startTime")]),lm=L([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),q(w(),3,"padding")]),mm=L([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),q(w(),64,"padding")]),wo=L([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Ao=L([M("instruction"),w("amountIn")]),YA={4:lm,5:mm},Pa=L([w("fee")]);import{PublicKey as dm}from"@solana/web3.js";var gn=new dm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,pm=L([w("x"),w("y"),w("price")]),fm=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(pm,tn,"DataElement")]);function ym(r,e){return[0,tn-2]}function bm(r){return[0,tn-2]}function gm(r){return[0,tn-2]}function wm(r,e,t){let[n,i]=ym(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=tn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function ko(r,e,t){let[n,i,o]=wm(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function en(r,e,t){return e*r.multiplier/t}function ha(r,e,t){return e*t/r.multiplier}function Am(r,e){let[t,n]=bm(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function km(r,e){let[t,n]=gm(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Ta(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Am(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Pm(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=km(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function hm(r,e){let t=Ta(r,e,0,!1);return t[3]?t[0]:0}function Ia(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,d]=Ta(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return ha(r,p,i)}}function xa(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,d]=Pm(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return ha(r,p,i)}}function Tm(r){let e=fm.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ba(r,e,t,n){let i=hm(r,en(r,e,ko(r,e,t)))/r.multiplier;return n?i:1/i}var bn=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(gn);e&&(this._layoutData=Tm(e==null?void 0:e.data))}}};var Sa=se("Raydium_liquidity_instruction");function Ka(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(wo.span);wo.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:Ps},a);let u=[A({pubkey:Zn,isWritable:!1}),A({pubkey:new ye(e.id)}),A({pubkey:new ye(t.authority),isWritable:!1}),A({pubkey:new ye(t.openOrders),isWritable:!1}),A({pubkey:new ye(t.targetOrders)}),A({pubkey:new ye(e.lpMint.address)}),A({pubkey:new ye(t.vault.A)}),A({pubkey:new ye(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(A({pubkey:gn})),u.push(A({pubkey:new ye(e.marketId),isWritable:!1}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:new ye(t.marketEventQueue),isWritable:!1})),new Mt({programId:new ye(e.programId),keys:u,data:a})}function ho(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=pe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Ao.span);Ao.encode({instruction:4,amountIn:X(i)},a);let u=[A({pubkey:Zn,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.mintLp.address}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return s===5?u.push(A({pubkey:gn})):(u.push(A({pubkey:o.id})),u.push(A({pubkey:o.id}))),u.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function Ca({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:k,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=L([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:Zn,isSigner:!1,isWritable:!1},{pubkey:Im,isSigner:!1,isWritable:!1},{pubkey:Po.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey: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}],V=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:k,coinAmount:T,pcAmount:h},V),{instruction:new Mt({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function ck(r){let e=L([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ye(r.id),isWritable:!1}),A({pubkey:new ye(r.authority),isWritable:!1}),A({pubkey:new ye(r.openOrders),isWritable:!1}),A({pubkey:new ye(r.vault.A),isWritable:!1}),A({pubkey:new ye(r.vault.B),isWritable:!1}),A({pubkey:new ye(r.mintLp.address),isWritable:!1}),A({pubkey:new ye(r.marketId),isWritable:!1}),A({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new ye(r.programId),keys:n,data:t})}function Bm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=pe(r),s=Buffer.alloc(yo.span);yo.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[A({pubkey:Zn,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders})];return i===4&&a.push(A({pubkey:o.targetOrders})),a.push(A({pubkey:o.vault.A}),A({pubkey:o.vault.B})),i===5&&a.push(A({pubkey:gn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Sm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=pe(r),s=Buffer.alloc(bo.span);bo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[A({pubkey:Po.programId,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return i===5&&a.push(A({pubkey:gn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function $r(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Bm(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Sm(W(N({},a),{maxAmountIn:i,amountOut:o}),t);Sa.logWithError("invalid params","params",r)}throw Sa.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function lk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(go.span);go.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=pe(r),o=[A({pubkey:Zn,isWritable:!1}),A({pubkey:Po.programId,isWritable:!1}),A({pubkey:xm,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.mintA.address,isWritable:!1}),A({pubkey:i.mintB.address,isWritable:!1}),A({pubkey:i.vault.A,isWritable:!1}),A({pubkey:i.vault.B,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:i.id,isWritable:!1}),A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Ra({poolKeys:r}){let e=L([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ye(r.id),isWritable:!1}),A({pubkey:new ye(r.authority),isWritable:!1}),A({pubkey:new ye(r.openOrders),isWritable:!1}),A({pubkey:new ye(r.vault.A),isWritable:!1}),A({pubkey:new ye(r.vault.B),isWritable:!1}),A({pubkey:new ye(r.mintLp.address),isWritable:!1}),A({pubkey:new ye(r.marketId),isWritable:!1}),A({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new ye(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ee,TOKEN_2022_PROGRAM_ID as Qt,ASSOCIATED_TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as gt,SystemProgram as wn,Keypair as Ro}from"@solana/web3.js";import ja from"bn.js";import Fm from"bn.js";function La(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function dk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function pk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function Jr(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function To(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Io(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function $n(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Oa(r,e){return $n(r,e)?null:To(r,e)}function Na(r,e){return $n(r,e)?null:Io(r,e)}var Km=Buffer.from("amm_config","utf8"),Cm=Buffer.from("pool","utf8"),Rm=Buffer.from("pool_vault","utf8"),Lm=Buffer.from("pool_reward_vault","utf8"),Ma=Buffer.from("position","utf8"),Om=Buffer.from("tick_array","utf8"),Nm=Buffer.from("operation","utf8"),Mm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function gk(r,e){return ie([Km,La(e)],r)}function _a(r,e,t,n){return ie([Cm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function xo(r,e,t){return ie([Rm,e.toBuffer(),t.toBuffer()],r)}function Va(r,e,t){return ie([Lm,e.toBuffer(),t.toBuffer()],r)}function be(r,e,t){return ie([Om,e.toBuffer(),Jr(t)],r)}function nn(r,e,t,n){return ie([Ma,e.toBuffer(),Jr(t),Jr(n)],r)}function xt(r,e){return ie([Ma,e.toBuffer()],r)}function ei(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function Jn(r){return ie([Nm],r)}function st(r,e){return ie([Mm,e.toBuffer()],r)}import Bt from"bn.js";var me=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ti=new Bt(1).shln(128),Bo=it.sub(rt),er=64,Ea=ti.subn(1),qe=-443636,Qe=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Fa=16,va="59543866431248",Wa="184467440737095516",Da="15793534762490258745",ni=new Bt(10).pow(new Bt(6)),_m=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(_m||{}),kk={[500]:10,[3e3]:60,[1e4]:200},Pk={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},qa={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:[]},hk=new Bt("18446744073700000000");var Vm=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Vm/2));for(let p=0;p<l.length;p++){let{publicKey:y}=be(t,n,l[p]);u.push(y)}let m=(await ht(e,u)).map(p=>p!==null?tr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(N({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Le-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<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=be(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Le;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=be(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(U.checkIsOutOfBoundary(e)){if(e>Qe)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Be from"bn.js";var So=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Oa(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=Na(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},nr=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;if(Qe<=t)throw Error(`extensionTickBoundary check error: ${Qe}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=$n(512,u)?null:To(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=$n(512,u)?null:Io(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var rr=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ct(0),a=new Ct(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,i),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,it),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,it),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,k;let a=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ue.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[xe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),xe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[xe(new Ct(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),xe(new Ct(new E(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Ua}from"@solana/spl-token";var Ue=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=be(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?nr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=be(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=be(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/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=nr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Qe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(N({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Yt(d)});if(p.tokenMint.equals(Yt.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let y=new Be(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=Z.mulDivFloor(f,p.emissionsPerSecondX64,it),k=p.rewardTotalEmissioned.add(P);s.push(W(N({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:k,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ce.getArrayStartIndex(Qe,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Rn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=be(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Rn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=tr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(xt(p,d).publicKey);let l=await ht(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Xa.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:T}=ue.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:k,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>W(N({},x),{pendingReward:new Be(0)})),leverage:h,tokenFeeAmountA:new Be(0),tokenFeeAmountB:new Be(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await ht(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=tr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,k=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[k].toString()],I=T.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await rr.GetPositionFees(f,g,I,S),V=await rr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Be(0))?x:new Be(0),g.tokenFeeAmountB=O.gte(new Be(0))?O:new Be(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Be(0))?V[F]:new Be(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var V;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 E(0))?u=c?St.add(new Be(1)):Kt.sub(new Be(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=xe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:me),u),g=xe(p,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),k=c?P:new E(1).div(P),T=p.mul(new Be(Math.floor((1-s)*1e10))).div(new Be(1e10)),h=xe(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(k).sub(I).abs(),x=I,O=new tt(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:Zt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:O,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(N({},u),{mint:u.address,isToken2022:u.programId===Ua.toBase58()})),new he(W(N({},c),{mint:c.address,isToken2022:c.programId===Ua.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:k,remainingAccounts:T}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},d),{amount:new Ae(l,d.amount),fee:d.fee===void 0?void 0:new Ae(l,d.fee)}),I=W(N({},p),{amount:new Ae(m,p.amount),fee:p.fee===void 0?void 0:new Ae(m,p.fee)}),S=W(N({},y),{amount:new Ae(m,y.amount),fee:y.fee===void 0?void 0:new Ae(m,y.fee)}),x=new ot({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new ot({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new Ae(l,k);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:O,priceImpact:P,fee:V,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[xi(e.mintA.address).toString()],d=i[xi(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=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:k}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(k.toString()).div(new E(10).pow(y)).mul(d.value)),S=new E(T.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(d.value)),x=S.div(I.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,j=e.rewardDefaultInfos.map(D=>{var oe,lt;let ee=D.mint.decimals,te=i[D.mint.address];return u<((oe=D.startTime)!=null?oe:0)||u>((lt=D.endTime)!=null?lt:0)||!D.perSecond||!te||ee===void 0?0:new E(te.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(ee)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:j,apr:V+j.reduce((D,ee)=>D+ee,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=xe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Be(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,d,f,!a):new Be(0);else if(l.lte(d)){let k=ue.getLiquidityFromTokenAmountA(l,d,f,!a),T=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?k:T}else b=t?new Be(0):ue.getLiquidityFromTokenAmountB(m,d,f);return Ue.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,k;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[xe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),xe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[xe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),xe(m.amountB.muln(l),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=Ga.decode(i.data),s=st(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function aP({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var k,T,h,I;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[xe(m,(k=r.mintA.extensions)==null?void 0:k.feeConfig,a,!u),xe(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var Z=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(rt)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(rt)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ti).sub(t).mod(ti)}};function Ne(r,e){return Ko(r.mul(e),64,256)}function Em(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ko(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(er);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,rt,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,i){let o=n.shln(er);if(i)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,rt,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<qe||e>Qe)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=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=Ea.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=Em(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<Fa;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ne(va)),d=Ko(m.sub(new ne(Wa)),64,128).toNumber(),p=Ko(m.add(new ne(Da)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},sn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(er),s=t.sub(e);return i?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),rt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?Z.mulDivCeil(n,t.sub(e),it):Z.mulDivFloor(n,t.sub(e),it)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?Z.mulDivRoundingUp(a,rt,Bo):a.shrn(er)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Bo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new E(u.toString()).mul(l).toFixed(0)),d=new ne(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,k,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[xe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),xe(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)],[b,g]=[xe(new ne(new E(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),xe(new ne(new E(p.amountB.toString()).mul(d).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))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(Kt))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(me),b={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+ce.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,P=n[p],k=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(k>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=Ue.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");g=V.nextStartIndex;let{publicKey:F}=be(e,t,g);x=F,P=n[g],S=U.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),h.tickNext<qe?h.tickNext=qe:h.tickNext>Qe&&(h.tickNext=Qe),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let O;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?O=y:O=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=on.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let V=S.liquidityNet;s&&(V=V.mul(_t)),b.liquidity=ue.addDelta(b.liquidity,V)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=V!=b.tick&&!s&&P.startTickIndex===V,b.tick=V}++k}try{let{nextStartIndex:h,isExist:I}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(be(e,t,h).publicKey),p=h)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(me);if(u){let l=Z.mulDivFloor(i,ni.sub(new ne(o.toString())),ni);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),ni.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=be(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Fm(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=be(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>Qe}static nextInitTick(e,t,n,i,o){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var LP=L([de(8),M("bump"),Tt("index"),B(""),We("protocolFeeRate"),We("tradeFeeRate"),Tt("tickSpacing"),q(w(),8,"")]),vm=L([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Co=L([de(8),Ve("initialized"),B("poolId"),q(vm,1e3,"observations"),q(z(),5,"")]),Wm=L([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),Ga=L([de(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),Tt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),_e("tickCurrent"),Tt("observationIndex"),Tt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(Wm,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")]),Dm=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),Xa=L([de(8),M("bump"),B("nftMint"),B("poolId"),_e("tickLower"),_e("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Dm,3,"rewardInfos"),q(w(),8,"")]),OP=L([de(8),M("bump"),B("poolId"),_e("tickLowerIndex"),_e("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),qm=L([_e("tick"),Ys("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),tr=L([de(8),B("poolId"),_e("startTickIndex"),q(qm,Le,"ticks"),M("initializedTickCount"),q(M(),115,"")]),Ya=L([de(329),q(B(),100,"whitelistMints")]),za=L([de(8),B("poolId"),q(q(w(),8),So,"positiveTickArrayBitmap"),q(q(w(),8),So,"negativeTickArrayBitmap")]);var Ha=se("Raydium_Clmm"),wt={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,i,o,s,a,u,c,l,m,d,p,y){let f=L([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let P=Buffer.from([...wt.createPool,...g]);return new gt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=De({fromPublicKey:i,programId:n}),[d,p]=[new v(o.address),new v(s.address)],y=[wn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Co.span),space:Co.span,programId:n})],{publicKey:f}=_a(n,a,d,p),{publicKey:b}=xo(n,f,d),{publicKey:g}=xo(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new v(o.programId||Ee),p,g,new v(s.programId||Ee),st(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=L([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],ee=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},ee);let te=Buffer.from([...wt.openPosition,...ee]);return new gt({keys:D,programId:e,data:te})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Ro.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,p,f),{publicKey:P}=be(d,p,b),{publicKey:k}=fe(n.wallet,y,Ee),{publicKey:T}=ei(y),{publicKey:h}=xt(d,y),{publicKey:I}=nn(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Ro.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,p,f),{publicKey:P}=be(d,p,b),{publicKey:k}=fe(n.wallet,y,Ee),{publicKey:T}=ei(y),{publicKey:h}=xt(d,y),{publicKey:I}=nn(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?st(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=L([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],ee=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new ja(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},ee);let te=Buffer.from([...wt.openPosition,...ee]);return new gt({keys:D,programId:e,data:te})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new v((await l(1))[0]);else{let x=Ro.generate();d.push(x),m=x.publicKey}let[p,y]=[new v(e.programId),new v(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,y,f),{publicKey:P}=be(p,y,b),{publicKey:k}=fe(n.wallet,m,Ee),{publicKey:T}=ei(m),{publicKey:h}=xt(p,m),{publicKey:I}=nn(p,y,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?st(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:d,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=L([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...wt.closePosition,...u]);return new gt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=fe(n.wallet,i.nftMint,Ee),{publicKey:a}=xt(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...wt.increaseLiquidity,...I]);return new gt({keys:h,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(u,c,l),{publicKey:p}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(u,c,l),{publicKey:p}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:new ja(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...wt.increaseLiquidity,...I]);return new gt({keys:h,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=L([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],S=Buffer.alloc(T.span);T.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...wt.decreaseLiquidity,...S]);return new gt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(c,l,m),{publicKey:y}=be(c,l,d),{publicKey:f}=fe(i.wallet,n.nftMint,u),{publicKey:b}=xt(c,n.nftMint),{publicKey:g}=nn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new v(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new v(e.rewardDefaultInfos[T].mint.address)});let k=[];return k.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,p,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?st(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:k,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g){let P=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ve("isBaseInput")]),k=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],h=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...wt.swap,...h]);return new gt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,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===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:y,f?y:p,u,m,o,s,a,!0,st(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...wt.initReward,...f]);return new gt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=Va(o,s,i.mint).publicKey,u=Jn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=L([M("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Ee,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:X(l),endTime:X(m)},f);let b=Buffer.from([...wt.setRewardEmissions,...f]);return new gt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.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)&&Ha.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Jn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([M("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...wt.collectReward,...l]);return new gt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Ha.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,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===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as zm}from"@solana/web3.js";import{PublicKey as Gm}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),Um={4:3,5:3};var Xm=se("Raydium_liquidity_serum");function eu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Gm.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Xm.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import ir from"bn.js";function Oo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Ym({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Qm({programId:r}){return ie([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Qm({programId:a}),p=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Ym({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=eu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:k,lookupTableAccount:zm.default,configId:Oo({programId:a})}}var Lo;async function uh({connection:r,poolKeysList:e,config:t}){Lo||(Lo=new bn({connection:r}),await Lo.initStableModelLayout());let n=e.map(s=>Ra({poolKeys:s}));return(await Cs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Rs(s,"GetPoolData"),u=new ir(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),d=new ir(Ot(a,"pool_coin_amount")),p=new ir(Ot(a,"pool_pc_amount")),y=new ir(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new ir(f)}})}import Ge from"bn.js";var or=class extends Te{constructor(t){super(t);this.stableLayout=new bn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Ge(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Zr(t[o?"mintB":"mintA"]),[u,c]=[new Ge(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ge(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ge(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let d=ze;s.isZero()||(d=m==="base"?Cr(s.mul(c),u):Cr(s.mul(u),c));let p=Cr(s.mul(l),new Ge(m==="base"?t.mintAmountA:t.mintAmountB).mul(new Ge(10).pow(new Ge(t[m==="base"?"mintA":"mintB"].decimals)))),f=new tt(new Ge(1)).add(i).mul(d).quotient,b=new Ae(a,d),g=new Ae(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new et(n.lpMint.address)}),P=[p,y],k=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),k.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[O,V]=k,[F,j]=T,D=await this.getAmmPoolKeys(n.id),ee=this.createTxBuilder(),Et=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:te}=Et,oe=ke(Et,["tokenAccount"]);ee.addInstruction(oe);let br=await l.handleTokenAccount({side:"in",amount:j,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:lt}=br,hn=ke(br,["tokenAccount"]);ee.addInstruction(hn);let Tn=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:di}=Tn,pi=ke(Tn,["tokenAccount"]);return ee.addInstruction(pi),ee.addInstruction({instructions:[Ka({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:te,quoteTokenAccount:lt,lpTokenAccount:di,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:j,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),ee.addCustomComputeBudget(c),u===0&&await ee.buildV0(),ee.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:k}=S,T=ke(S,["tokenAccount"]);b.addInstruction(T);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=ke(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[ho({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:k,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=ri,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 te of this.scope.account.tokenAccountRawInfos)(b[te.accountInfo.mint.toString()]===void 0||fe(this.scope.ownerPubKey,te.accountInfo.mint,ri).publicKey.equals(te.pubkey))&&(b[te.accountInfo.mint.toString()]=te.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new Ge(0)),k=t.mintA.address===he.WSOL.mint.toString(),T=t.mintB.address===he.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ri,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ri,mint:new et(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let te=[];for(let Et of s.rewardInfos){let br=Et.mint.address===he.WSOL.mint.toString();if(b[Et.mint.address])te.push(b[Et.mint.address]);else{let{account:Tn,instructionParams:Qo}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!br,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Tn||this.logAndCreateError("farm reward account not found:",Et.mint.address),Qo&&f.addInstruction(Qo),te.push(Tn)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],lt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:te},hn=bt[s.programId],di=hn===6?Yn(lt):hn===5?Qn(lt):jn(lt),pi={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[di],instructionTypes:[pi[hn]]})}let O=await this.getAmmPoolKeys(t.id),V=ho({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[F,j]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),ee=await Ie.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:j},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...ee.instructions],signers:ee.signers,instructionTypes:[...ee.instructionTypes],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var j;let b=c.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),g=c.useSOLBalance&&i.mint.equals(nu),P=c.useSOLBalance&&o.mint.equals(nu),k=this.createTxBuilder(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});k.addInstruction(h||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(k.addInstruction(S||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:V,instructionType:F}=Ca(W(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:fe(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return k.addInstruction({instructions:[V],instructionTypes:[F]}),k.addCustomComputeBudget(f),k.versionBuild({txVersion:p,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=Oo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Pa.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Es.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let x=Ba(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new Ge(0),g=new Ge(0);if(!f.isZero())if(p){g=Fn(f.mul($a),Ja);let x=f.sub(g),O=m.add(x);b=d.mul(x).div(O)}else{g=f.mul(new Ge(2)).div(new Ge(1e4));let x=f.sub(g);l==="quote"?b=new Ge(Ia(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new Ge(xa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new Ge(new E(b.toString()).mul(1-s).toFixed(0)),k=b,T=P,h=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:k,minAmountOut:T,currentPrice:y,executionPrice:h,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new et(l.address),programId:new et(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=ke(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=ke(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),c.addInstruction({instructions:[$r({version:k,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[k===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ae}from"@solana/web3.js";import At from"bn.js";var sr=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ae.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new At(new ae(i.address).toBuffer()).gt(new At(new ae(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.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(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},qa),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),k=n.useSOLBalance&&e.mintB.address===J.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(O||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:W(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(F),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});k&&(f=k),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id);console.log(123123444,S);let x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===J.toString(),y=i.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,P&&d.addInstruction(P);let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(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=k,T&&d.addInstruction(T);let h=[];for(let O of t.rewardDefaultInfos){let V=i.useSOLBalance&&O.mint.address===J.toString(),F;if(O.mint.address===t.mintA.address)F=f;else if(O.mint.address===t.mintB.address)F=b;else{let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(O.mint.programId),mint:new ae(O.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&d.addInstruction(D)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let O=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),x=N(N({},x),O.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(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:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ae(l.mint.programId),mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(J),{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 At(new E(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=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:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=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:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===J.toBase58(),p=s.useSOLBalance&&e.mintB.address===J.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?St.add(new At(1)):Kt.sub(new At(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});f=P,k&&m.addInstruction(k)}let b;if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});b=P,k&&m.addInstruction(k)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ae(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?fe(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(k=>!k.liquidity.isZero()||k.rewardInfos.find(T=>!T.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),y=n.useSOLBalance&&d.mintB.address===J.toString(),f=c[d.mintA.address];if(!f){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ae(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=k,T&&l.addInstruction(T)}let b=c[d.mintB.address];if(!b){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ae(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=k,T&&l.addInstruction(T)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let k of d.rewardDefaultInfos){let T=n.useSOLBalance&&k.mint.address===J.toString(),h=c[k.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(k.mint.programId),mint:new ae(k.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,S&&l.addInstruction(S)}c[k.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(d.id);for(let k of t[m.id]){let T=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:k,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new At(0),amountMinA:new At(0),amountMinB:new At(0)});l.addInstruction(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Jn(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(ae.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as oi,TOKEN_PROGRAM_ID as jt,AccountLayout as fu}from"@solana/spl-token";var jm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Hm=Buffer.from("amm_config","utf8"),Zm=Buffer.from("pool","utf8"),$m=Buffer.from("pool_lp_mint","utf8"),Jm=Buffer.from("pool_vault","utf8"),ed=Buffer.from("observation","utf8");function td(r){return ie([jm],r)}function nd(r,e){return ie([Hm,od(e)],r)}function rd(r,e,t,n){return ie([Zm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function id(r,e){return ie([$m,e.toBuffer()],r)}function ru(r,e,t){return ie([Jm,e.toBuffer(),t.toBuffer()],r)}function ii(r,e){return ie([ed,e.toBuffer()],r)}function od(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=nd(r,0).publicKey,i=td(r).publicKey,o=rd(r,n,e,t).publicKey,s=id(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ii(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ar}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No,TOKEN_2022_PROGRAM_ID as su,ASSOCIATED_TOKEN_PROGRAM_ID as sd}from"@solana/spl-token";var ou=se("Raydium_Cpmm_ins"),ur={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 au(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:sd,isSigner:!1,isWritable:!1},{pubkey:gs,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:k},I),new ar({keys:h,programId:r,data:Buffer.from([...ur.initialize,...I])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){ou.info(123123,{mintA:c.toBase58(),mintB:l.toBase58(),lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()});let f=L([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return ou.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.deposit,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.withdraw,...g])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=L([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseInput,...P])})}function mu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=L([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseOutput,...P])})}import at from"bn.js";var du=L([de(8),M("bump"),Ve("disableCreatePool"),Tt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),pu=L([de(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var cr=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=pu.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=du.decode(u.data))}return W(N({},i),{baseReserve:new at(fu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new at(fu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var j,D,ee;let d=i.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),p=new at(new Y(c.mintA.address).toBuffer()).lte(new at(new Y(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===oi.toBase58(),k=i.useSOLBalance&&f.address===oi.toBase58(),[T,h]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:k?{payer:d,amount:g}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||O===void 0)throw Error("you don't has some token account");let F=iu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[au(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,fe(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:jt),new Y((ee=f.programId)!=null?ee:jt),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeBudgetConfig:s,config:a,txVersion:u}=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:c}=this.scope,{bypassAssociatedCheck:l,checkCreateATAOwner:m}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),d=await this.getRpcPoolInfo(t.id),{liquidity:p,anotherAmount:y}=this.computePairAmount({poolInfo:W(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),f=y.raw,b=t.mintA.address===oi.toString(),g=t.mintB.address===oi.toString(),P=this.createTxBuilder(),[k,T]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||(i?n:f).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:f}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(I||{});let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i?f:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?f:n}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(x||{}),!h&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",c.tokenAccounts);let O=await c.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),D=await c.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:O,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:V}=D,F=ke(D,["tokenAccount"]);P.addInstruction(F);let j=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[uu(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),V,h,S,new Y(j.vault.A),new Y(j.vault.B),k,T,new Y(t.lpMint.address),p,i?n:f,i?f:n)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),P.addCustomComputeBudget(s),P.versionBuild({txVersion:u})}async withdrawLiquidity(e){let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new tt(new at(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],{account:m}=this.scope,d=this.createTxBuilder(),[p,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=p.equals(J),b=y.equals(J),g,P,{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});g=k,T&&d.addInstruction(T);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:!b,checkCreateATAOwner:!1});P=h,I&&d.addInstruction(I),(!g||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let S=await m.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});S||this.logAndCreateError("cannot found lp token account","tokenAccounts",m.tokenAccounts);let x=await this.getCpmmPoolKeys(t.id);return d.addInstruction({instructions:[cu(new Y(t.programId),this.scope.ownerPubKey,new Y(x.authority),new Y(t.id),S,g,P,new Y(x.vault.A),new Y(x.vault.B),p,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),d.addCustomComputeBudget(o),d.versionBuild({txVersion:s})}async swap(e){var T,h,x,O,V,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new Y(t.mintA.address),new Y(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:jt),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:jt),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=ke(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=ke(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?lu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),f,g,new Y(k.vault.A),new Y(k.vault.B),new Y((x=t.mintA.programId)!=null?x:jt),new Y((O=t.mintB.programId)!=null?O:jt),m,d,ii(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):mu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),g,f,new Y(k.vault.B),new Y(k.vault.A),new Y((V=t.mintB.programId)!=null?V:jt),new Y((F=t.mintA.programId)!=null?F:jt),d,m,ii(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,baseIn:i}){let o=new at(new E(t).mul(10**e[i?"mintA":"mintB"].decimals).toFixed(0)),s=Zr(e[i?"mintB":"mintA"]),[a,u]=[new at(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new at(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],c=new at(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",a.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?e.mintA.symbol:e.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",i?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let l=i?"base":"quote";this.logDebug("input side:",l);let m=o.mul(c).div(l==="base"?a:u),d=ze;o.isZero()||(d=ad(m,a,u,c)[i?"amountB":"amountA"]);let y=new tt(new at(1)).add(n).mul(d).quotient,f=new Ae(s,d),b=new Ae(s,y);return this.logDebug("anotherAmount:",f.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:f,maxAnotherAmount:b,liquidity:m}}};function ad(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new at(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new at(1))),{amountA:i,amountB:o}}var lr=class extends Te{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(J));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),vn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[vn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as cd,Transaction as Mo,TransactionInstruction as ld}from"@solana/web3.js";import yu from"bn.js";var Xe=class extends Te{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new yu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.getPdaOwnerId(t,m,i,l).publicKey));let u=await ht(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!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new yu(0))).filter(x=>!x).length!==3,I=o>k&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Xe.VERSION_PROJECT[m],openTime:k,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,O)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[O].debtAmount.add(P.tokenInfo[O].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,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:[Xe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,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:[Xe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Nr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Mo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Mo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Mo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:ud,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new ld({keys:o,programId:e,data:a})}},ut=Xe;ut.CLAIMED_NUM=3,ut.POOL_LAYOUT=L([de(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(L([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),ut.OWNER_LAYOUT=L([de(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(L([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),ut.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cd(e)),ut.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ut.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ku}from"@solana/spl-token";import mr from"bn.js";import{TransactionInstruction as dd,SYSVAR_RENT_PUBKEY as pd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{createInitializeAccountInstruction as gu}from"@solana/spl-token";import{SystemProgram as un,Transaction as wu}from"@solana/web3.js";function md(r="accountFlags"){let e=new qr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var _o=L([de(5),md("accountFlags"),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]);function fd({programId:r,marketInfo:e}){let t=L([M("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),Tt("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:pd,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new dd({keys:n,programId:r,data:i})}async function Au({connection:r,wallet:e,marketInfo:t}){let n=new wu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:bu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:bu}),gu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),gu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new wu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(_o.span),space:_o.span,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),fd({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:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:o,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var An=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:ku}),f=De({fromPublicKey:u,programId:ku}),b=0,g=new mr(100);function P(){let V=new mr(0);for(;;)try{return{vaultOwner:Vo.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new mr(25555)))throw Error("find vault owner error")}}let{vaultOwner:k,vaultSignerNonce:T}=P(),h=new mr(Math.round(10**e.decimals*n)),I=new mr(Math.round(n*10**t.decimals*i));if(h.eq(ze))throw Error("lot size is too small");if(I.eq(ze))throw Error("tick size or lot size is too small");let S=await Au({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:k,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});let O=[];for await(let V of S.slice(1,S.length)){let F=this.createTxBuilder();F.addCustomComputeBudget(a),F.addInstruction({instructions:V.transaction.instructions,signers:V.signer,instructionTypes:V.instructionTypes});let j=await F.versionBuild({txVersion:s});O.push(j)}return x.versionMultiBuild({extraPreBuildData:O,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Vo(e.mint),quoteMin:new Vo(t.mint)}},txVersion:s})}};import{PublicKey as pr}from"@solana/web3.js";import{PublicKey as yd,TransactionInstruction as Fo,SYSVAR_CLOCK_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";var Eo=L([M("instruction"),qs("amount")]),dr=L([M("instruction")]);function HI({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new yd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:vo,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Ii,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(Eo.span);return Eo.encode({instruction:1,amount:Number(e)},i),new Fo({keys:n,programId:r,data:i})}function si({programId:r},e){let t=[{pubkey:vo,isSigner:!1,isWritable:!1},{pubkey:Ii,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(dr.span);return dr.encode({instruction:2},n),new Fo({keys:t,programId:r,data:n})}function Wo(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(dr.span);dr.encode({instruction:2},s);let a=[{pubkey:vo,isWritable:!1,isSigner:!1},{pubkey:bd,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Fo({programId:e.programId,keys:a,data:s})}import Pu from"bn.js";var gd={[Vn.IDO_PROGRAM_ID_V1.toString()]:1,[Vn.IDO_PROGRAM_ID_V2.toString()]:2,[Vn.IDO_PROGRAM_ID_V3.toString()]:3,[Vn.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=gd[t.programId];a||this.logAndCreateError("invalid version",a);let u=pe(t),[c,l]=[!new Pu(e.coin).isZero(),!new Pu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(J),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[si({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[si({programId:new pr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[si({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new pr(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 pr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Wo(W(N({},g),{side:"base"}))]:[],...l?[Wo(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as wd}from"@solana/web3.js";import{MintLayout as Ad,TOKEN_2022_PROGRAM_ID as Do,TOKEN_PROGRAM_ID as qo}from"@solana/spl-token";var fr=class extends Te{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(Pt.address,Pt),this._mintGroup.official.add(Pt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,W(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?Do.toBase58():qo.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?Do.toBase58():qo.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Do.toBase58():qo.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Pt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new wd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ad.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 ai=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n,this._owner=i?new pt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=se("Raydium"),this.farm=new Hn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Wn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new or({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new fr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new lr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new sr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new cr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new ut({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new An({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({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){let t=kd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new vr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new ai(W(N({},t),{api:u}));return await c.fetchAvailabilityStatus(e.disableFeatureCheck),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Wr);return this._owner.publicKey}setOwner(e){return this._owner=e?new pt(e):void 0,this}get connection(){if(!this._connection)throw new Error(vs);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(Wr),new Error(Wr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()-e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as Xo,TOKEN_2022_PROGRAM_ID as Uo}from"@solana/spl-token";import{PublicKey as ct,TransactionInstruction as zo,SystemProgram as Tu}from"@solana/web3.js";import Go from"bn.js";function nB(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([M("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Tu.programId,isSigner:!1,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1},{pubkey:new ct(t.programId),isSigner:!1,isWritable:!1},{pubkey:new ct(t.id),isSigner:!1,isWritable:!0},{pubkey:new ct(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=pe(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=pe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=pe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new zo({keys:p,programId:r,data:y})}function rB(r,e,t,n,i,o,s,a,u,c){let l=L([M("instruction")]),m=[{pubkey:Tu.programId,isSigner:!1,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new ct(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=pe(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=pe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=pe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new zo({keys:m,programId:r,data:d})}function hu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=pe(e),u=s.mintA.address===t;return[{pubkey:new ct(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Uo)||a.mintB.programId.equals(Uo)?[{pubkey:Uo,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:st(new ct(String(r.programId)),new ct(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function Pd(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=L([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1}];f.push(...hu(a,c,o,t,n,p[0])),f.push(...hu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new zo({keys:f,programId:r,data:b})}async function iB({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=pe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await Ie.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new Go(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[$r({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Go(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?_.AmmV5SwapBaseIn:_.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],p=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Pd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,d,p,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Go(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import xu from"bn.js";var Yo=new xu(1e6);function hd(r,e,t){return r.mul(e).add(t).sub(new xu(1)).div(t)}function Iu(r,e,t){return r.mul(e).div(t)}var ui=class{static tradingFee(e,t){return hd(e,t,Yo)}static protocolFee(e,t){return Iu(e,t,Yo)}static fundFee(e,t){return Iu(e,t,Yo)}};import yr from"bn.js";function ci(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Td(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=ci(r,e);if(n.gt(Pn)){t=t.add(new yr(1));let i=r.div(t);n=ci(r,t),n.gt(Pn)&&(i=i.add(new yr(1)))}return[t,e]}var Pn=new yr(0),li=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Td(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return ci(e.mul(n),t).gt(Pn)&&s.gt(Pn)&&(s=s.add(new yr(1))),ci(e.mul(i),t).gt(Pn)&&a.gt(Pn)&&(a=a.add(new yr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Bu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Bu||{}),Su=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=ui.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=li.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Ku={[Ei.toBase58()]:3},Cu={3:Ei};var Id=L([de(5),de(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]),Ru={3:Id};import{PublicKey as Lu}from"@solana/web3.js";var mi=se("Serum"),Ou=class{static getProgramId(e){let t=Cu[e];return t||mi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Ku[t];return n||mi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Ru[e];return t||mi.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=Lu.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return mi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Lu.default,nonce:i}}};var $B=r=>r;export{Km as AMM_CONFIG_SEED,LP as AmmConfigLayout,Fa as BIT_PRECISION,sr as Clmm,Ie as ClmmInstrument,li as ConstantProductCurve,du as CpmmConfigInfoLayout,ui as CpmmFee,pu as CpmmPoolInfoLayout,Su as CurveCalculator,pm as DataElement,So as EXTENSION_TICKARRAY_BITMAP_SIZE,ua as FARM_LOCK_MINT,ca as FARM_LOCK_VAULT,bt as FARM_PROGRAM_TO_VERSION,ma as FARM_VERSION_TO_LEDGER_LAYOUT,la as FARM_VERSION_TO_STATE_LAYOUT,ni as FEE_RATE_DENOMINATOR,Yo as FEE_RATE_DENOMINATOR_VALUE,Vm as FETCH_TICKARRAY_COUNT,_m as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,Um as LIQUIDITY_VERSION_TO_SERUM_VERSION,YA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,va as LOG_B_2_X32,Wa as LOG_B_P_ERR_MARGIN_LOWER_X64,Da as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,_o as MARKET_STATE_LAYOUT_V2,Id as MARKET_STATE_LAYOUT_V3,Ru as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,Qe as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,gn as MODEL_DATA_PUBKEY,Ou as Market,Z as MathUtil,Bo as MaxU64,Ea as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,Nm as OPERATION_SEED,Co as ObservationInfoLayout,vm as ObservationLayout,Ya as OperationLayout,Lm as POOL_REWARD_VAULT_SEED,Cm as POOL_SEED,Mm as POOL_TICK_ARRAY_BITMAP_SEED,Rm as POOL_VAULT_SEED,Ma as POSITION_SEED,Ga as PoolInfoLayout,Ue as PoolUtils,Xa as PositionInfoLayout,Dm as PositionRewardInfoLayout,rr as PositionUtils,OP as ProtocolPositionLayout,ti as Q128,it as Q64,ai as Raydium,Wm as RewardInfo,Bu as RoundDirection,Ku as SERUM_PROGRAMID_TO_VERSION,Cu as SERUM_VERSION_TO_PROGRAMID,Pt as SOL_INFO,hA as SPL_MINT_LAYOUT,H as SqrtPriceMath,bn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Om as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,kk as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,nr as TickArrayBitmapExtensionUtils,tr as TickArrayLayout,qm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,er as U64Resolution,hk as U64_IGNORE_RANGE,sa as Voter,Yl as VoterDepositEntry,zl as VoterLockup,oa as VoterRegistrar,Xl as VoterVotingMintConfig,me as ZERO,wo as addLiquidityLayout,Zi as associatedLedgerAccountLayout,lo as calFarmRewardAmount,hd as ceilDiv,dr as claimLayout,Nt as closeAccountInstruction,fa as createAssociatedLedgerAccountInstruction,Pa as createPoolFeeLayout,Ca as createPoolV4InstructionV2,zA as createPoolV4Layout,It as createWSolAccountInstructions,Ye as dwLayout,to as farmAddRewardLayout,aw as farmLedgerLayoutV3_1,qn as farmLedgerLayoutV3_2,uw as farmLedgerLayoutV5_1,ra as farmLedgerLayoutV5_2,ia as farmLedgerLayoutV6_1,pa as farmRewardInfoToConfig,Ji as farmRewardLayout,eo as farmRewardRestartLayout,Gl as farmRewardTimeInfoLayout,ta as farmStateV3Layout,na as farmStateV5Layout,Dn as farmStateV6Layout,Nw as fetchMultipleFarmInfoAndUpdate,uh as fetchMultipleInfo,yo as fixedSwapInLayout,bo as fixedSwapOutLayout,Iu as floorDiv,Tm as formatLayout,De as generatePubKey,da as getAssociatedAuthority,Oo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Gn as getAssociatedLedgerPoolAccount,Ym as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,nd as getCpmmPdaAmmConfigId,rd as getCpmmPdaPoolId,iu as getCreatePoolKeys,mo as getDepositEntryIndex,xa as getDxByDyBaseIn,Ia as getDyByDxBaseIn,jr as getFarmLedgerLayout,Ql as getFarmStateLayout,Qm as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,aP as getLiquidityFromAmounts,gk as getPdaAmmConfigId,st as getPdaExBitmapAccount,id as getPdaLpMint,ei as getPdaMetadataKey,ii as getPdaObservationId,Jn as getPdaOperationAccount,xt as getPdaPersonalPositionAddress,td as getPdaPoolAuthority,_a as getPdaPoolId,Va as getPdaPoolRewardVaulId,xo as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,be as getPdaTickArrayAddress,ru as getPdaVault,io as getRegistrarAddress,Ba as getStablePrice,co as getTokenOwnerRecordAddress,ao as getVoterAddress,uo as getVoterWeightRecordAddress,so as getVotingMintAuthority,oo as getVotingTokenMint,rm as governanceCreateTokenOwnerRecord,dk as i16ToBytes,Jr as i32ToBytes,go as initPoolLayout,ji as initTokenAccountInstruction,fd as initializeMarket,no as isValidFarmVersion,$n as isZero,Mw as judgeFarmType,To as leadingZeros,Na as leastSignificantBit,lm as liquidityStateV4Layout,mm as liquidityStateV5Layout,$r as makeAMMSwapInstruction,Ka as makeAddLiquidityInstruction,fo as makeAddNewRewardInstruction,si as makeClaimInstruction,Wo as makeClaimInstructionV4,au as makeCreateCpmmPoolInInstruction,ya as makeCreateFarmInstruction,Au as makeCreateMarketInstruction,ba as makeCreatorWithdrawFarmRewardInstruction,uu as makeDepositCpmmInInstruction,ga as makeDepositInstructionV3,wa as makeDepositInstructionV5,Aa as makeDepositInstructionV6,Zw as makeDepositTokenInstruction,Jw as makeDepositWithdrawInstruction,lk as makeInitPoolInstructionV4,HI as makePurchaseInstruction,po as makeRestartRewardInstruction,Ra as makeSimulatePoolInfoInstruction,lu as makeSwapCpmmBaseInInInstruction,mu as makeSwapCpmmBaseOutInInstruction,Bm as makeSwapFixedInInstruction,Sm as makeSwapFixedOutInstruction,iB as makeSwapInstruction,vn as makeTransferInstruction,cu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Qn as makeWithdrawInstructionV5,Yn as makeWithdrawInstructionV6,$w as makeWithdrawTokenInstruction,Pk as mockCreatePoolInfo,qa as mockV3CreatePoolInfo,fm as modelDataInfoLayout,Oa as mostSignificantBit,ea as parseTokenAccountResp,RA as parseTokenInfo,zt as poolTypeV6,Eo as purchaseLayout,Dl as realFarmStateV3Layout,ql as realFarmStateV5Layout,Ul as realFarmV6Layout,ho as removeLiquidityInstruction,Ao as removeLiquidityLayout,nB as route1Instruction,rB as route2Instruction,Pd as routeInstruction,ck as simulatePoolInfoInstruction,NA as solToWSolToken,qt as splAccountLayout,Zr as toToken,OA as toTokenAmount,LA as toTokenInfo,Io as trailingZeros,La as u16ToBytes,pk as u32ToBytes,$B as unionArr,jl as updateFarmPoolInfo,ro as validateFarmRewards,om as voterStakeRegistryCreateDepositEntry,im as voterStakeRegistryCreateVoter,em as voterStakeRegistryDeposit,tm as voterStakeRegistryUpdateVoterWeightRecord,nm as voterStakeRegistryWithdraw,MA as wSolToSolToken,$i as withdrawRewardLayout};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|