@raydium-io/raydium-sdk-v2 0.0.45-alpha → 0.0.46-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/api.d.ts +1 -1
- package/lib/api/index.d.ts +1 -1
- package/lib/api/type.d.ts +1 -1
- package/lib/common/accountInfo.d.ts +1 -1
- package/lib/common/bignumber.d.ts +1 -1
- package/lib/common/fractionUtil.d.ts +1 -1
- package/lib/common/index.d.ts +1 -1
- package/lib/common/transfer.d.ts +1 -1
- package/lib/common/txTool/txTool.d.ts +1 -1
- package/lib/common/txTool/txUtils.d.ts +1 -1
- package/lib/common/utility.d.ts +1 -1
- package/lib/index.d.ts +3 -3
- 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/module/amount.d.ts +1 -1
- package/lib/module/fraction.d.ts +1 -1
- package/lib/module/index.d.ts +1 -1
- package/lib/module/percent.d.ts +1 -1
- package/lib/module/price.d.ts +1 -1
- package/lib/raydium/account/account.d.ts +3 -3
- package/lib/raydium/account/index.d.ts +1 -1
- package/lib/raydium/account/instruction.d.ts +1 -1
- package/lib/raydium/account/types.d.ts +1 -1
- package/lib/raydium/account/util.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +3 -3
- package/lib/raydium/clmm/index.d.ts +3 -3
- package/lib/raydium/clmm/instrument.d.ts +2 -2
- package/lib/raydium/clmm/layout.d.ts +6 -6
- package/lib/raydium/clmm/type.d.ts +2 -2
- package/lib/raydium/clmm/utils/math.d.ts +2 -2
- package/lib/raydium/clmm/utils/pool.d.ts +2 -2
- package/lib/raydium/clmm/utils/position.d.ts +2 -2
- package/lib/raydium/clmm/utils/tick.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
- package/lib/raydium/cpmm/cpmm.d.ts +3 -3
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/layout.d.ts +1 -1
- package/lib/raydium/cpmm/type.d.ts +1 -1
- package/lib/raydium/farm/config.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +3 -3
- package/lib/raydium/farm/index.d.ts +1 -1
- package/lib/raydium/farm/instruction.d.ts +1 -1
- package/lib/raydium/farm/layout.d.ts +1 -1
- package/lib/raydium/farm/type.d.ts +1 -1
- package/lib/raydium/farm/util.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +3 -3
- package/lib/raydium/ido/index.d.ts +3 -3
- package/lib/raydium/ido/instruction.d.ts +1 -1
- package/lib/raydium/ido/type.d.ts +1 -1
- package/lib/raydium/index.d.ts +3 -3
- 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/index.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/layout.d.ts +6 -6
- package/lib/raydium/liquidity/liquidity.d.ts +3 -3
- package/lib/raydium/liquidity/liquidity.js +1 -1
- package/lib/raydium/liquidity/liquidity.js.map +1 -1
- package/lib/raydium/liquidity/liquidity.mjs +1 -1
- package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
- package/lib/raydium/liquidity/type.d.ts +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/index.d.ts +3 -3
- package/lib/raydium/moduleBase.d.ts +3 -3
- package/lib/raydium/raydium.d.ts +3 -3
- 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/constant.d.ts +1 -1
- package/lib/raydium/token/index.d.ts +1 -1
- package/lib/raydium/token/token.d.ts +3 -3
- package/lib/raydium/token/type.d.ts +1 -1
- package/lib/raydium/token/utils.d.ts +1 -1
- package/lib/raydium/tradeV2/index.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/trade.d.ts +3 -3
- package/lib/raydium/tradeV2/type.d.ts +2 -2
- package/lib/raydium/type.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +3 -3
- package/lib/raydium/utils1216/utils1216.d.ts +3 -3
- package/lib/{raydium-b4280d2c.d.ts → raydium-506bacbc.d.ts} +3 -3
- package/lib/{type-80826393.d.ts → type-389634c9.d.ts} +1 -1
- package/lib/{type-8e0c46e7.d.ts → type-9fe71e3c.d.ts} +8 -8
- package/package.json +1 -1
- package/src/raydium/liquidity/liquidity.ts +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Bo=Object.defineProperty,Io=Object.defineProperties;var So=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Or=Object.prototype.hasOwnProperty,Vr=Object.prototype.propertyIsEnumerable;var Fr=(r,e,t)=>e in r?Bo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))Or.call(e,t)&&Fr(r,t,e[t]);if(an)for(var t of an(e))Vr.call(e,t)&&Fr(r,t,e[t]);return r},Y=(r,e)=>Io(r,So(e));var Ce=(r,e)=>{var t={};for(var n in r)Or.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&an)for(var n of an(r))e.indexOf(n)<0&&Vr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Re}from"@solana/web3.js";import{NATIVE_MINT as xo,TOKEN_PROGRAM_ID as Wn}from"@solana/spl-token";import Ws from"big.js";import kn from"bn.js";import Le from"bn.js";var It=9e15,st=1e9,Gn="0123456789abcdef",cn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ln="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Un={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-It,maxE:It,crypto:!1},Gr,$e,q=!0,dn="[DecimalError] ",ot=dn+"Invalid argument: ",Ur=dn+"Precision limit exceeded",Xr=dn+"crypto unavailable",zr="[object Decimal]",Ae=Math.floor,fe=Math.pow,Ko=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Lo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,No=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ve=1e7,W=7,Ro=9007199254740991,Co=cn.length-1,Xn=ln.length-1,x={toStringTag:zr};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),v(r)};x.ceil=function(){return v(new this.constructor(this),this.e+1,2)};x.clampedTo=x.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(ot+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.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};x.cosine=x.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())+W,n.rounding=1,t=Eo(n,$r(n,t)),n.precision=r,n.rounding=e,v($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.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(q=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),r=Ae((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ae(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(v(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")&&(v(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return q=!0,v(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ae(this.e/W))*W,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return ae(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return v(ae(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return v(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.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/fn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=St(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 v(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.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=St(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/fn(5,r)),i=St(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,v(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.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()?Oe(t,i,o):new t(0):new t(NaN):e.isZero()?Oe(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Oe(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.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,q=!1,t=t.times(t).minus(1).sqrt().plus(t),q=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.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,q=!1,t=t.times(t).plus(1).sqrt().plus(t),q=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.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?v(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.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=Oe(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)))};x.inverseTangent=x.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<=Xn)return s=Oe(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Xn)return s=Oe(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/W+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(q=!1,e=Math.ceil(a/W),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)),q=!0,v(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Ae(this.e/W)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.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(q=!1,a=m+p,s=it(c,a),n=e?mn(l,a+10):it(r,a),u=ae(s,n,a,1),Vt(u.d,i=m,d))do if(a+=10,s=it(c,a),n=e?mn(l,a+10):it(r,a),u=ae(s,n,a,1),!o){+we(u.d).slice(i+1,i+15)+1==1e14&&(u=v(u,m+1,0));break}while(Vt(u.d,i+=10,d));return q=!0,v(u,m,d)};x.minus=x.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 q?v(r,a,u):r}if(t=Ae(r.e/W),l=Ae(p.e/W),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/W),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]=Ve-1;--c[i],c[n]+=Ve}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=pn(c,t),q?v(r,a,u):r):new y(u===3?-0:0)};x.modulo=x.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]?v(new n(t),n.precision,n.rounding):(q=!1,n.modulo==9?(e=ae(t,r.abs(),0,3,1),e.s*=r.s):e=ae(t,r,0,n.modulo,1),e=e.times(r),q=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return zn(this)};x.naturalLogarithm=x.ln=function(){return it(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,v(r)};x.plus=x.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)),q?v(r,a,u):r;if(o=Ae(m.e/W),n=Ae(r.e/W),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/W),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)/Ve|0,c[i]%=Ve;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=pn(c,n),q?v(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(ot+r);return t.d?(e=Yr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return v(new e(r),r.e+1,e.rounding)};x.sine=x.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())+W,n.rounding=1,t=_o(n,$r(n,t)),n.precision=r,n.rounding=e,v($e>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.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(q=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(v(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")&&(v(n,u+1,1),r=!n.times(n).eq(s));break}return q=!0,v(n,u,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,v($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.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=Ae(l.e/W)+Ae(r.e/W),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%Ve|0,e=a/Ve|0;o[i]=(o[i]+e)%Ve|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=pn(o,t),q?v(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return Yn(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ke(r,0,st),e===void 0?e=n.rounding:Ke(e,0,8),v(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,!0):(Ke(r,0,st),e===void 0?e=i.rounding:Ke(e,0,8),n=v(new i(n),r+1,e),t=Ue(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ue(i):(Ke(r,0,st),e===void 0?e=o.rounding:Ke(e,0,8),n=v(new o(i),r+i.e+1,e),t=Ue(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.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=Yr(y)-p.e-1,s=o%W,e.d[0]=fe(10,s<0?W+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(ot+a);r=a.gt(e)?o>0?e:c:a}for(q=!1,a=new f(we(y)),l=f.precision,f.precision=o=y.length*W*2;m=ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ae(c,n,o,1).minus(p).abs().cmp(ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,q=!0,d};x.toHexadecimal=x.toHex=function(r,e){return Yn(this,16,r,e)};x.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:Ke(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]?(q=!1,t=ae(t,r,0,e,1).times(r),q=!0,v(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Yn(this,8,r,e)};x.toPower=x.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(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return v(a,n,o);if(e=Ae(r.e/W),e>=r.d.length-1&&(t=c<0?-c:c)<=Ro)return i=jr(u,a,t,n),r.s<0?new u(1).div(i):v(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=fe(+a,c),e=t==0||!isFinite(t)?Ae(c*(Math.log("0."+we(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):(q=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=zn(r.times(it(a,n+t)),n),i.d&&(i=v(i,n+5,1),Vt(i.d,n,o)&&(e=n+10,i=v(zn(r.times(it(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=v(i,n+1,0)))),i.s=s,q=!0,u.rounding=o,v(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ke(r,1,st),e===void 0?e=i.rounding:Ke(e,0,8),n=v(new i(n),r,e),t=Ue(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ke(r,1,st),e===void 0?e=n.rounding:Ke(e,0,8)),v(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return v(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function we(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=W-n.length,t&&(o+=rt(t)),o+=n;s=r[e],n=s+"",t=W-n.length,t&&(o+=rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(r,e,t){if(r!==~~r||r<e||r>t)throw Error(ot+r)}function Vt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=W,i=0):(i=Math.ceil((e+1)/W),e%=W),o=fe(10,W-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)==fe(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)==fe(10,e-3)-1,s}function un(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]+=Gn.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 Eo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/fn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=St(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,g,w,k,h,P,A,K,S,B,_,V,U,ue,ne=n.constructor,oe=n.s==i.s?1:-1,j=n.d,Z=i.d;if(!j||!j[0]||!Z||!Z[0])return new ne(!n.s||!i.s||(j?Z&&j[0]==Z[0]:!Z)?NaN:j&&j[0]==0||!Z?oe*0:oe/0);for(u?(p=1,l=n.e-i.e):(u=Ve,p=W,l=Ae(n.e/p)-Ae(i.e/p)),U=Z.length,_=j.length,w=new ne(oe),k=w.d=[],m=0;Z[m]==(j[m]||0);m++);if(Z[m]>(j[m]||0)&&l--,o==null?(K=o=ne.precision,s=ne.rounding):a?K=o+(n.e-i.e)+1:K=o,K<0)k.push(1),y=!0;else{if(K=K/p+2|0,m=0,U==1){for(d=0,Z=Z[0],K++;(m<_||d)&&K--;m++)S=d*u+(j[m]||0),k[m]=S/Z|0,d=S%Z|0;y=d||m<_}else{for(d=u/(Z[0]+1)|0,d>1&&(Z=r(Z,d,u),j=r(j,d,u),U=Z.length,_=j.length),B=U,h=j.slice(0,U),P=h.length;P<U;)h[P++]=0;ue=Z.slice(),ue.unshift(0),V=Z[0],Z[1]>=u/2&&++V;do d=0,c=e(Z,h,U,P),c<0?(A=h[0],U!=P&&(A=A*u+(h[1]||0)),d=A/V|0,d>1?(d>=u&&(d=u-1),f=r(Z,d,u),g=f.length,P=h.length,c=e(f,h,g,P),c==1&&(d--,t(f,U<g?ue:Z,g,u))):(d==0&&(c=d=1),f=Z.slice()),g=f.length,g<P&&f.unshift(0),t(h,f,P,u),c==-1&&(P=h.length,c=e(Z,h,U,P),c<1&&(d++,t(h,U<P?ue:Z,P,u))),P=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[P++]=j[B]||0:(h=[j[B]],P=1);while((B++<_||h[0]!==void 0)&&K--);y=h[0]!==void 0}k[0]||k.shift()}if(p==1)w.e=l,Gr=y;else{for(m=1,d=k[0];d>=10;d/=10)m++;w.e=m+l*p-1,v(w,a?o+w.e+1:o,s,y)}return w}}();function v(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+=W,s=e,l=m[d=0],u=l/fe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/W),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=W,s=o-W+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=W,s=o-W+i,u=s<0?0:l/fe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(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/fe(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]=fe(10,(W-e%W)%W),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,W-o),m[d]=s>0?(l/fe(10,i-s)%fe(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]==Ve&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Ve)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return q&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ue(r,e,t){if(!r.isFinite())return Zr(r);var n,i=r.e,o=we(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+rt(-i-1)+o,t&&(n=t-s)>0&&(o+=rt(n))):i>=s?(o+=rt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+rt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=rt(n))),o}function pn(r,e){var t=r[0];for(e*=W;t>=10;t/=10)e++;return e}function mn(r,e,t){if(e>Co)throw q=!0,t&&(r.precision=t),Error(Ur);return v(new r(cn),e,1,!0)}function Oe(r,e,t){if(e>Xn)throw Error(Ur);return v(new r(ln),e,t,!0)}function Yr(r){var e=r.length-1,t=e*W+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 rt(r){for(var e="";r--;)e+="0";return e}function jr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/W+4);for(q=!1;;){if(t%2&&(o=o.times(e),Dr(o.d,s)&&(i=!0)),t=Ae(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Dr(e.d,s)}return q=!0,o}function Wr(r){return r.d[r.d.length-1]&1}function Qr(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 zn(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?(q=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=v(o.times(r),u,1),t=t.times(++l),a=s.plus(ae(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(i=m;i--;)s=v(s.times(s),u,1);if(e==null)if(c<3&&Vt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return v(s,d.precision=y,p,q=!0);else return d.precision=y,s}s=a}}function it(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,w=f.constructor,k=w.rounding,h=w.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new w(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(q=!1,l=h):l=e,w.precision=l+=y,t=we(g),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=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new w("0."+t),o++):f=new w(n+"."+t.slice(1))}else return c=mn(w,l+2,h).times(o+""),f=it(new w(n+"."+t.slice(1)),l-y).plus(c),w.precision=h,e==null?v(f,h,k,q=!0):f;for(m=f,u=s=f=ae(f.minus(1),f.plus(1),l,1),d=v(f.times(f),l,1),i=3;;){if(s=v(s.times(d),l,1),c=u.plus(ae(s,new w(i),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(mn(w,l+2,h).times(o+""))),u=ae(u,new w(p),l,1),e==null)if(Vt(u.d,l-y,k,a))w.precision=l+=y,c=s=f=ae(m.minus(1),m.plus(1),l,1),d=v(f.times(f),l,1),i=a=1;else return v(u,w.precision=h,k,q=!0);else return w.precision=h,u;u=c,i+=2}}function Zr(r){return String(r.s*r.s/0)}function Hn(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)%W,t<0&&(n+=W),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=W;n<i;)r.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),q&&(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 Mo(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hr.test(e))return Hn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Lo.test(e))t=16,e=e.toLowerCase();else if(Ko.test(e))t=2;else if(No.test(e))t=8;else throw Error(ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=jr(n,new n(t),o,o*2)),c=un(e,t,Ve),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=pn(c,l),r.d=c,q=!1,s&&(r=ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?fe(2,u):Wt.pow(2,u))),q=!0,r)}function _o(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:St(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/fn(5,t)),e=St(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 St(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/W);for(q=!1,u=t.times(t),a=new r(n);;){if(s=ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return q=!0,s.d.length=m+1,s}function fn(r,e){for(var t=r;--e;)t*=r;return t}function $r(r,e){var t,n=e.s<0,i=Oe(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Wr(t)?n?2:3:n?4:1,e;$e=Wr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Yn(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(Ke(t,1,st),n===void 0?n=p.rounding:Ke(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Zr(r);else{for(l=Ue(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=un(Ue(d),10,i),d.e=d.d.length),m=un(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Gr),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+=Gn.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=un(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Gn.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 Dr(r,e){if(r.length>e)return r.length=e,!0}function vo(r){return new this(r).abs()}function Fo(r){return new this(r).acos()}function Oo(r){return new this(r).acosh()}function Vo(r,e){return new this(r).plus(e)}function Wo(r){return new this(r).asin()}function Do(r){return new this(r).asinh()}function qo(r){return new this(r).atan()}function Go(r){return new this(r).atanh()}function Uo(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=Oe(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Oe(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Oe(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(r,e,o,1)),e=Oe(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(r,e,o,1)),t}function Xo(r){return new this(r).cbrt()}function zo(r){return v(r=new this(r),r.e+1,2)}function Ho(r,e,t){return new this(r).clamp(e,t)}function Yo(r){if(!r||typeof r!="object")throw Error(dn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,st,"rounding",0,8,"toExpNeg",-It,0,"toExpPos",0,It,"maxE",0,It,"minE",-It,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Un[t]),(n=r[t])!==void 0)if(Ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ot+t+": "+n);if(t="crypto",i&&(this[t]=Un[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(Xr);else this[t]=!1;else throw Error(ot+t+": "+n);return this}function jo(r){return new this(r).cos()}function Qo(r){return new this(r).cosh()}function Jr(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,qr(o)){c.s=o.s,q?!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++;q?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 Hn(c,o.toString())}else if(u!=="string")throw Error(ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hr.test(o)?Hn(c,o):Mo(c,o)}if(i.prototype=x,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=Yo,i.clone=Jr,i.isDecimal=qr,i.abs=vo,i.acos=Fo,i.acosh=Oo,i.add=Vo,i.asin=Wo,i.asinh=Do,i.atan=qo,i.atanh=Go,i.atan2=Uo,i.cbrt=Xo,i.ceil=zo,i.clamp=Ho,i.cos=jo,i.cosh=Qo,i.div=Zo,i.exp=$o,i.floor=Jo,i.hypot=es,i.ln=ts,i.log=ns,i.log10=is,i.log2=rs,i.max=os,i.min=ss,i.mod=as,i.mul=us,i.pow=cs,i.random=ls,i.round=ms,i.sign=ds,i.sin=ps,i.sinh=fs,i.sqrt=bs,i.sub=ys,i.sum=gs,i.tan=ws,i.tanh=hs,i.trunc=ks,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 Zo(r,e){return new this(r).div(e)}function $o(r){return new this(r).exp()}function Jo(r){return v(r=new this(r),r.e+1,3)}function es(){var r,e,t=new this(0);for(q=!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 q=!0,new this(1/0);t=e}return q=!0,t.sqrt()}function qr(r){return r instanceof Wt||r&&r.toStringTag===zr||!1}function ts(r){return new this(r).ln()}function ns(r,e){return new this(r).log(e)}function rs(r){return new this(r).log(2)}function is(r){return new this(r).log(10)}function os(){return Qr(this,arguments,"lt")}function ss(){return Qr(this,arguments,"gt")}function as(r,e){return new this(r).mod(e)}function us(r,e){return new this(r).mul(e)}function cs(r,e){return new this(r).pow(e)}function ls(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ke(r,1,st),n=Math.ceil(r/W),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(Xr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=W,n&&r&&(i=fe(10,W-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-=W)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function ms(r){return v(r=new this(r),r.e+1,this.rounding)}function ds(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function ps(r){return new this(r).sin()}function fs(r){return new this(r).sinh()}function bs(r){return new this(r).sqrt()}function ys(r,e){return new this(r).sub(e)}function gs(){var r=0,e=arguments,t=new this(e[r]);for(q=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return q=!0,v(t,this.precision,this.rounding)}function ws(r){return new this(r).tan()}function hs(r){return new this(r).tanh()}function ks(r){return v(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var Wt=x.constructor=Jr(Un);cn=new Wt(cn);ln=new Wt(ln);var E=Wt;import{PublicKey as Jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as ti,SYSVAR_RENT_PUBKEY as Ts}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ps=[T({pubkey:As,isWritable:!1}),T({pubkey:ti.programId,isWritable:!1}),T({pubkey:Ts,isWritable:!1})];function jn({publicKey:r,transformSol:e}){let t=Qn(r.toString());if(t instanceof ce)return e&&t.equals(Kt)?ei:t;if(e&&t.toString()===Kt.toBase58())return ei;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Qn(r){try{return new ce(r)}catch{return r}}var bn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Iu=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new ce("SysvarRent111111111111111111111111111111111"),Su=new ce("SysvarC1ock11111111111111111111111111111111"),Lt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xs=new ce("Sysvar1nstructions1111111111111111111111111"),Ku=ti.programId,Lu=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Nu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ru=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Eu=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Mu=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_u=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),vu=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Fu=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ou=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Vu=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ei=new ce("So11111111111111111111111111111111111111112"),Kt=ce.default;function Zn(r){return jn({publicKey:r,transformSol:!0})}import{PublicKey as Bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var $n={chainId:101,address:Bs.default.toBase58(),programId:ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ni.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 er=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Kt.toBase58()||e instanceof Jn&&Kt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new Jn(ut.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?Jn.default:jn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=er;Te.WSOL=new er(Y(G({},ut),{mint:ut.address}));import{get as ri,set as Is}from"lodash";import oi from"dayjs";import Ss from"dayjs/plugin/utc";oi.extend(Ss);var tr=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 oi().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}},ii={},Ks={};function ie(r){let e=ri(ii,r);if(!e){let t=ri(Ks,r);e=new tr({name:r,logLevel:t}),Is(ii,r,e)}return e}import gn from"big.js";import Rs from"bn.js";import Cs from"decimal.js-light";import Ls from"toformat";var Ns=Ls,Dt=Ns;var yn=ie("module/fraction"),nr=Dt(gn),qt=Dt(Cs),Es={[0]:qt.ROUND_DOWN,[1]:qt.ROUND_HALF_UP,[2]:qt.ROUND_UP},Ms={[0]:gn.roundDown,[1]:gn.roundHalfUp,[2]:gn.roundUp},te=class{constructor(e,t=new Rs(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||yn.logWithError(`${e} is not an integer.`),e<=0&&yn.logWithError(`${e} is not positive.`),qt.set({precision:e+1,rounding:Es[n]});let i=new qt(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)||yn.logWithError(`${e} is not an integer.`),e<0&&yn.logWithError(`${e} is negative.`),nr.DP=e,nr.RM=Ms[n]||1,new nr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vs=ie("Raydium_price"),Fe=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(rr(n.decimals),rr(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Fe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&vs.logWithError("mul token not equals");let n=super.mul(t);return new Fe({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 ir=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},wn=ir;wn.SOL=new ir($n);import Fs from"bn.js";var si=new te(new Fs(100)),Xe=class extends te{toSignificant(e=5,t,n){return this.mul(si).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(si).toFixed(e,t,n)}};import{PublicKey as Os}from"@solana/web3.js";import Vs from"bn.js";function ai(r){return typeof r=="object"&&r!==null&&![Te,le,Os,te,Vs,Fe,Xe].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?Qn(r):Array.isArray(r)?r.map(e=>ft(e)):ai(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var Gt=new Le(0),ci=new Le(1),Uc=new Le(2),Xc=new Le(3),zc=new Le(5),or=new Le(10),Hc=new Le(100),Yc=new Le(1e3),jc=new Le(1e4),ui=9007199254740991;function re(r){let e=ie("Raydium_parseBigNumberish");if(r instanceof Le)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Le(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ui||r<=-ui)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Le(String(r))):typeof r=="bigint"?new Le(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Le(0))}function rr(r){return or.pow(re(r))}function hn(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 Ds=ie("Raydium_amount"),li=Dt(Ws);function qs(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")):Ds.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends te{constructor(t,n,i=!0,o){let s=new kn(0),a=or.pow(new kn(t.decimals));if(i)s=re(n);else{let u=new kn(0),c=new kn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=qs(n.toString(),t.decimals);u=re(l),c=re(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ie(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 le(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new le(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 li.DP=this.token.decimals,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Zs}from"@solana/web3.js";import fi,{isBN as bi}from"bn.js";import{bits as gl,BitStructure as wl,blob as Gs,Blob as hl,cstr as kl,f32 as Al,f32be as Tl,f64 as Pl,f64be as xl,greedy as Bl,Layout as Us,ns64 as Il,ns64be as Sl,nu64 as Kl,nu64be as Ll,offset as Nl,s16 as Rl,s16be as Cl,s24 as El,s24be as Ml,s32 as Xs,s32be as _l,s40 as vl,s40be as Fl,s48 as Ol,s48be as Vl,s8 as Wl,seq as zs,struct as Dl,Structure as Hs,u16 as Ys,u16be as ql,u24 as Gl,u24be as Ul,u32 as Xl,u32be as zl,u40 as Hl,u40be as Yl,u48 as jl,u48be as Ql,u8 as js,UInt as Qs,union as Zl,Union as $l,unionLayoutDiscriminator as Jl,utf8 as em}from"@solana/buffer-layout";var sr=Us,mi=Hs;var ar=Qs;var di=js,Nt=Ys;var he=Xs;var pi=zs;var Pe=Gs;var bt=class extends sr{constructor(t,n,i){super(t,i);this.blob=Pe(t),this.signed=n}decode(t,n=0){let i=new fi(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 fi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function F(r){return new ar(1,r)}function Ee(r){return new ar(4,r)}function b(r){return new bt(8,!1,r)}function O(r){return new bt(16,!1,r)}function yi(r){return new bt(1,!0,r)}function Tn(r){return new bt(8,!0,r)}function gi(r){return new bt(16,!0,r)}var An=class extends sr{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 I(r){return new An(Pe(32),e=>new Zs(e),e=>e.toBuffer(),r)}function Ne(r){return new An(di(),$s,Js,r)}function $s(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Js(r){return r?1:0}var ur=class extends mi{decode(e,t){return super.decode(e,t)}};function N(r,e,t){return new ur(r,e,t)}function D(r,e,t){let n,i=typeof e=="number"?e:bi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=bi(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 pi(r,i,t)}var fm=N([Ee("mintAuthorityOption"),I("mintAuthority"),b("supply"),F("decimals"),F("isInitialized"),Ee("freezeAuthorityOption"),I("freezeAuthority")]);import{PublicKey as wm}from"@solana/web3.js";import{MintLayout as km,TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";var wi=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});import{PublicKey as ee}from"@solana/web3.js";var hi=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ki=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ai=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cm=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Em=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Mm=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ti=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_m=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),vm=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Fm=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Om=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Vm=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Wm=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Dm=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),qm=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Gm=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Um=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Xm=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ea=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ta=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),na=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var zm={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ea,CREATE_CPMM_POOL_AUTH:ta,CREATE_CPMM_POOL_FEE_ACC:na,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ua}from"@solana/web3.js";import{PublicKey as ra,ComputeBudgetProgram as Pi,Transaction as Bi,TransactionMessage as ia,Keypair as Ii,VersionedTransaction as Si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oa}from"@solana/spl-token";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"};var xi=ie("Raydium_txUtil"),Ki=1644;function Pn(r){let e=[],t=[];return r.microLamports&&(e.push(Pi.setComputeUnitPrice({microLamports:r.microLamports})),t.push($.SetComputeUnitPrice)),r.units&&(e.push(Pi.setComputeUnitLimit({units:r.units})),t.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Rt(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 sa(r,e){r.length<1&&xi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&xi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ki}catch{return!1}}function de(r,e){let[t,n]=ra.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Ut({instructions:r,payer:e,signers:t}){return sa(r,[e,...t])}function Xt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ii.generate().publicKey.toString()}){let o=new ia({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Si(o).serialize()).toString("base64").length<Ki}catch{return!1}}var aa=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function yt(r){let e=[];return r.forEach(t=>{t instanceof Bi&&(t.recentBlockhash||(t.recentBlockhash=oa.toBase58()),t.feePayer||(t.feePayer=Ii.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Si&&(n=aa(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as ca}from"@solana/spl-token";function Me(r,e,t){return de([r.toBuffer(),(t!=null?t:ca).toBuffer(),e.toBuffer()],new ua("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var zt=1e4;function be(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Y(G({},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 We(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===zt){let u=new We(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Ht(r.mul(new We(zt)),new We(zt-o.transferFeeBasisPoints)),c=new We(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Ht(l.mul(new We(o.transferFeeBasisPoints)),new We(zt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ht(r.mul(new We(o.transferFeeBasisPoints)),new We(zt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function gt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Ht(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}import{PublicKey as Yt,sendAndConfirmTransaction as Sn,Transaction as jt,TransactionMessage as Qt,VersionedTransaction as Zt}from"@solana/web3.js";import da from"axios";import{PublicKey as Li,AddressLookupTableAccount as Bn}from"@solana/web3.js";import{PublicKey as la}from"@solana/web3.js";import{getTransferFeeConfig as _d,unpackMint as vd}from"@solana/spl-token";function cr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var lr=ie("Raydium_accountInfo_util");async function ct(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=G({batchRequest:!1},t),o=cr(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=cr(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&lr.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:g}=m;return d.length!==2&&d[1]!=="base64"&&lr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new la(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function xn(r,e,t){let n=await ct(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Y(G({},i),{accountInfo:n[o]}))}async function mr({connection:r,address:e}){let t=await ct(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Li(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Bn({key:s,state:Bn.deserialize(o.data)});n[s.toString()]=a,In[s.toString()]=a}return n}var In={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Bn({key:new Li("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Bn.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 Kn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await da.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}=Pn(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!==Yt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){let t=new jt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Rt(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Sn(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await Rt(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(g,w)=>(g.recentBlockhash=y,await Sn(this.connection,g,a[w].find(k=>k.publicKey.equals(this.owner.publicKey))?a[w]:[...a[w],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let g=s.map((k,h)=>(k.recentBlockhash=y,a[h].length&&k.sign(...a[h]),k));yt(g);let w=await this.signAllTransactions(g);if(l){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:p});h.push({txId:A,status:"sent",signedTx:w[k]}),m==null||m([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),m==null||m([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:p});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Ce(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=G(G({},this.cluster==="devnet"?{}:In),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Yt(p));let c=await mr({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Qt({payerKey:this.feePayer,recentBlockhash:i?Yt.default.toBase58():await Rt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Zt(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var g;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),yt([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let w=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:h}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:k,signature:w},"confirmed"),{txId:w,signedTx:m}}if(this.signAllTransactions){let w=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:f}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),yt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash();return s.forEach((w,k)=>{a[k].find(h=>h.publicKey.equals(this.owner.publicKey))||w.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async w=>{let k=await this.connection.sendTransaction(w,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let g=0,w=[],k=async()=>{if(!f[g])return;let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});w.push({txId:h,status:"sent",signedTx:f[g]}),m==null||m([...w]),g++,this.connection.onSignature(h,P=>{let A=w.findIndex(K=>K.txId===h);A>-1&&(w[A].status=P.err?"error":"success"),m==null||m([...w]),P.err||k()},"processed"),this.connection.getSignatureStatus(h)};return k(),{txIds:[],signedTxs:f}}else{let g=[];for(let w=0;w<f.length;w+=1){let k=await this.connection.sendTransaction(f[w],{skipPreflight:p});g.push(k)}return{txIds:g,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ce(c,["computeBudgetConfig"]),i=t?Pn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Y(G({},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(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Yt(f));if(u.length<12&&Ut({instructions:d,payer:this.feePayer,signers:y})||Ut({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new jt().add(...i.instructions,...u)):s.push(new jt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.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);Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new jt().add(...i.instructions,...u)):s.push(new jt().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 g;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Rt(this.connection);if(s.forEach(async(w,k)=>{w.recentBlockhash=f,a[k].length&&w.sign(...a[k])}),yt(s),(g=this.owner)!=null&&g.isKeyPair){if(m){let w=[];for(let k of s){let h=await Sn(this.connection,k,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async(w,k)=>await Sn(this.connection,w,a[k].find(h=>h.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:y});h.push({txId:A,status:"sent",signedTx:w[k]}),d==null||d([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),d==null||d([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:y});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=g,o=Ce(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=G(G({},this.cluster==="devnet"?{}:In),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of a)s[w]===void 0&&u.push(new Yt(w));let c=await mr({connection:this.connection,address:u});for(let[w,k]of Object.entries(c))s[w]=k;let l=t?Pn(t):{instructions:[],instructionTypes:[]},m=await Rt(this.connection),d=this.signers.reduce((w,k)=>Y(G({},w),{[k.publicKey.toBase58()]:k}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(w=>{let k=[...f,w],h=t?[...l.instructions,...k]:k;if(f.length<12&&Xt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||Xt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(w);else{if(f.length===0)throw Error("item ins too big");let P={};for(let A of[...new Set(a)])s[A]!==void 0&&(P[A]=s[A]);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Zt(A))}else{let A=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Zt(A))}y.push(Array.from(new Set(f.map(A=>A.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[w]}}),f.length>0){let k=[...new Set(f.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(h=>d[h]).filter(h=>h!==void 0);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Zt(h))}else{let h=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Zt(h))}y.push(k)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async w=>{var K;let{sequentially:k,onTxUpdate:h,recentBlockHash:P,skipPreflight:A=!0}=w||{};if(p.map(async(S,B)=>{y[B].length&&S.sign(y[B]),P&&(S.message.recentBlockhash=P)}),yt(p),(K=this.owner)!=null&&K.isKeyPair){let{lastValidBlockHeight:S,blockhash:B}=await this.connection.getLatestBlockhash();if(p.forEach((_,V)=>{y[V].find(U=>U.publicKey.equals(this.owner.publicKey))||_.sign([this.owner.signer])}),k){let _=[];for(let V of p){let U=await this.connection.sendTransaction(V,{skipPreflight:A}),{lastValidBlockHeight:ue,blockhash:ne}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:ne,lastValidBlockHeight:ue,signature:U},"confirmed"),_.push(U)}return{txIds:_,signedTxs:p}}return{txIds:await Promise.all(p.map(async _=>{let V=await this.connection.sendTransaction(_,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:S,signature:V},"confirmed"),V})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(k){let B=0,_=[],V=async()=>{if(!S[B])return;let U=await this.connection.sendTransaction(S[B],{skipPreflight:A});_.push({txId:U,status:"sent",signedTx:S[B]}),h==null||h([..._]),B++,this.connection.onSignature(U,ue=>{let ne=_.findIndex(oe=>oe.txId===U);ne>-1&&(_[ne].status=ue.err?"error":"success"),h==null||h([..._]),ue.err||V()},"processed"),this.connection.getSignatureStatus(U)};return V(),{txIds:[],signedTxs:S}}else{let B=[];for(let _=0;_<S.length;_+=1){let V=await this.connection.sendTransaction(S[_],{skipPreflight:A});B.push(V)}return{txIds:B,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var dr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),$t=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ie(t)}createTxBuilder(e){return this.scope.checkOwner(),new Kn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(dr(e))}logInfo(...e){this.logger.info(dr(e))}logAndCreateError(...e){let t=dr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as Ln,ASSOCIATED_TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{PublicKey as ze,TransactionInstruction as Et,SystemProgram as Fi,SYSVAR_RENT_PUBKEY as hp}from"@solana/web3.js";var pr=N([F("instruction"),b("amountIn"),b("minAmountOut")]),fr=N([F("instruction"),b("maxAmountIn"),b("amountOut")]),cp=N([F("instruction"),F("nonce")]),pa=N([F("instruction"),F("nonce"),b("startTime")]),lp=N([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),b("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),b("swapQuote2BaseFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("withdrawQueue"),I("lpVault"),I("owner"),b("lpReserve"),D(b(),3,"padding")]),mp=N([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("modelDataAccount"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("owner"),D(b(),64,"padding")]),br=N([F("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),yr=N([F("instruction"),b("amountIn")]);var Ni=N([b("fee")]);import{PublicKey as fa}from"@solana/web3.js";var Ct=new fa("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=5e4,ba=N([b("x"),b("y"),b("price")]),ya=N([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),D(ba,ht,"DataElement")]);function ga(r,e){return[0,ht-2]}function wa(r){return[0,ht-2]}function ha(r){return[0,ht-2]}function ka(r,e,t){let[n,i]=ga(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>=ht-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 gr(r,e,t){let[n,i,o]=ka(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 wt(r,e,t){return e*r.multiplier/t}function Ri(r,e,t){return e*t/r.multiplier}function Aa(r,e){let[t,n]=wa(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ht-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 Ta(r,e){let[t,n]=ha(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ht-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 Ci(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Aa(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 Pa(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ta(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 xa(r,e){let t=Ci(r,e,0,!1);return t[3]?t[0]:0}function Ei(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!0,[c,l,m,d]=Ci(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ri(r,p,i)}}function Mi(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!1,[c,l,m,d]=Pa(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ri(r,p,i)}}function Ba(r){let e=ya.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 _i(r,e,t,n){let i=xa(r,wt(r,e,gr(r,e,t)))/r.multiplier;return n?i:1/i}var Jt=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(Ct);e&&(this._layoutData=Ba(e==null?void 0:e.data))}}};var vi=ie("Raydium_liquidity_instruction");function Oi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(br.span);br.encode({instruction:3,baseAmountIn:re(i),quoteAmountIn:re(o),fixedSide:s==="base"?Gt:ci},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:new ze(e.id)}),T({pubkey:new ze(t.authority),isWritable:!1}),T({pubkey:new ze(t.openOrders),isWritable:!1}),T({pubkey:new ze(t.targetOrders)}),T({pubkey:new ze(e.lpMint.address)}),T({pubkey:new ze(t.vault.A)}),T({pubkey:new ze(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:Ct})),u.push(T({pubkey:new ze(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new ze(t.marketEventQueue),isWritable:!1})),new Et({programId:new ze(e.programId),keys:u,data:a})}function wr(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ft(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(yr.span);yr.encode({instruction:4,amountIn:re(i)},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:Ct})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Vi({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:g,userLpVault:w,nonce:k,openTime:h,coinAmount:P,pcAmount:A,ammConfigId:K,feeDestinationId:S}){let B=N([F("instruction"),F("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),_=[{pubkey:Ln,isSigner:!1,isWritable:!1},{pubkey:Ia,isSigner:!1,isWritable:!1},{pubkey:Fi.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey: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:K,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:g,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0}],V=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:k,openTime:h,coinAmount:P,pcAmount:A},V),{instruction:new Et({keys:_,programId:r,data:V}),instructionType:$.AmmV4CreatePool}}function Sa({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(pr.span);pr.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return i===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Ka({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(fr.span);fr.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[T({pubkey:Fi.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function Wi(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 Sa(Y(G({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Ka(Y(G({},a),{maxAmountIn:i,amountOut:o}),t);vi.logWithError("invalid params","params",r)}throw vi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as ke,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as uo}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as qe,SystemProgram as vt,Keypair as Rr}from"@solana/web3.js";import co from"bn.js";import Fa from"bn.js";function Nn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function hr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function kr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function en(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Di(r,e){return en(r,e)?null:hr(r,e)}function qi(r,e){return en(r,e)?null:kr(r,e)}var Ep=Buffer.from("amm_config","utf8"),La=Buffer.from("pool","utf8"),Na=Buffer.from("pool_vault","utf8"),Ra=Buffer.from("pool_reward_vault","utf8"),Gi=Buffer.from("position","utf8"),Ca=Buffer.from("tick_array","utf8"),Ea=Buffer.from("operation","utf8"),Ma=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ui(r,e,t,n){return de([La,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ar(r,e,t){return de([Na,e.toBuffer(),t.toBuffer()],r)}function Xi(r,e,t){return de([Ra,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return de([Ca,e.toBuffer(),Nn(t)],r)}function kt(r,e,t,n){return de([Gi,e.toBuffer(),Nn(t),Nn(n)],r)}function He(r,e){return de([Gi,e.toBuffer()],r)}function Rn(r){return de([Buffer.from("metadata","utf8"),Lt.toBuffer(),r.toBuffer()],Lt)}function Tr(r){return de([Ea],r)}function Ye(r,e){return de([Ma,e.toBuffer()],r)}import je from"bn.js";var pe=new je(0),Qe=new je(1),Je=new je(-1),_e=new je(1).shln(64),Cn=new je(1).shln(128),Pr=_e.sub(Qe),tn=64,zi=Cn.subn(1),xe=-443636,Se=-xe,Mt=new je("4295048016"),_t=new je("79226673521066979257578248091"),Hi=16,Yi="59543866431248",ji="184467440737095516",Qi="15793534762490258745",En=new je(10).pow(new je(6));var vp=new je("18446744073700000000");var _a=15,Q=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=M.getTickArrayStartIndexByTick(i,o),l=M.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_a/2));for(let p=0;p<l.length;p++){let{publicKey:y}=se(t,n,l[p]);u.push(y)}let m=(await ct(e,u)).map(p=>p!==null?nn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=Y(G({},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=M.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/Q.tickCount(t)),a=n?M.searchLowBitFromStart(i,o,s-1,1,t):M.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=ye-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<ye;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=M.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<ye;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=se(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(M.checkIsOutOfBoundary(e)){if(e>Se)return!1;let n=M.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ye*e}};import H from"bn.js";import{PublicKey as lt}from"@solana/web3.js";import me from"bn.js";var xr=14,et=class{static maxTickInTickarrayBitmap(e){return e*ye*At}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(!Q.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-Q.tickCount(n):t+Q.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ye,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=Di(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=qi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Q.tickCount(n)}}}},rn=class{static getBitmapOffset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=et.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=et.maxTickInTickarrayBitmap(e),n=-t;if(Se<=t)throw Error(`extensionTickBoundary check error: ${Se}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);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:M.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=Q.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}=et.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=M.mergeTickArrayBitmap(e).shln(At-1-a),c=en(512,u)?null:hr(512,u);if(c!==null){let l=t-c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=M.mergeTickArrayBitmap(e).shrn(a),c=en(512,u)?null:kr(512,u);if(c!==null){let l=t+c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Q.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%et.maxTickInTickarrayBitmap(t),i=Math.floor(n/Q.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};import Ze from"bn.js";var on=class{static getfeeGrowthInside(e,t,n){let i=new Ze(0),o=new Ze(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 Ze(0),a=new Ze(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=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=X.wrappingSubU128(X.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=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),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=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),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=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,_e),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=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,_e),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 Ze(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 Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.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 Ze(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 Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var g,w,k,h;let a=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=z.getSqrtPriceX64FromTick(t.tickLower),c=z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=J.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[be(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),be(m.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)],[y,f]=[be(new Ze(new E(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Ze(new E(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Zi}from"@solana/spl-token";var Be=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}=Tt.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(Je),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:g}=se(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Je),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?rn.checkTickArrayIsInit(Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):M.checkTickArrayIsInitialized(M.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=se(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/Q.tickCount(e.tickSpacing)),i=t?M.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):M.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=Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=et.nextInitializedTickArrayStartIndex(M.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=rn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Se)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=Y(G({},m),{perSecond:X.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new lt(d)});if(p.tokenMint.equals(lt.default))continue;if(n<=p.openTime.toNumber()||i.eq(pe)){s.push(p);continue}let y=new me(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=X.mulDivFloor(f,p.emissionsPerSecondX64,i),w=p.rewardGrowthGlobalX64.add(g),k=X.mulDivFloor(f,p.emissionsPerSecondX64,_e),h=p.rewardTotalEmissioned.add(k);s.push(Y(G({},p),{rewardGrowthGlobalX64:w,rewardTotalEmissioned:h,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=M.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;return t>Se&&(t=Q.getArrayStartIndex(Se,e)+Q.tickCount(e)),n<xe&&(n=Q.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Q.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await xn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=eo.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=M.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=M.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=se(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await xn(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=nn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Y(G({},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(He(p,d).publicKey);let l=await ct(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Ji.decode(d.data),y=p.poolId.toString(),f=e.find(B=>B.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,w=M._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),k=M._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:P}=J.getAmountsFromLiquidity(g.sqrtPriceX64,w.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(w.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:w.price,priceUpper:k.price,amountA:h,amountB:P,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(B=>Y(G({},B),{pendingReward:new me(0)})),leverage:A,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let K=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=K,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await ct(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let w=d[f].toString();y[w]=nn.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let w of g){let k=`${f.programId.toString()}-${f.id.toString()}-${w.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${w.tickUpper}`,P=y[m[k].toString()],A=y[m[h].toString()],K=P.ticks[M.getTickOffsetInArray(w.tickLower,f.tickSpacing)],S=A.ticks[M.getTickOffsetInArray(w.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:_}=await on.GetPositionFees(f,w,K,S),V=await on.GetPositionRewards(f,w,K,S);w.tokenFeeAmountA=B.gte(new me(0))?B:new me(0),w.tokenFeeAmountB=_.gte(new me(0))?_:new me(0);for(let U=0;U<V.length;U++)w.rewardInfos[U].pendingReward=V[U].gte(new me(0))?V[U]:new me(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?Mt.add(new me(1)):_t.sub(new me(1)):u=z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=be(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:g}=Be.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:pe),u),w=be(p,m,i,!1),k=z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?k:new E(1).div(k),P=p.mul(new me(Math.floor((1-s)*1e10))).div(new me(1e10)),A=be(P,m,i,!1),K=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(h).sub(K).abs(),B=K,_=new Xe(new E(S).mul(10**15).toFixed(0),new E(B).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:w,minAmountOut:A,expirationTime:gt(d.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:_,fee:g,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 Te(Y(G({},u),{mint:u.address,isToken2022:u.programId===Zi.toBase58()})),new Te(Y(G({},c),{mint:c.address,isToken2022:c.programId===Zi.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:g,executionPrice:w,priceImpact:k,fee:h,remainingAccounts:P}=await Be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new lt(u.address),amountIn:n,slippage:o,epochInfo:s}),A=Y(G({},d),{amount:new le(l,d.amount),fee:d.fee===void 0?void 0:new le(l,d.fee)}),K=Y(G({},p),{amount:new le(m,p.amount),fee:p.fee===void 0?void 0:new le(m,p.fee)}),S=Y(G({},y),{amount:new le(m,y.amount),fee:y.fee===void 0?void 0:new le(m,y.fee)}),B=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),_=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:w.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new le(l,h);return{realAmountIn:A,amountOut:K,minAmountOut:S,expirationTime:f,currentPrice:B,executionPrice:_,priceImpact:k,fee:V,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,g;let o=e[t],s=M.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=M.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,(g=o.rewardApr[2])!=null?g: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[Zn(e.mintA.address).toString()],d=i[Zn(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),g=z.getSqrtPriceX64FromTick(s),w=z.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=J.getAmountsFromLiquidityWithSlippage(f,g,w,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=J.getAmountsFromLiquidityWithSlippage(f,g,w,o,!1,!1,0),K=new E(k.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(d.value)),S=new E(P.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(A.toString()).div(new E(10).pow(y)).mul(d.value)),B=S.div(K.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(B).mul(100).toNumber(),U=3600*24*365,ue=e.rewardDefaultInfos.map(ne=>{var Z,tt;let oe=ne.mint.decimals,j=i[ne.mint.address];return u<((Z=ne.startTime)!=null?Z:0)||u>((tt=ne.endTime)!=null?tt:0)||!ne.perSecond||!j||oe===void 0?0:new E(j.value).mul(new E(ne.perSecond).mul(U)).div(new E(10).pow(oe)).mul(B).mul(100).toNumber()});return{feeApr:V,rewardsApr:ue,apr:V+ue.reduce((ne,oe)=>ne+oe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var w,k;let l=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=z.getSqrtPriceX64FromTick(n),d=z.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=be(o,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,u,!c),f=new me(new E(y.amount.sub((k=y.fee)!=null?k:pe).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?J.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let h=J.getLiquidityFromTokenAmountA(l,d,f,!a),P=J.getLiquidityFromTokenAmountB(m,l,f);g=t?h:P}else g=t?new me(0):J.getLiquidityFromTokenAmountB(m,d,f);return Be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var g,w,k,h;let u=z.getSqrtPriceX64FromTick(n),c=z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=J.getAmountsFromLiquidity(z.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[be(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),be(m.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[y,f]=[be(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new lt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=$i.decode(i.data),s=Ye(e,new lt(n.id)).publicKey,a=await Be.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return Y(G({},o),{id:new lt(n.id),programId:new lt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:Y(G({},n.config),{id:new lt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var X=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(pe)||(o=o.add(Qe)),o}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(Qe)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Cn).sub(t).mod(Cn)}};function ge(r,e){return Br(r.mul(e),64,256)}function va(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Br(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var z=class{static sqrtPriceX64ToPrice(e,t,n){return X.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return X.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))return e;let o=t.shln(tn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?X.mulDivCeil(s,e,a):X.mulDivRoundingUp(s,Qe,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 X.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(tn);if(i)return e.add(o.div(t));{let s=X.mulDivRoundingUp(o,Qe,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<xe||e>Se)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=zi.div(n)),n}static getTickFromPrice(e,t,n){return z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(_t)||e.lt(Mt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new H(t-64),i=va(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<Hi;){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 H(Yi)),d=Br(m.sub(new H(ji)),64,128).toNumber(),p=Br(m.add(new H(Qi)),64,128).toNumber();return d==p?d:z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Pt.getTickWithPriceAndTickspacing(e,t,n,i),s=z.getSqrtPriceX64FromTick(o);return z.sqrtPriceX64ToPrice(s,n,i)}},J=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(pe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(tn),s=t.sub(e);return i?X.mulDivRoundingUp(X.mulDivCeil(o,s,t),Qe,e):X.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return i?X.mulDivCeil(n,t.sub(e),_e):X.mulDivFloor(n,t.sub(e),_e)}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?X.mulDivRoundingUp(a,Qe,Pr):a.shrn(tn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),X.mulDivFloor(n,Pr,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return J.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=J.getLiquidityFromTokenAmountA(e,n,i,!1),a=J.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return J.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:J.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new H(0)};if(e.lt(n)){let s=J.getTokenAmountAFromLiquidity(e,n,i,o),a=J.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:J.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=J.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new H(new E(u.toString()).mul(l).toFixed(0)),d=new H(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 k,h,P,A;let c=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=z.getSqrtPriceX64FromTick(t),m=z.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=J.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),be(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[g,w]=[be(new H(new E(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),be(new H(new E(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:w,expirationTime:gt(y.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(pe))throw new Error("amountSpecified must not be 0");if(y||(y=s?Mt.add(Qe):_t.sub(Qe)),s){if(y.lt(Mt))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(_t))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(pe),g={amountSpecifiedRemaining:d,amountCalculated:pe,sqrtPriceX64:m,tick:c>p?Math.min(p+Q.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},w=p,k=n[p],h=0,P=!s&&k.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(pe)&&!g.sqrtPriceX64.eq(y);){if(h>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=g.sqrtPriceX64;let K=M.nextInitTick(k,g.tick,l,s,P),S=K||null,B=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=Be.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");w=V.nextStartIndex;let{publicKey:U}=se(e,t,w);B=U,k=n[w],S=M.firstInitializedTick(k,s)}A.tickNext=S.tick,A.initialized=S.liquidityGross.gtn(0),p!==w&&B&&(g.accounts.push(B),p=w),A.tickNext<xe?A.tickNext=xe:A.tickNext>Se&&(A.tickNext=Se),A.sqrtPriceNextX64=z.getSqrtPriceX64FromTick(A.tickNext);let _;if(s&&A.sqrtPriceNextX64.lt(y)||!s&&A.sqrtPriceNextX64.gt(y)?_=y:_=A.sqrtPriceNextX64,[g.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=Tt.swapStepCompute(g.sqrtPriceX64,_,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(A.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),g.amountCalculated=g.amountCalculated.sub(A.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(A.amountOut),g.amountCalculated=g.amountCalculated.add(A.amountIn.add(A.feeAmount))),g.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let V=S.liquidityNet;s&&(V=V.mul(Je)),g.liquidity=J.addDelta(g.liquidity,V)}P=A.tickNext!=g.tick&&!s&&k.startTickIndex===A.tickNext,g.tick=s?A.tickNext-1:A.tickNext}else if(g.sqrtPriceX64!=A.sqrtPriceStartX64){let V=z.getTickFromSqrtPriceX64(g.sqrtPriceX64);P=V!=g.tick&&!s&&k.startTickIndex===V,g.tick=V}++h}try{let{nextStartIndex:A,isExist:K}=Q.nextInitializedTickArray(g.tick,l,s,i,o);K&&p!==A&&(g.accounts.push(se(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=i.gte(pe);if(u){let l=X.mulDivFloor(i,En.sub(new H(o.toString())),En);s.amountIn=a?J.getTokenAmountAFromLiquidity(t,e,n,!0):J.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?J.getTokenAmountBFromLiquidity(t,e,n,!1):J.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Je),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=J.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=J.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:J.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:J.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Je))&&(s.amountOut=i.mul(Je)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=X.mulDivCeil(s.amountIn,new H(o),En.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ye=60,At=512,M=class{static getTickArrayAddressByTick(e,t,n,i){let o=M.getTickArrayStartIndexByTick(n,i),{publicKey:s}=se(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=M.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ye)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=Q.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)*Q.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ye,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ye,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*ye:e+t*ye}static mergeTickArrayBitmap(e){let t=new Fa(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*ye));return[...M.searchLowBitFromStart(e,t,s-1,o,n),...M.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return M.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=M.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=se(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=>M.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=Q.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=>M.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=Q.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Se}static nextInitTick(e,t,n,i,o){if(Q.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<ye;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ye-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ye;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var Xf=N([Pe(8),F("bump"),Nt("index"),I(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),Nt("tickSpacing"),D(b(),8,"")]),Oa=N([Ee("blockTimestamp"),O("sqrtPriceX64"),O("cumulativeTimePriceX64"),D(O(),1,"")]),Ir=N([Pe(8),Ne("initialized"),I("poolId"),D(Oa,1e3,"observations"),D(O(),5,"")]),Va=N([F("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),O("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),I("tokenMint"),I("tokenVault"),I("creator"),O("rewardGrowthGlobalX64")]),$i=N([Pe(8),F("bump"),I("ammConfig"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),Nt("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),he("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),O("swapInAmountTokenA"),O("swapOutAmountTokenB"),O("swapInAmountTokenB"),O("swapOutAmountTokenA"),F("status"),D(F(),7,""),D(Va,3,"rewardInfos"),D(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),D(b(),15*4-3,"padding")]),Wa=N([O("growthInsideLastX64"),b("rewardAmountOwed")]),Ji=N([Pe(8),F("bump"),I("nftMint"),I("poolId"),he("tickLower"),he("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),D(Wa,3,"rewardInfos"),D(b(),8,"")]),zf=N([Pe(8),F("bump"),I("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),D(O(),3,"rewardGrowthInside"),D(b(),8,"")]),Da=N([he("tick"),gi("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),D(O(),3,"rewardGrowthsOutsideX64"),D(Ee(),13,"")]),nn=N([Pe(8),I("poolId"),he("startTickIndex"),D(Da,ye,"ticks"),F("initializedTickCount"),D(F(),115,"")]),Hf=N([Pe(329),D(I(),100,"whitelistMints")]),eo=N([Pe(8),I("poolId"),D(D(b(),8),xr,"positiveTickArrayBitmap"),D(D(b(),8),xr,"negativeTickArrayBitmap")]);import{PublicKey as za,Keypair as Ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ya}from"@solana/spl-token";import fb from"bn.js";var to=N([I("mint"),I("owner"),b("amount"),Ee("delegateOption"),I("delegate"),F("state"),Ee("isNativeOption"),b("isNative"),b("delegatedAmount"),Ee("closeAuthorityOption"),I("closeAuthority")]);function qa(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Sr(r,...e){if(!qa(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 Kr(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 no(r,e){Sr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var _n=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),De=(r,e)=>r<<32-e|r>>>e;var Jf=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ga(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Lr(r){return typeof r=="string"&&(r=Ga(r)),Sr(r),r}var Mn=class{clone(){return this._cloneInto()}},eb={}.toString;function ro(r){let e=n=>r().update(Lr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Ua(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 io=(r,e,t)=>r&e^~r&t,oo=(r,e,t)=>r&e^r&t^e&t,vn=class extends Mn{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=_n(this.buffer)}update(e){Kr(this);let{view:t,buffer:n,blockLen:i}=this;e=Lr(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=_n(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){Kr(this),no(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;Ua(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=_n(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 Xa=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]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),Nr=class extends vn{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[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)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],y=De(d,7)^De(d,18)^d>>>3,f=De(p,17)^De(p,19)^p>>>10;dt[m]=f+dt[m-7]+y+dt[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=De(a,6)^De(a,11)^De(a,25),p=l+d+io(a,u,c)+Xa[m]+dt[m]|0,f=(De(n,2)^De(n,13)^De(n,22))+oo(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(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var so=ro(()=>new Nr);var wb=ie("Raydium_Util");function ao({fromPublicKey:r,programId:e=Ya}){let t=Ha.generate().publicKey.toBase58().slice(0,32);return{publicKey:ja(r,t,e),seed:t}}function ja(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=so(n);return new za(i)}var lo=ie("Raydium_Clmm"),Ge={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]},Fn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=N([O("sqrtPriceX64"),b("startTime")]),g=[{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:vt.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},w);let k=Buffer.from([...Ge.createPool,...w]);return new qe({keys:g,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=ao({fromPublicKey:i,programId:n}),[d,p]=[new L(o.address),new L(s.address)],y=[vt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ir.span),space:Ir.span,programId:n})],{publicKey:f}=Ui(n,a,d,p),{publicKey:g}=Ar(n,f,d),{publicKey:w}=Ar(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,g,new L(o.programId||ke),p,w,new L(s.programId||ke),Ye(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:w},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,k,h,P,A,K,S,B,_,V){let U=N([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),O("liquidity"),b("amountMaxA"),b("amountMaxB"),Ne("withMetadata"),F("optionBaseFlag"),Ne("baseFlag")]),ue=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],ne=[{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:at,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:uo,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:K,amountMaxA:S,amountMaxB:B,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}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 L(e.programId),new L(e.id)],y;if(l)y=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),y=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,g),{publicKey:h}=Me(n.wallet,y,ke),{publicKey:P}=Rn(y),{publicKey:A}=He(d,y),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,g,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K}}}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 L(e.programId),new L(e.id)],y;if(l)y=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),y=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,g),{publicKey:h}=Me(n.wallet,y,ke),{publicKey:P}=Rn(y),{publicKey:A}=He(d,y),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,g,c,s,a,u,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ye(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},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,g,w,k,h,P,A,K,S,B,_,V){let U=N([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),O("liquidity"),b("amountMaxA"),b("amountMaxB"),Ne("withMetadata"),F("optionBaseFlag"),Ne("baseFlag")]),ue=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],ne=[{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:at,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:uo,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new co(0),amountMaxA:S==="MintA"?B:_,amountMaxB:S==="MintA"?_:B,withMetadata:K==="create",baseFlag:S==="MintA",optionBaseFlag:1},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}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 L((await l(1))[0]);else{let B=Rr.generate();d.push(B),m=B.publicKey}let[p,y]=[new L(e.programId),new L(e.id)],f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(p,y,f),{publicKey:k}=se(p,y,g),{publicKey:h}=Me(n.wallet,m,ke),{publicKey:P}=Rn(m),{publicKey:A}=He(p,m),{publicKey:K}=kt(p,y,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(t.mintA.address),new L(t.mintB.address),i,o,f,g,s,a,u,c,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ye(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},instructions:[S],signers:d,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=N([]),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:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Ge.closePosition,...u]);return new qe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new L(e.programId),{publicKey:s}=Me(n.wallet,i.nftMint,ke),{publicKey:a}=He(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,g,w,k){let h=N([O("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Ne("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:g,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:y}=Me(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:g}=kt(u,c,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[w],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 L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:y}=Me(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:g}=kt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(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,g,w,k){let h=N([O("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Ne("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:new co(0),amountMaxA:f==="MintA"?g:w,amountMaxB:f==="MintA"?w:g,baseFlag:f==="MintA",optionBaseFlag:1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,k,h){let P=N([O("liquidity"),b("amountMinA"),b("amountMinB")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],K=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...A],S=Buffer.alloc(P.span);P.encode({liquidity:g,amountMinA:w,amountMinB:k},S);let B=Buffer.from([...Ge.decreaseLiquidity,...S]);return new qe({keys:K,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new L(e.programId),new L(e.id)],m=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:y}=se(c,l,d),{publicKey:f}=Me(i.wallet,n.nftMint,u),{publicKey:g}=He(c,n.nftMint),{publicKey:w}=kt(c,l,n.tickLower,n.tickUpper),k=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)k.push({poolRewardVault:new L(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new L(e.rewardDefaultInfos[P].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,g,l,w,p,y,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),k,o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ye(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:w},signers:[],instructions:h,instructionTypes:[$.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w){let k=N([b("amount"),b("otherAmountThreshold"),O("sqrtPriceLimitX64"),Ne("isBaseInput")]),h=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],P=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],A=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},A);let K=Buffer.from([...Ge.swap,...A]);return new qe({keys:P,programId:e,data:K})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new L(e.programId),new L(e.id)],[m,d]=[new L(t.vault.A),new L(t.vault.B)],[p,y]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new L(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,Ye(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[$.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=N([b("openTime"),b("endTime"),O("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:vt.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...Ge.initReward,...f]);return new qe({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(e.id)],a=Xi(o,s,i.mint).publicKey,u=Tr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new L(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=N([F("rewardIndex"),O("emissionsPerSecondX64"),b("openTime"),b("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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,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:re(l),endTime:re(m)},f);let g=Buffer.from([...Ge.setRewardEmissions,...f]);return new qe({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(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 L(t.rewardInfos[d].vault),c=new L(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&lo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Tr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new L(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=N([F("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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ge.collectReward,...l]);return new qe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new L(e.programId),new L(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new L(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&lo.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 L(e.programId),new L(e.id)],[m,d]=[new L(t.vault.A),new L(t.vault.B)],[p,y]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new L(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:g,instructionTypes:[$.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as $a}from"@solana/web3.js";import{PublicKey as Qa}from"@solana/web3.js";import mo from"bn.js";var po=new mo(25),fo=new mo(1e4);var Za=ie("Raydium_liquidity_serum");function bo({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=Qa.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Za.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 Jb from"bn.js";function Cr({programId:r}){let{publicKey:e}=de([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function xt({name:r,programId:e,marketId:t}){let{publicKey:n}=de([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Ja({programId:r,marketId:e}){let{publicKey:t}=de([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function eu({programId:r}){return de([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function yo({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=xt({name:"amm_associated_seed",programId:a,marketId:t}),l=xt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=eu({programId:a}),p=xt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=xt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=Ja({programId:a,marketId:t}),w=xt({name:"target_associated_seed",programId:a,marketId:t}),k=xt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=bo({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:g,targetOrders:w,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:$a.default,configId:Cr({programId:a})}}import{PublicKey as go}from"@solana/web3.js";var ay=ie("Raydium_farm_config"),uy=new go("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cy=new go("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var On={"Standard SPL":0,"Option tokens":1},wo={[hi.toString()]:3,[ki.toString()]:5,[Ai.toString()]:6};var su=N([F("instruction")]),au=N([F("instruction")]),uu=N([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),O("accRewardPerShare"),I("rewardVault"),I("rewardMint"),I("rewardSender"),b("rewardType"),D(b(),15,"padding")]),cu=N([b("state"),b("nonce"),I("lpVault"),I("rewardVault"),I(),I(),b(),b(),b("totalReward"),O("perShareReward"),b("lastSlot"),b("perSlotReward")]),lu=N([b("state"),b("nonce"),I("lpVault"),I("rewardVaultA"),b("totalRewardA"),O("perShareRewardA"),b("perSlotRewardA"),F("option"),I("rewardVaultB"),Pe(7),b("totalRewardB"),O("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),I()]),mu=N([b(),b("state"),b("nonce"),b("validRewardTokenNum"),O("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),I("lpMint"),I("lpVault"),D(uu,5,"rewardInfos"),I("creator"),I(),D(b(),32,"padding")]),tu=new Proxy(cu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(G({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),nu=new Proxy(lu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(G({},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)}}),ru=new Proxy(mu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(G({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return Y(G({},o),{rewardType:((s=Object.entries(On).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),du=N([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),pu=N([F("instruction"),b("nonce"),D(du,5,"rewardTimeInfo")]),fu=N([F("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),bu=N([F("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),yy=N([b("state"),I("id"),I("owner"),b("deposited"),D(b(),1,"rewardDebts")]),ho=N([b("state"),I("id"),I("owner"),b("deposited"),D(O(),1,"rewardDebts"),b(""),b("voteLockedBalance"),D(b(),15)]),gy=N([b("state"),I("id"),I("owner"),b("deposited"),D(b(),2,"rewardDebts")]),iu=N([b("state"),I("id"),I("owner"),b("deposited"),D(O(),2,"rewardDebts"),D(b(),17)]),ou=N([b(),b("state"),I("id"),I("owner"),b("deposited"),D(O(),5,"rewardDebts"),D(b(),16)]),Bt=N([F("instruction"),b("amount")]),yu=N([I("mint"),I("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),yi("digitShift"),D(F(),7,"reserved1"),D(b(),7,"reserved2")]),gu=N([Pe(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),D(F(),32,"reserved1"),D(yu,4,"votingMints"),Tn("timeOffset"),F("bump"),D(F(),7,"reserved2"),D(b(),11,"reserved3")]),wu=N([Tn("startTime"),Tn("endTime"),F("kind"),D(F(),15,"reserved")]),hu=N([D(wu,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Ne("isUsed"),Ne("allowClawback"),F("votingMintConfigIdx"),D(F(),29,"reserved")]),ku=N([Pe(8),I("voterAuthority"),I("registrar"),D(hu,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),D(F(),94,"reserved")]);import xy from"bn.js";var Fy=ie("Raydium.farm.util");function Vn({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=de([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}import{PublicKey as Ie,SystemProgram as jy,SYSVAR_RENT_PUBKEY as Qy,SYSVAR_CLOCK_PUBKEY as ko,TransactionInstruction as Er}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Jy,TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as eg}from"@solana/spl-token";import ng from"bn.js";var fg=ie("Raydium_farm_instruction"),bg={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 Ao(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Ie(e.programId),new Ie(e.id)],c=Vn({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:re(s)},l);let m=[T({pubkey:Mr,isWritable:!1}),T({pubkey:u}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new Ie(t.rewardInfos[d].vault)})),m.push(T({pubkey:i[d]}));return new Er({programId:a,keys:m,data:l})}function To(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=Vn({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:ko,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:i[p]})),d.push(T({pubkey:new Ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}function Po(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=Vn({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:ko,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}import ve from"bn.js";var _r=class extends $t{constructor(t){super(t);this.stableLayout=new Jt({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 ve(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=wi(t[o?"mintB":"mintA"]),[u,c]=[new ve(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ve(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ve(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()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Gt;s.isZero()||(d=m==="base"?hn(s.mul(c),u):hn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=hn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Xe(new ve(1)).add(i).mul(d).quotient,g=new le(a,d),w=new le(a,f);return this.logDebug("anotherAmount:",g.toFixed(),"maxAnotherAmount:",w.toFixed()),{anotherAmount:g,maxAnotherAmount:w,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}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let w=await l.getCreatedTokenAccount({mint:new Re(n.lpMint.address)}),k=[p,y],h=[f,g],P=[i.raw,o.raw],A=i.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(A)||this.logAndCreateError("invalid fixedSide","fixedSide",s),A==="quote"?(k.reverse(),h.reverse(),P.reverse(),K=s==="a"?"quote":"base"):A==="base"&&(K=s==="a"?"base":"quote");let[S,B]=k,[_,V]=h,[U,ue]=P,ne=await this.getAmmPoolKeys(n.id),oe=this.createTxBuilder(),nt=await l.handleTokenAccount({side:"in",amount:U,mint:S.mint,tokenAccount:_,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:j}=nt,Z=Ce(nt,["tokenAccount"]);oe.addInstruction(Z);let sn=await l.handleTokenAccount({side:"in",amount:ue,mint:B.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:tt}=sn,Ft=Ce(sn,["tokenAccount"]);oe.addInstruction(Ft);let Ot=await l.handleTokenAccount({side:"out",amount:0,mint:new Re(n.lpMint.address),tokenAccount:w,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Dn}=Ot,qn=Ce(Ot,["tokenAccount"]);return oe.addInstruction(qn),oe.addInstruction({instructions:[Oi({poolInfo:n,poolKeys:ne,userKeys:{baseTokenAccount:j,quoteTokenAccount:tt,lpTokenAccount:Dn,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:ue,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5AddLiquidity:$.AmmV4AddLiquidity],lookupTableAddress:ne.lookupTableAccount?[ne.lookupTableAccount]:[]}),oe.addCustomComputeBudget(c),u===0&&await oe.buildV0(),oe.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 Re(n.mintA.address),new Re(n.mintB.address),new Re(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}),g=this.createTxBuilder(),{bypassAssociatedCheck:w,checkCreateATAOwner:k}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:h}=S,P=Ce(S,["tokenAccount"]);g.addInstruction(P);let B=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:A}=B,K=Ce(B,["tokenAccount"]);return g.addInstruction(K),g.addInstruction({instructions:[wr({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:h,quoteTokenAccount:A,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(a),s===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Wn,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 g={};for(let j of this.scope.account.tokenAccountRawInfos)(g[j.accountInfo.mint.toString()]===void 0||Me(this.scope.ownerPubKey,j.accountInfo.mint,Wn).publicKey.equals(j.pubkey))&&(g[j.accountInfo.mint.toString()]=j.pubkey);let w=g[t.lpMint.address];if(w===void 0)throw Error("find lp account error in trade accounts");let k=i.add(a!=null?a:new ve(0)),h=t.mintA.address===Te.WSOL.mint.toString(),P=t.mintB.address===Te.WSOL.mint.toString(),{account:A,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Wn,mint:new Re(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(K||{}),A===void 0)throw new Error("base token account not found");let{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Wn,mint:new Re(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(B||{}),S===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=A,g[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let j=[];for(let nt of s.rewardInfos){let sn=nt.mint.address===Te.WSOL.mint.toString();if(g[nt.mint.address])j.push(g[nt.mint.address]);else{let{account:Ot,instructionParams:vr}=await this.scope.account.getOrCreateTokenAccount({mint:new Re(nt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!sn,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Ot||this.logAndCreateError("farm reward account not found:",nt.mint.address),vr&&f.addInstruction(vr),j.push(Ot)}}let Z=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],tt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Z,lpAccount:w,rewardAccounts:j},Ft=wo[s.programId],Dn=Ft===6?Ao(tt):Ft===5?To(tt):Po(tt),qn={3:$.FarmV3Withdraw,5:$.FarmV5Withdraw,6:$.FarmV6Withdraw};f.addInstruction({instructions:[Dn],instructionTypes:[qn[Ft]]})}let _=await this.getAmmPoolKeys(t.id),V=wr({poolInfo:t,poolKeys:_,userKeys:{lpTokenAccount:w,baseTokenAccount:A,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:k});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity],lookupTableAddress:_.lookupTableAccount?[_.lookupTableAccount]:[]});let[U,ue]=t.mintA.address===n.mintA.address?[A,S]:[S,A],ne=await this.scope.clmm.getClmmPoolKeys(t.id),oe=await Fn.openPositionFromBaseInstructions(Y(G({poolInfo:n,poolKeys:ne,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:ue},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...oe.instructions],signers:oe.signers,instructionTypes:[...oe.instructionTypes],lookupTableAddress:ne.lookupTableAccount?[ne.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 ue;let g=c.feePayer||((ue=this.scope.owner)==null?void 0:ue.publicKey),w=c.useSOLBalance&&i.mint.equals(xo),k=c.useSOLBalance&&o.mint.equals(xo),h=this.createTxBuilder(),{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:w?{payer:g,amount:s}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:l,checkCreateATAOwner:m});h.addInstruction(A||{});let{account:K,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:g,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(S||{}),P===void 0||K===void 0)throw Error("you don't has some token account");let B=yo({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),_={programId:t,ammId:B.id,ammAuthority:B.authority,ammOpenOrders:B.openOrders,lpMint:B.lpMint,coinMint:B.baseMint,pcMint:B.quoteMint,coinVault:B.baseVault,pcVault:B.quoteVault,withdrawQueue:B.withdrawQueue,ammTargetOrders:B.targetOrders,poolTempLp:B.lpVault,marketProgramId:B.marketProgramId,marketId:B.marketId,ammConfigId:B.configId,feeDestinationId:y},{instruction:V,instructionType:U}=Vi(Y(G({},_),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:K,userLpVault:Me(this.scope.ownerPubKey,B.lpMint,d).publicKey,nonce:B.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[V],instructionTypes:[U]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:_}})}async getCreatePoolFee({programId:t}){let n=Cr({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ni.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.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===Ti.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let B=_i(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(B*1e6):y=new E(B*1e6).div(1e6)}let f=n,g=new ve(0),w=new ve(0);if(!f.isZero())if(p){w=Ht(f.mul(po),fo);let B=f.sub(w),_=m.add(B);g=d.mul(B).div(_)}else{w=f.mul(new ve(2)).div(new ve(1e4));let B=f.sub(w);l==="quote"?g=new ve(Ei(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber())):g=new ve(Mi(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber()))}let k=new ve(new E(g.toString()).mul(1-s).toFixed(0)),h=g,P=k,A=new E(g.toString()).div(new E(f.sub(w).toString()).toFixed(0));!f.isZero()&&!g.isZero()&&(A=new E(g.toString()).div(f.sub(w).toString()));let K=y.sub(A).div(y).mul(100);return{amountOut:h,minAmountOut:P,currentPrice:y,executionPrice:A,priceImpact:K,fee:w}}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 Re(l.address),programId:new Re(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Re(m.address),programId:new Re(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Re(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=P,f=Ce(P,["tokenAccount"]);c.addInstruction(f);let A=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Re(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=A,w=Ce(A,["tokenAccount"]);c.addInstruction(w);let k=await this.getAmmPoolKeys(t.id),h=4;return t.pooltype.includes("StablePool")&&(h=5),c.addInstruction({instructions:[Wi({version:h,poolKeys:k,userKeys:{tokenAccountIn:y,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[h===4?$.AmmV4SwapBaseIn:$.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};export{_r as default};
|
|
1
|
+
var Bo=Object.defineProperty,Io=Object.defineProperties;var So=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Or=Object.prototype.hasOwnProperty,Vr=Object.prototype.propertyIsEnumerable;var Fr=(r,e,t)=>e in r?Bo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))Or.call(e,t)&&Fr(r,t,e[t]);if(an)for(var t of an(e))Vr.call(e,t)&&Fr(r,t,e[t]);return r},Y=(r,e)=>Io(r,So(e));var Ce=(r,e)=>{var t={};for(var n in r)Or.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&an)for(var n of an(r))e.indexOf(n)<0&&Vr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Re}from"@solana/web3.js";import{NATIVE_MINT as xo,TOKEN_PROGRAM_ID as Wn}from"@solana/spl-token";import Ws from"big.js";import kn from"bn.js";import Le from"bn.js";var It=9e15,st=1e9,Gn="0123456789abcdef",cn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ln="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Un={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-It,maxE:It,crypto:!1},Gr,$e,q=!0,dn="[DecimalError] ",ot=dn+"Invalid argument: ",Ur=dn+"Precision limit exceeded",Xr=dn+"crypto unavailable",zr="[object Decimal]",Ae=Math.floor,fe=Math.pow,Ko=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Lo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,No=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ve=1e7,W=7,Ro=9007199254740991,Co=cn.length-1,Xn=ln.length-1,x={toStringTag:zr};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),v(r)};x.ceil=function(){return v(new this.constructor(this),this.e+1,2)};x.clampedTo=x.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(ot+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.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};x.cosine=x.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())+W,n.rounding=1,t=Eo(n,$r(n,t)),n.precision=r,n.rounding=e,v($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.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(q=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),r=Ae((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ae(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(v(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")&&(v(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return q=!0,v(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ae(this.e/W))*W,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return ae(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return v(ae(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return v(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.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/fn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=St(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 v(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.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=St(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/fn(5,r)),i=St(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,v(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.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()?Oe(t,i,o):new t(0):new t(NaN):e.isZero()?Oe(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Oe(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.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,q=!1,t=t.times(t).minus(1).sqrt().plus(t),q=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.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,q=!1,t=t.times(t).plus(1).sqrt().plus(t),q=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.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?v(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.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=Oe(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)))};x.inverseTangent=x.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<=Xn)return s=Oe(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Xn)return s=Oe(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/W+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(q=!1,e=Math.ceil(a/W),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)),q=!0,v(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Ae(this.e/W)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.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(q=!1,a=m+p,s=it(c,a),n=e?mn(l,a+10):it(r,a),u=ae(s,n,a,1),Vt(u.d,i=m,d))do if(a+=10,s=it(c,a),n=e?mn(l,a+10):it(r,a),u=ae(s,n,a,1),!o){+we(u.d).slice(i+1,i+15)+1==1e14&&(u=v(u,m+1,0));break}while(Vt(u.d,i+=10,d));return q=!0,v(u,m,d)};x.minus=x.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 q?v(r,a,u):r}if(t=Ae(r.e/W),l=Ae(p.e/W),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/W),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]=Ve-1;--c[i],c[n]+=Ve}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=pn(c,t),q?v(r,a,u):r):new y(u===3?-0:0)};x.modulo=x.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]?v(new n(t),n.precision,n.rounding):(q=!1,n.modulo==9?(e=ae(t,r.abs(),0,3,1),e.s*=r.s):e=ae(t,r,0,n.modulo,1),e=e.times(r),q=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return zn(this)};x.naturalLogarithm=x.ln=function(){return it(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,v(r)};x.plus=x.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)),q?v(r,a,u):r;if(o=Ae(m.e/W),n=Ae(r.e/W),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/W),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)/Ve|0,c[i]%=Ve;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=pn(c,n),q?v(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(ot+r);return t.d?(e=Yr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return v(new e(r),r.e+1,e.rounding)};x.sine=x.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())+W,n.rounding=1,t=_o(n,$r(n,t)),n.precision=r,n.rounding=e,v($e>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.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(q=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(v(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")&&(v(n,u+1,1),r=!n.times(n).eq(s));break}return q=!0,v(n,u,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,v($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.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=Ae(l.e/W)+Ae(r.e/W),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%Ve|0,e=a/Ve|0;o[i]=(o[i]+e)%Ve|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=pn(o,t),q?v(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return Yn(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ke(r,0,st),e===void 0?e=n.rounding:Ke(e,0,8),v(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,!0):(Ke(r,0,st),e===void 0?e=i.rounding:Ke(e,0,8),n=v(new i(n),r+1,e),t=Ue(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ue(i):(Ke(r,0,st),e===void 0?e=o.rounding:Ke(e,0,8),n=v(new o(i),r+i.e+1,e),t=Ue(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.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=Yr(y)-p.e-1,s=o%W,e.d[0]=fe(10,s<0?W+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(ot+a);r=a.gt(e)?o>0?e:c:a}for(q=!1,a=new f(we(y)),l=f.precision,f.precision=o=y.length*W*2;m=ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ae(c,n,o,1).minus(p).abs().cmp(ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,q=!0,d};x.toHexadecimal=x.toHex=function(r,e){return Yn(this,16,r,e)};x.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:Ke(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]?(q=!1,t=ae(t,r,0,e,1).times(r),q=!0,v(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Yn(this,8,r,e)};x.toPower=x.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(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return v(a,n,o);if(e=Ae(r.e/W),e>=r.d.length-1&&(t=c<0?-c:c)<=Ro)return i=jr(u,a,t,n),r.s<0?new u(1).div(i):v(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=fe(+a,c),e=t==0||!isFinite(t)?Ae(c*(Math.log("0."+we(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):(q=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=zn(r.times(it(a,n+t)),n),i.d&&(i=v(i,n+5,1),Vt(i.d,n,o)&&(e=n+10,i=v(zn(r.times(it(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=v(i,n+1,0)))),i.s=s,q=!0,u.rounding=o,v(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ke(r,1,st),e===void 0?e=i.rounding:Ke(e,0,8),n=v(new i(n),r,e),t=Ue(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ke(r,1,st),e===void 0?e=n.rounding:Ke(e,0,8)),v(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return v(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function we(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=W-n.length,t&&(o+=rt(t)),o+=n;s=r[e],n=s+"",t=W-n.length,t&&(o+=rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(r,e,t){if(r!==~~r||r<e||r>t)throw Error(ot+r)}function Vt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=W,i=0):(i=Math.ceil((e+1)/W),e%=W),o=fe(10,W-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)==fe(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)==fe(10,e-3)-1,s}function un(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]+=Gn.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 Eo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/fn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=St(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,g,w,k,h,P,A,K,S,B,_,V,U,ue,ne=n.constructor,oe=n.s==i.s?1:-1,j=n.d,Z=i.d;if(!j||!j[0]||!Z||!Z[0])return new ne(!n.s||!i.s||(j?Z&&j[0]==Z[0]:!Z)?NaN:j&&j[0]==0||!Z?oe*0:oe/0);for(u?(p=1,l=n.e-i.e):(u=Ve,p=W,l=Ae(n.e/p)-Ae(i.e/p)),U=Z.length,_=j.length,w=new ne(oe),k=w.d=[],m=0;Z[m]==(j[m]||0);m++);if(Z[m]>(j[m]||0)&&l--,o==null?(K=o=ne.precision,s=ne.rounding):a?K=o+(n.e-i.e)+1:K=o,K<0)k.push(1),y=!0;else{if(K=K/p+2|0,m=0,U==1){for(d=0,Z=Z[0],K++;(m<_||d)&&K--;m++)S=d*u+(j[m]||0),k[m]=S/Z|0,d=S%Z|0;y=d||m<_}else{for(d=u/(Z[0]+1)|0,d>1&&(Z=r(Z,d,u),j=r(j,d,u),U=Z.length,_=j.length),B=U,h=j.slice(0,U),P=h.length;P<U;)h[P++]=0;ue=Z.slice(),ue.unshift(0),V=Z[0],Z[1]>=u/2&&++V;do d=0,c=e(Z,h,U,P),c<0?(A=h[0],U!=P&&(A=A*u+(h[1]||0)),d=A/V|0,d>1?(d>=u&&(d=u-1),f=r(Z,d,u),g=f.length,P=h.length,c=e(f,h,g,P),c==1&&(d--,t(f,U<g?ue:Z,g,u))):(d==0&&(c=d=1),f=Z.slice()),g=f.length,g<P&&f.unshift(0),t(h,f,P,u),c==-1&&(P=h.length,c=e(Z,h,U,P),c<1&&(d++,t(h,U<P?ue:Z,P,u))),P=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[P++]=j[B]||0:(h=[j[B]],P=1);while((B++<_||h[0]!==void 0)&&K--);y=h[0]!==void 0}k[0]||k.shift()}if(p==1)w.e=l,Gr=y;else{for(m=1,d=k[0];d>=10;d/=10)m++;w.e=m+l*p-1,v(w,a?o+w.e+1:o,s,y)}return w}}();function v(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+=W,s=e,l=m[d=0],u=l/fe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/W),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=W,s=o-W+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=W,s=o-W+i,u=s<0?0:l/fe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(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/fe(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]=fe(10,(W-e%W)%W),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,W-o),m[d]=s>0?(l/fe(10,i-s)%fe(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]==Ve&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Ve)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return q&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ue(r,e,t){if(!r.isFinite())return Zr(r);var n,i=r.e,o=we(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+rt(-i-1)+o,t&&(n=t-s)>0&&(o+=rt(n))):i>=s?(o+=rt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+rt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=rt(n))),o}function pn(r,e){var t=r[0];for(e*=W;t>=10;t/=10)e++;return e}function mn(r,e,t){if(e>Co)throw q=!0,t&&(r.precision=t),Error(Ur);return v(new r(cn),e,1,!0)}function Oe(r,e,t){if(e>Xn)throw Error(Ur);return v(new r(ln),e,t,!0)}function Yr(r){var e=r.length-1,t=e*W+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 rt(r){for(var e="";r--;)e+="0";return e}function jr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/W+4);for(q=!1;;){if(t%2&&(o=o.times(e),Dr(o.d,s)&&(i=!0)),t=Ae(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Dr(e.d,s)}return q=!0,o}function Wr(r){return r.d[r.d.length-1]&1}function Qr(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 zn(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?(q=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=v(o.times(r),u,1),t=t.times(++l),a=s.plus(ae(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(i=m;i--;)s=v(s.times(s),u,1);if(e==null)if(c<3&&Vt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return v(s,d.precision=y,p,q=!0);else return d.precision=y,s}s=a}}function it(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,w=f.constructor,k=w.rounding,h=w.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new w(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(q=!1,l=h):l=e,w.precision=l+=y,t=we(g),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=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new w("0."+t),o++):f=new w(n+"."+t.slice(1))}else return c=mn(w,l+2,h).times(o+""),f=it(new w(n+"."+t.slice(1)),l-y).plus(c),w.precision=h,e==null?v(f,h,k,q=!0):f;for(m=f,u=s=f=ae(f.minus(1),f.plus(1),l,1),d=v(f.times(f),l,1),i=3;;){if(s=v(s.times(d),l,1),c=u.plus(ae(s,new w(i),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(mn(w,l+2,h).times(o+""))),u=ae(u,new w(p),l,1),e==null)if(Vt(u.d,l-y,k,a))w.precision=l+=y,c=s=f=ae(m.minus(1),m.plus(1),l,1),d=v(f.times(f),l,1),i=a=1;else return v(u,w.precision=h,k,q=!0);else return w.precision=h,u;u=c,i+=2}}function Zr(r){return String(r.s*r.s/0)}function Hn(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)%W,t<0&&(n+=W),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=W;n<i;)r.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),q&&(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 Mo(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hr.test(e))return Hn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Lo.test(e))t=16,e=e.toLowerCase();else if(Ko.test(e))t=2;else if(No.test(e))t=8;else throw Error(ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=jr(n,new n(t),o,o*2)),c=un(e,t,Ve),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=pn(c,l),r.d=c,q=!1,s&&(r=ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?fe(2,u):Wt.pow(2,u))),q=!0,r)}function _o(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:St(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/fn(5,t)),e=St(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 St(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/W);for(q=!1,u=t.times(t),a=new r(n);;){if(s=ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return q=!0,s.d.length=m+1,s}function fn(r,e){for(var t=r;--e;)t*=r;return t}function $r(r,e){var t,n=e.s<0,i=Oe(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Wr(t)?n?2:3:n?4:1,e;$e=Wr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Yn(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(Ke(t,1,st),n===void 0?n=p.rounding:Ke(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Zr(r);else{for(l=Ue(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=un(Ue(d),10,i),d.e=d.d.length),m=un(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Gr),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+=Gn.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=un(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Gn.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 Dr(r,e){if(r.length>e)return r.length=e,!0}function vo(r){return new this(r).abs()}function Fo(r){return new this(r).acos()}function Oo(r){return new this(r).acosh()}function Vo(r,e){return new this(r).plus(e)}function Wo(r){return new this(r).asin()}function Do(r){return new this(r).asinh()}function qo(r){return new this(r).atan()}function Go(r){return new this(r).atanh()}function Uo(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=Oe(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Oe(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Oe(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(r,e,o,1)),e=Oe(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(r,e,o,1)),t}function Xo(r){return new this(r).cbrt()}function zo(r){return v(r=new this(r),r.e+1,2)}function Ho(r,e,t){return new this(r).clamp(e,t)}function Yo(r){if(!r||typeof r!="object")throw Error(dn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,st,"rounding",0,8,"toExpNeg",-It,0,"toExpPos",0,It,"maxE",0,It,"minE",-It,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Un[t]),(n=r[t])!==void 0)if(Ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ot+t+": "+n);if(t="crypto",i&&(this[t]=Un[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(Xr);else this[t]=!1;else throw Error(ot+t+": "+n);return this}function jo(r){return new this(r).cos()}function Qo(r){return new this(r).cosh()}function Jr(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,qr(o)){c.s=o.s,q?!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++;q?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 Hn(c,o.toString())}else if(u!=="string")throw Error(ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hr.test(o)?Hn(c,o):Mo(c,o)}if(i.prototype=x,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=Yo,i.clone=Jr,i.isDecimal=qr,i.abs=vo,i.acos=Fo,i.acosh=Oo,i.add=Vo,i.asin=Wo,i.asinh=Do,i.atan=qo,i.atanh=Go,i.atan2=Uo,i.cbrt=Xo,i.ceil=zo,i.clamp=Ho,i.cos=jo,i.cosh=Qo,i.div=Zo,i.exp=$o,i.floor=Jo,i.hypot=es,i.ln=ts,i.log=ns,i.log10=is,i.log2=rs,i.max=os,i.min=ss,i.mod=as,i.mul=us,i.pow=cs,i.random=ls,i.round=ms,i.sign=ds,i.sin=ps,i.sinh=fs,i.sqrt=bs,i.sub=ys,i.sum=gs,i.tan=ws,i.tanh=hs,i.trunc=ks,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 Zo(r,e){return new this(r).div(e)}function $o(r){return new this(r).exp()}function Jo(r){return v(r=new this(r),r.e+1,3)}function es(){var r,e,t=new this(0);for(q=!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 q=!0,new this(1/0);t=e}return q=!0,t.sqrt()}function qr(r){return r instanceof Wt||r&&r.toStringTag===zr||!1}function ts(r){return new this(r).ln()}function ns(r,e){return new this(r).log(e)}function rs(r){return new this(r).log(2)}function is(r){return new this(r).log(10)}function os(){return Qr(this,arguments,"lt")}function ss(){return Qr(this,arguments,"gt")}function as(r,e){return new this(r).mod(e)}function us(r,e){return new this(r).mul(e)}function cs(r,e){return new this(r).pow(e)}function ls(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ke(r,1,st),n=Math.ceil(r/W),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(Xr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=W,n&&r&&(i=fe(10,W-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-=W)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function ms(r){return v(r=new this(r),r.e+1,this.rounding)}function ds(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function ps(r){return new this(r).sin()}function fs(r){return new this(r).sinh()}function bs(r){return new this(r).sqrt()}function ys(r,e){return new this(r).sub(e)}function gs(){var r=0,e=arguments,t=new this(e[r]);for(q=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return q=!0,v(t,this.precision,this.rounding)}function ws(r){return new this(r).tan()}function hs(r){return new this(r).tanh()}function ks(r){return v(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var Wt=x.constructor=Jr(Un);cn=new Wt(cn);ln=new Wt(ln);var E=Wt;import{PublicKey as Jn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as ti,SYSVAR_RENT_PUBKEY as Ts}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ps=[T({pubkey:As,isWritable:!1}),T({pubkey:ti.programId,isWritable:!1}),T({pubkey:Ts,isWritable:!1})];function jn({publicKey:r,transformSol:e}){let t=Qn(r.toString());if(t instanceof ce)return e&&t.equals(Kt)?ei:t;if(e&&t.toString()===Kt.toBase58())return ei;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Qn(r){try{return new ce(r)}catch{return r}}var bn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Iu=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new ce("SysvarRent111111111111111111111111111111111"),Su=new ce("SysvarC1ock11111111111111111111111111111111"),Lt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xs=new ce("Sysvar1nstructions1111111111111111111111111"),Ku=ti.programId,Lu=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Nu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ru=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Eu=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Mu=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_u=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),vu=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Fu=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ou=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Vu=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ei=new ce("So11111111111111111111111111111111111111112"),Kt=ce.default;function Zn(r){return jn({publicKey:r,transformSol:!0})}import{PublicKey as Bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var $n={chainId:101,address:Bs.default.toBase58(),programId:ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ni.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 er=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Kt.toBase58()||e instanceof Jn&&Kt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new Jn(ut.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?Jn.default:jn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=er;Te.WSOL=new er(Y(G({},ut),{mint:ut.address}));import{get as ri,set as Is}from"lodash";import oi from"dayjs";import Ss from"dayjs/plugin/utc";oi.extend(Ss);var tr=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 oi().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}},ii={},Ks={};function ie(r){let e=ri(ii,r);if(!e){let t=ri(Ks,r);e=new tr({name:r,logLevel:t}),Is(ii,r,e)}return e}import gn from"big.js";import Rs from"bn.js";import Cs from"decimal.js-light";import Ls from"toformat";var Ns=Ls,Dt=Ns;var yn=ie("module/fraction"),nr=Dt(gn),qt=Dt(Cs),Es={[0]:qt.ROUND_DOWN,[1]:qt.ROUND_HALF_UP,[2]:qt.ROUND_UP},Ms={[0]:gn.roundDown,[1]:gn.roundHalfUp,[2]:gn.roundUp},te=class{constructor(e,t=new Rs(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(re(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(re(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||yn.logWithError(`${e} is not an integer.`),e<=0&&yn.logWithError(`${e} is not positive.`),qt.set({precision:e+1,rounding:Es[n]});let i=new qt(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)||yn.logWithError(`${e} is not an integer.`),e<0&&yn.logWithError(`${e} is negative.`),nr.DP=e,nr.RM=Ms[n]||1,new nr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vs=ie("Raydium_price"),Fe=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(rr(n.decimals),rr(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Fe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&vs.logWithError("mul token not equals");let n=super.mul(t);return new Fe({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 ir=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},wn=ir;wn.SOL=new ir($n);import Fs from"bn.js";var si=new te(new Fs(100)),Xe=class extends te{toSignificant(e=5,t,n){return this.mul(si).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(si).toFixed(e,t,n)}};import{PublicKey as Os}from"@solana/web3.js";import Vs from"bn.js";function ai(r){return typeof r=="object"&&r!==null&&![Te,le,Os,te,Vs,Fe,Xe].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?Qn(r):Array.isArray(r)?r.map(e=>ft(e)):ai(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var Gt=new Le(0),ci=new Le(1),Uc=new Le(2),Xc=new Le(3),zc=new Le(5),or=new Le(10),Hc=new Le(100),Yc=new Le(1e3),jc=new Le(1e4),ui=9007199254740991;function re(r){let e=ie("Raydium_parseBigNumberish");if(r instanceof Le)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Le(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ui||r<=-ui)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Le(String(r))):typeof r=="bigint"?new Le(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Le(0))}function rr(r){return or.pow(re(r))}function hn(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 Ds=ie("Raydium_amount"),li=Dt(Ws);function qs(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")):Ds.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends te{constructor(t,n,i=!0,o){let s=new kn(0),a=or.pow(new kn(t.decimals));if(i)s=re(n);else{let u=new kn(0),c=new kn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=qs(n.toString(),t.decimals);u=re(l),c=re(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ie(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 le(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new le(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 li.DP=this.token.decimals,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Zs}from"@solana/web3.js";import fi,{isBN as bi}from"bn.js";import{bits as gl,BitStructure as wl,blob as Gs,Blob as hl,cstr as kl,f32 as Al,f32be as Tl,f64 as Pl,f64be as xl,greedy as Bl,Layout as Us,ns64 as Il,ns64be as Sl,nu64 as Kl,nu64be as Ll,offset as Nl,s16 as Rl,s16be as Cl,s24 as El,s24be as Ml,s32 as Xs,s32be as _l,s40 as vl,s40be as Fl,s48 as Ol,s48be as Vl,s8 as Wl,seq as zs,struct as Dl,Structure as Hs,u16 as Ys,u16be as ql,u24 as Gl,u24be as Ul,u32 as Xl,u32be as zl,u40 as Hl,u40be as Yl,u48 as jl,u48be as Ql,u8 as js,UInt as Qs,union as Zl,Union as $l,unionLayoutDiscriminator as Jl,utf8 as em}from"@solana/buffer-layout";var sr=Us,mi=Hs;var ar=Qs;var di=js,Nt=Ys;var he=Xs;var pi=zs;var Pe=Gs;var bt=class extends sr{constructor(t,n,i){super(t,i);this.blob=Pe(t),this.signed=n}decode(t,n=0){let i=new fi(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 fi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function F(r){return new ar(1,r)}function Ee(r){return new ar(4,r)}function b(r){return new bt(8,!1,r)}function O(r){return new bt(16,!1,r)}function yi(r){return new bt(1,!0,r)}function Tn(r){return new bt(8,!0,r)}function gi(r){return new bt(16,!0,r)}var An=class extends sr{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 I(r){return new An(Pe(32),e=>new Zs(e),e=>e.toBuffer(),r)}function Ne(r){return new An(di(),$s,Js,r)}function $s(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Js(r){return r?1:0}var ur=class extends mi{decode(e,t){return super.decode(e,t)}};function N(r,e,t){return new ur(r,e,t)}function D(r,e,t){let n,i=typeof e=="number"?e:bi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=bi(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 pi(r,i,t)}var fm=N([Ee("mintAuthorityOption"),I("mintAuthority"),b("supply"),F("decimals"),F("isInitialized"),Ee("freezeAuthorityOption"),I("freezeAuthority")]);import{PublicKey as wm}from"@solana/web3.js";import{MintLayout as km,TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";var wi=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});import{PublicKey as ee}from"@solana/web3.js";var hi=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ki=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ai=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cm=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Em=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Mm=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ti=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_m=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),vm=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Fm=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Om=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Vm=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Wm=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Dm=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),qm=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Gm=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Um=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Xm=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ea=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ta=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),na=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var zm={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ea,CREATE_CPMM_POOL_AUTH:ta,CREATE_CPMM_POOL_FEE_ACC:na,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ua}from"@solana/web3.js";import{PublicKey as ra,ComputeBudgetProgram as Pi,Transaction as Bi,TransactionMessage as ia,Keypair as Ii,VersionedTransaction as Si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oa}from"@solana/spl-token";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"};var xi=ie("Raydium_txUtil"),Ki=1644;function Pn(r){let e=[],t=[];return r.microLamports&&(e.push(Pi.setComputeUnitPrice({microLamports:r.microLamports})),t.push($.SetComputeUnitPrice)),r.units&&(e.push(Pi.setComputeUnitLimit({units:r.units})),t.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Rt(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 sa(r,e){r.length<1&&xi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&xi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ki}catch{return!1}}function de(r,e){let[t,n]=ra.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Ut({instructions:r,payer:e,signers:t}){return sa(r,[e,...t])}function Xt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ii.generate().publicKey.toString()}){let o=new ia({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Si(o).serialize()).toString("base64").length<Ki}catch{return!1}}var aa=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function yt(r){let e=[];return r.forEach(t=>{t instanceof Bi&&(t.recentBlockhash||(t.recentBlockhash=oa.toBase58()),t.feePayer||(t.feePayer=Ii.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Si&&(n=aa(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as ca}from"@solana/spl-token";function Me(r,e,t){return de([r.toBuffer(),(t!=null?t:ca).toBuffer(),e.toBuffer()],new ua("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var zt=1e4;function be(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Y(G({},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 We(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===zt){let u=new We(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Ht(r.mul(new We(zt)),new We(zt-o.transferFeeBasisPoints)),c=new We(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Ht(l.mul(new We(o.transferFeeBasisPoints)),new We(zt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ht(r.mul(new We(o.transferFeeBasisPoints)),new We(zt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function gt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Ht(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}import{PublicKey as Yt,sendAndConfirmTransaction as Sn,Transaction as jt,TransactionMessage as Qt,VersionedTransaction as Zt}from"@solana/web3.js";import da from"axios";import{PublicKey as Li,AddressLookupTableAccount as Bn}from"@solana/web3.js";import{PublicKey as la}from"@solana/web3.js";import{getTransferFeeConfig as _d,unpackMint as vd}from"@solana/spl-token";function cr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var lr=ie("Raydium_accountInfo_util");async function ct(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=G({batchRequest:!1},t),o=cr(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=cr(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&lr.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:g}=m;return d.length!==2&&d[1]!=="base64"&&lr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new la(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function xn(r,e,t){let n=await ct(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Y(G({},i),{accountInfo:n[o]}))}async function mr({connection:r,address:e}){let t=await ct(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Li(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Bn({key:s,state:Bn.deserialize(o.data)});n[s.toString()]=a,In[s.toString()]=a}return n}var In={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Bn({key:new Li("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Bn.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 Kn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await da.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}=Pn(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!==Yt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){let t=new jt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Rt(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Sn(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await Rt(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(g,w)=>(g.recentBlockhash=y,await Sn(this.connection,g,a[w].find(k=>k.publicKey.equals(this.owner.publicKey))?a[w]:[...a[w],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let g=s.map((k,h)=>(k.recentBlockhash=y,a[h].length&&k.sign(...a[h]),k));yt(g);let w=await this.signAllTransactions(g);if(l){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:p});h.push({txId:A,status:"sent",signedTx:w[k]}),m==null||m([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),m==null||m([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:p});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Ce(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=G(G({},this.cluster==="devnet"?{}:In),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Yt(p));let c=await mr({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Qt({payerKey:this.feePayer,recentBlockhash:i?Yt.default.toBase58():await Rt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Zt(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var g;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),yt([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let w=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:k,blockhash:h}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:h,lastValidBlockHeight:k,signature:w},"confirmed"),{txId:w,signedTx:m}}if(this.signAllTransactions){let w=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:f}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),yt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash();return s.forEach((w,k)=>{a[k].find(h=>h.publicKey.equals(this.owner.publicKey))||w.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async w=>{let k=await this.connection.sendTransaction(w,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:k},"confirmed"),k})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let g=0,w=[],k=async()=>{if(!f[g])return;let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});w.push({txId:h,status:"sent",signedTx:f[g]}),m==null||m([...w]),g++,this.connection.onSignature(h,P=>{let A=w.findIndex(K=>K.txId===h);A>-1&&(w[A].status=P.err?"error":"success"),m==null||m([...w]),P.err||k()},"processed"),this.connection.getSignatureStatus(h)};return k(),{txIds:[],signedTxs:f}}else{let g=[];for(let w=0;w<f.length;w+=1){let k=await this.connection.sendTransaction(f[w],{skipPreflight:p});g.push(k)}return{txIds:g,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ce(c,["computeBudgetConfig"]),i=t?Pn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Y(G({},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(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Yt(f));if(u.length<12&&Ut({instructions:d,payer:this.feePayer,signers:y})||Ut({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new jt().add(...i.instructions,...u)):s.push(new jt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.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);Ut({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new jt().add(...i.instructions,...u)):s.push(new jt().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 g;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Rt(this.connection);if(s.forEach(async(w,k)=>{w.recentBlockhash=f,a[k].length&&w.sign(...a[k])}),yt(s),(g=this.owner)!=null&&g.isKeyPair){if(m){let w=[];for(let k of s){let h=await Sn(this.connection,k,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async(w,k)=>await Sn(this.connection,w,a[k].find(h=>h.publicKey.equals(this.owner.publicKey))?a[k]:[...a[k],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let k=0,h=[],P=async()=>{if(!w[k])return;let A=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:y});h.push({txId:A,status:"sent",signedTx:w[k]}),d==null||d([...h]),k++,this.connection.onSignature(A,K=>{let S=h.findIndex(B=>B.txId===A);S>-1&&(h[S].status=K.err?"error":"success"),d==null||d([...h]),K.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:h.map(A=>A.txId),signedTxs:w}}else{let k=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:y});k.push(P)}return{txIds:k,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=g,o=Ce(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=G(G({},this.cluster==="devnet"?{}:In),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of a)s[w]===void 0&&u.push(new Yt(w));let c=await mr({connection:this.connection,address:u});for(let[w,k]of Object.entries(c))s[w]=k;let l=t?Pn(t):{instructions:[],instructionTypes:[]},m=await Rt(this.connection),d=this.signers.reduce((w,k)=>Y(G({},w),{[k.publicKey.toBase58()]:k}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(w=>{let k=[...f,w],h=t?[...l.instructions,...k]:k;if(f.length<12&&Xt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s})||Xt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(w);else{if(f.length===0)throw Error("item ins too big");let P={};for(let A of[...new Set(a)])s[A]!==void 0&&(P[A]=s[A]);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Zt(A))}else{let A=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Zt(A))}y.push(Array.from(new Set(f.map(A=>A.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[w]}}),f.length>0){let k=[...new Set(f.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(h=>d[h]).filter(h=>h!==void 0);if(t&&Xt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Zt(h))}else{let h=new Qt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Zt(h))}y.push(k)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async w=>{var K;let{sequentially:k,onTxUpdate:h,recentBlockHash:P,skipPreflight:A=!0}=w||{};if(p.map(async(S,B)=>{y[B].length&&S.sign(y[B]),P&&(S.message.recentBlockhash=P)}),yt(p),(K=this.owner)!=null&&K.isKeyPair){let{lastValidBlockHeight:S,blockhash:B}=await this.connection.getLatestBlockhash();if(p.forEach((_,V)=>{y[V].find(U=>U.publicKey.equals(this.owner.publicKey))||_.sign([this.owner.signer])}),k){let _=[];for(let V of p){let U=await this.connection.sendTransaction(V,{skipPreflight:A}),{lastValidBlockHeight:ue,blockhash:ne}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:ne,lastValidBlockHeight:ue,signature:U},"confirmed"),_.push(U)}return{txIds:_,signedTxs:p}}return{txIds:await Promise.all(p.map(async _=>{let V=await this.connection.sendTransaction(_,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:S,signature:V},"confirmed"),V})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(k){let B=0,_=[],V=async()=>{if(!S[B])return;let U=await this.connection.sendTransaction(S[B],{skipPreflight:A});_.push({txId:U,status:"sent",signedTx:S[B]}),h==null||h([..._]),B++,this.connection.onSignature(U,ue=>{let ne=_.findIndex(oe=>oe.txId===U);ne>-1&&(_[ne].status=ue.err?"error":"success"),h==null||h([..._]),ue.err||V()},"processed"),this.connection.getSignatureStatus(U)};return V(),{txIds:[],signedTxs:S}}else{let B=[];for(let _=0;_<S.length;_+=1){let V=await this.connection.sendTransaction(S[_],{skipPreflight:A});B.push(V)}return{txIds:B,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var dr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),$t=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ie(t)}createTxBuilder(e){return this.scope.checkOwner(),new Kn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(dr(e))}logInfo(...e){this.logger.info(dr(e))}logAndCreateError(...e){let t=dr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as Ln,ASSOCIATED_TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{PublicKey as ze,TransactionInstruction as Et,SystemProgram as Fi,SYSVAR_RENT_PUBKEY as hp}from"@solana/web3.js";var pr=N([F("instruction"),b("amountIn"),b("minAmountOut")]),fr=N([F("instruction"),b("maxAmountIn"),b("amountOut")]),cp=N([F("instruction"),F("nonce")]),pa=N([F("instruction"),F("nonce"),b("startTime")]),lp=N([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),b("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),b("swapQuote2BaseFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("withdrawQueue"),I("lpVault"),I("owner"),b("lpReserve"),D(b(),3,"padding")]),mp=N([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("modelDataAccount"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("owner"),D(b(),64,"padding")]),br=N([F("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),yr=N([F("instruction"),b("amountIn")]);var Ni=N([b("fee")]);import{PublicKey as fa}from"@solana/web3.js";var Ct=new fa("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ht=5e4,ba=N([b("x"),b("y"),b("price")]),ya=N([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),D(ba,ht,"DataElement")]);function ga(r,e){return[0,ht-2]}function wa(r){return[0,ht-2]}function ha(r){return[0,ht-2]}function ka(r,e,t){let[n,i]=ga(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>=ht-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 gr(r,e,t){let[n,i,o]=ka(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 wt(r,e,t){return e*r.multiplier/t}function Ri(r,e,t){return e*t/r.multiplier}function Aa(r,e){let[t,n]=wa(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ht-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 Ta(r,e){let[t,n]=ha(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ht-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 Ci(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Aa(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 Pa(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ta(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 xa(r,e){let t=Ci(r,e,0,!1);return t[3]?t[0]:0}function Ei(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!0,[c,l,m,d]=Ci(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ri(r,p,i)}}function Mi(r,e,t,n){let i=gr(r,e,t),o=wt(r,e,i),s=wt(r,t,i),a=wt(r,n,i),u=!1,[c,l,m,d]=Pa(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ri(r,p,i)}}function Ba(r){let e=ya.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 _i(r,e,t,n){let i=xa(r,wt(r,e,gr(r,e,t)))/r.multiplier;return n?i:1/i}var Jt=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(Ct);e&&(this._layoutData=Ba(e==null?void 0:e.data))}}};var vi=ie("Raydium_liquidity_instruction");function Oi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(br.span);br.encode({instruction:3,baseAmountIn:re(i),quoteAmountIn:re(o),fixedSide:s==="base"?Gt:ci},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:new ze(e.id)}),T({pubkey:new ze(t.authority),isWritable:!1}),T({pubkey:new ze(t.openOrders),isWritable:!1}),T({pubkey:new ze(t.targetOrders)}),T({pubkey:new ze(e.lpMint.address)}),T({pubkey:new ze(t.vault.A)}),T({pubkey:new ze(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:Ct})),u.push(T({pubkey:new ze(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new ze(t.marketEventQueue),isWritable:!1})),new Et({programId:new ze(e.programId),keys:u,data:a})}function wr(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ft(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(yr.span);yr.encode({instruction:4,amountIn:re(i)},a);let u=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:Ct})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Vi({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:g,userLpVault:w,nonce:k,openTime:h,coinAmount:P,pcAmount:A,ammConfigId:K,feeDestinationId:S}){let B=N([F("instruction"),F("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),_=[{pubkey:Ln,isSigner:!1,isWritable:!1},{pubkey:Ia,isSigner:!1,isWritable:!1},{pubkey:Fi.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey: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:K,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:g,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0}],V=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:k,openTime:h,coinAmount:P,pcAmount:A},V),{instruction:new Et({keys:_,programId:r,data:V}),instructionType:$.AmmV4CreatePool}}function Sa({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(pr.span);pr.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[T({pubkey:Ln,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return i===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Ka({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(fr.span);fr.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[T({pubkey:Fi.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return i===5&&a.push(T({pubkey:Ct})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function Wi(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 Sa(Y(G({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Ka(Y(G({},a),{maxAmountIn:i,amountOut:o}),t);vi.logWithError("invalid params","params",r)}throw vi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as ke,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as uo}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as qe,SystemProgram as vt,Keypair as Rr}from"@solana/web3.js";import co from"bn.js";import Fa from"bn.js";function Nn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function hr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function kr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function en(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Di(r,e){return en(r,e)?null:hr(r,e)}function qi(r,e){return en(r,e)?null:kr(r,e)}var Ep=Buffer.from("amm_config","utf8"),La=Buffer.from("pool","utf8"),Na=Buffer.from("pool_vault","utf8"),Ra=Buffer.from("pool_reward_vault","utf8"),Gi=Buffer.from("position","utf8"),Ca=Buffer.from("tick_array","utf8"),Ea=Buffer.from("operation","utf8"),Ma=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ui(r,e,t,n){return de([La,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ar(r,e,t){return de([Na,e.toBuffer(),t.toBuffer()],r)}function Xi(r,e,t){return de([Ra,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return de([Ca,e.toBuffer(),Nn(t)],r)}function kt(r,e,t,n){return de([Gi,e.toBuffer(),Nn(t),Nn(n)],r)}function He(r,e){return de([Gi,e.toBuffer()],r)}function Rn(r){return de([Buffer.from("metadata","utf8"),Lt.toBuffer(),r.toBuffer()],Lt)}function Tr(r){return de([Ea],r)}function Ye(r,e){return de([Ma,e.toBuffer()],r)}import je from"bn.js";var pe=new je(0),Qe=new je(1),Je=new je(-1),_e=new je(1).shln(64),Cn=new je(1).shln(128),Pr=_e.sub(Qe),tn=64,zi=Cn.subn(1),xe=-443636,Se=-xe,Mt=new je("4295048016"),_t=new je("79226673521066979257578248091"),Hi=16,Yi="59543866431248",ji="184467440737095516",Qi="15793534762490258745",En=new je(10).pow(new je(6));var vp=new je("18446744073700000000");var _a=15,Q=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=M.getTickArrayStartIndexByTick(i,o),l=M.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_a/2));for(let p=0;p<l.length;p++){let{publicKey:y}=se(t,n,l[p]);u.push(y)}let m=(await ct(e,u)).map(p=>p!==null?nn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=Y(G({},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=M.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/Q.tickCount(t)),a=n?M.searchLowBitFromStart(i,o,s-1,1,t):M.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=ye-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<ye;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=M.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<ye;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=se(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(M.checkIsOutOfBoundary(e)){if(e>Se)return!1;let n=M.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ye*e}};import H from"bn.js";import{PublicKey as lt}from"@solana/web3.js";import me from"bn.js";var xr=14,et=class{static maxTickInTickarrayBitmap(e){return e*ye*At}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(!Q.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-Q.tickCount(n):t+Q.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ye,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=Di(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=qi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Q.tickCount(n)}}}},rn=class{static getBitmapOffset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=et.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=et.maxTickInTickarrayBitmap(e),n=-t;if(Se<=t)throw Error(`extensionTickBoundary check error: ${Se}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);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:M.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=Q.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}=et.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=M.mergeTickArrayBitmap(e).shln(At-1-a),c=en(512,u)?null:hr(512,u);if(c!==null){let l=t-c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=M.mergeTickArrayBitmap(e).shrn(a),c=en(512,u)?null:kr(512,u);if(c!==null){let l=t+c*Q.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Q.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%et.maxTickInTickarrayBitmap(t),i=Math.floor(n/Q.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};import Ze from"bn.js";var on=class{static getfeeGrowthInside(e,t,n){let i=new Ze(0),o=new Ze(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 Ze(0),a=new Ze(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=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=X.wrappingSubU128(X.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=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),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=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),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=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,_e),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=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,_e),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 Ze(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 Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.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 Ze(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 Ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var g,w,k,h;let a=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=z.getSqrtPriceX64FromTick(t.tickLower),c=z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=J.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[be(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),be(m.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)],[y,f]=[be(new Ze(new E(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Ze(new E(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Zi}from"@solana/spl-token";var Be=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}=Tt.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(Je),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:g}=se(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Je),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?rn.checkTickArrayIsInit(Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):M.checkTickArrayIsInitialized(M.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=se(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/Q.tickCount(e.tickSpacing)),i=t?M.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):M.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=Q.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=et.nextInitializedTickArrayStartIndex(M.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=rn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Se)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=Y(G({},m),{perSecond:X.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new lt(d)});if(p.tokenMint.equals(lt.default))continue;if(n<=p.openTime.toNumber()||i.eq(pe)){s.push(p);continue}let y=new me(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=X.mulDivFloor(f,p.emissionsPerSecondX64,i),w=p.rewardGrowthGlobalX64.add(g),k=X.mulDivFloor(f,p.emissionsPerSecondX64,_e),h=p.rewardTotalEmissioned.add(k);s.push(Y(G({},p),{rewardGrowthGlobalX64:w,rewardTotalEmissioned:h,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=M.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;return t>Se&&(t=Q.getArrayStartIndex(Se,e)+Q.tickCount(e)),n<xe&&(n=Q.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Q.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Q.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await xn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=eo.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=M.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=M.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=se(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await xn(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=nn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Y(G({},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(He(p,d).publicKey);let l=await ct(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Ji.decode(d.data),y=p.poolId.toString(),f=e.find(B=>B.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,w=M._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),k=M._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:P}=J.getAmountsFromLiquidity(g.sqrtPriceX64,w.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(w.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:w.price,priceUpper:k.price,amountA:h,amountB:P,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(B=>Y(G({},B),{pendingReward:new me(0)})),leverage:A,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let K=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=K,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await ct(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let w=d[f].toString();y[w]=nn.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let w of g){let k=`${f.programId.toString()}-${f.id.toString()}-${w.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${w.tickUpper}`,P=y[m[k].toString()],A=y[m[h].toString()],K=P.ticks[M.getTickOffsetInArray(w.tickLower,f.tickSpacing)],S=A.ticks[M.getTickOffsetInArray(w.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:_}=await on.GetPositionFees(f,w,K,S),V=await on.GetPositionRewards(f,w,K,S);w.tokenFeeAmountA=B.gte(new me(0))?B:new me(0),w.tokenFeeAmountB=_.gte(new me(0))?_:new me(0);for(let U=0;U<V.length;U++)w.rewardInfos[U].pendingReward=V[U].gte(new me(0))?V[U]:new me(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?Mt.add(new me(1)):_t.sub(new me(1)):u=z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=be(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:g}=Be.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:pe),u),w=be(p,m,i,!1),k=z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?k:new E(1).div(k),P=p.mul(new me(Math.floor((1-s)*1e10))).div(new me(1e10)),A=be(P,m,i,!1),K=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(h).sub(K).abs(),B=K,_=new Xe(new E(S).mul(10**15).toFixed(0),new E(B).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:w,minAmountOut:A,expirationTime:gt(d.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:_,fee:g,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 Te(Y(G({},u),{mint:u.address,isToken2022:u.programId===Zi.toBase58()})),new Te(Y(G({},c),{mint:c.address,isToken2022:c.programId===Zi.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:g,executionPrice:w,priceImpact:k,fee:h,remainingAccounts:P}=await Be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new lt(u.address),amountIn:n,slippage:o,epochInfo:s}),A=Y(G({},d),{amount:new le(l,d.amount),fee:d.fee===void 0?void 0:new le(l,d.fee)}),K=Y(G({},p),{amount:new le(m,p.amount),fee:p.fee===void 0?void 0:new le(m,p.fee)}),S=Y(G({},y),{amount:new le(m,y.amount),fee:y.fee===void 0?void 0:new le(m,y.fee)}),B=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),_=new Fe({baseToken:l,denominator:new me(10).pow(new me(20+l.decimals)),quoteToken:m,numerator:w.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new le(l,h);return{realAmountIn:A,amountOut:K,minAmountOut:S,expirationTime:f,currentPrice:B,executionPrice:_,priceImpact:k,fee:V,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,g;let o=e[t],s=M.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=M.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,(g=o.rewardApr[2])!=null?g: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[Zn(e.mintA.address).toString()],d=i[Zn(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),g=z.getSqrtPriceX64FromTick(s),w=z.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=J.getAmountsFromLiquidityWithSlippage(f,g,w,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=J.getAmountsFromLiquidityWithSlippage(f,g,w,o,!1,!1,0),K=new E(k.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(d.value)),S=new E(P.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(A.toString()).div(new E(10).pow(y)).mul(d.value)),B=S.div(K.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(B).mul(100).toNumber(),U=3600*24*365,ue=e.rewardDefaultInfos.map(ne=>{var Z,tt;let oe=ne.mint.decimals,j=i[ne.mint.address];return u<((Z=ne.startTime)!=null?Z:0)||u>((tt=ne.endTime)!=null?tt:0)||!ne.perSecond||!j||oe===void 0?0:new E(j.value).mul(new E(ne.perSecond).mul(U)).div(new E(10).pow(oe)).mul(B).mul(100).toNumber()});return{feeApr:V,rewardsApr:ue,apr:V+ue.reduce((ne,oe)=>ne+oe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var w,k;let l=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=z.getSqrtPriceX64FromTick(n),d=z.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=be(o,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,u,!c),f=new me(new E(y.amount.sub((k=y.fee)!=null?k:pe).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?J.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let h=J.getLiquidityFromTokenAmountA(l,d,f,!a),P=J.getLiquidityFromTokenAmountB(m,l,f);g=t?h:P}else g=t?new me(0):J.getLiquidityFromTokenAmountB(m,d,f);return Be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var g,w,k,h;let u=z.getSqrtPriceX64FromTick(n),c=z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=J.getAmountsFromLiquidity(z.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[be(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),be(m.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[y,f]=[be(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:gt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new lt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=$i.decode(i.data),s=Ye(e,new lt(n.id)).publicKey,a=await Be.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return Y(G({},o),{id:new lt(n.id),programId:new lt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:Y(G({},n.config),{id:new lt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var X=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(pe)||(o=o.add(Qe)),o}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(Qe)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Cn).sub(t).mod(Cn)}};function ge(r,e){return Br(r.mul(e),64,256)}function va(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Br(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var z=class{static sqrtPriceX64ToPrice(e,t,n){return X.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return X.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))return e;let o=t.shln(tn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?X.mulDivCeil(s,e,a):X.mulDivRoundingUp(s,Qe,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 X.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(tn);if(i)return e.add(o.div(t));{let s=X.mulDivRoundingUp(o,Qe,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<xe||e>Se)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=zi.div(n)),n}static getTickFromPrice(e,t,n){return z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(_t)||e.lt(Mt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new H(t-64),i=va(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<Hi;){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 H(Yi)),d=Br(m.sub(new H(ji)),64,128).toNumber(),p=Br(m.add(new H(Qi)),64,128).toNumber();return d==p?d:z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=z.getTickFromSqrtPriceX64(z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Pt.getTickWithPriceAndTickspacing(e,t,n,i),s=z.getSqrtPriceX64FromTick(o);return z.sqrtPriceX64ToPrice(s,n,i)}},J=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(pe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(tn),s=t.sub(e);return i?X.mulDivRoundingUp(X.mulDivCeil(o,s,t),Qe,e):X.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return i?X.mulDivCeil(n,t.sub(e),_e):X.mulDivFloor(n,t.sub(e),_e)}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?X.mulDivRoundingUp(a,Qe,Pr):a.shrn(tn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),X.mulDivFloor(n,Pr,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return J.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=J.getLiquidityFromTokenAmountA(e,n,i,!1),a=J.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return J.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:J.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new H(0)};if(e.lt(n)){let s=J.getTokenAmountAFromLiquidity(e,n,i,o),a=J.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:J.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=J.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new H(new E(u.toString()).mul(l).toFixed(0)),d=new H(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 k,h,P,A;let c=z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=z.getSqrtPriceX64FromTick(t),m=z.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=J.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),be(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[g,w]=[be(new H(new E(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),be(new H(new E(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:w,expirationTime:gt(y.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(pe))throw new Error("amountSpecified must not be 0");if(y||(y=s?Mt.add(Qe):_t.sub(Qe)),s){if(y.lt(Mt))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(_t))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(pe),g={amountSpecifiedRemaining:d,amountCalculated:pe,sqrtPriceX64:m,tick:c>p?Math.min(p+Q.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},w=p,k=n[p],h=0,P=!s&&k.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(pe)&&!g.sqrtPriceX64.eq(y);){if(h>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=g.sqrtPriceX64;let K=M.nextInitTick(k,g.tick,l,s,P),S=K||null,B=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=Be.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");w=V.nextStartIndex;let{publicKey:U}=se(e,t,w);B=U,k=n[w],S=M.firstInitializedTick(k,s)}A.tickNext=S.tick,A.initialized=S.liquidityGross.gtn(0),p!==w&&B&&(g.accounts.push(B),p=w),A.tickNext<xe?A.tickNext=xe:A.tickNext>Se&&(A.tickNext=Se),A.sqrtPriceNextX64=z.getSqrtPriceX64FromTick(A.tickNext);let _;if(s&&A.sqrtPriceNextX64.lt(y)||!s&&A.sqrtPriceNextX64.gt(y)?_=y:_=A.sqrtPriceNextX64,[g.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=Tt.swapStepCompute(g.sqrtPriceX64,_,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(A.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),g.amountCalculated=g.amountCalculated.sub(A.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(A.amountOut),g.amountCalculated=g.amountCalculated.add(A.amountIn.add(A.feeAmount))),g.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let V=S.liquidityNet;s&&(V=V.mul(Je)),g.liquidity=J.addDelta(g.liquidity,V)}P=A.tickNext!=g.tick&&!s&&k.startTickIndex===A.tickNext,g.tick=s?A.tickNext-1:A.tickNext}else if(g.sqrtPriceX64!=A.sqrtPriceStartX64){let V=z.getTickFromSqrtPriceX64(g.sqrtPriceX64);P=V!=g.tick&&!s&&k.startTickIndex===V,g.tick=V}++h}try{let{nextStartIndex:A,isExist:K}=Q.nextInitializedTickArray(g.tick,l,s,i,o);K&&p!==A&&(g.accounts.push(se(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=i.gte(pe);if(u){let l=X.mulDivFloor(i,En.sub(new H(o.toString())),En);s.amountIn=a?J.getTokenAmountAFromLiquidity(t,e,n,!0):J.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?J.getTokenAmountBFromLiquidity(t,e,n,!1):J.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Je),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=J.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=J.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:J.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:J.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Je))&&(s.amountOut=i.mul(Je)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=X.mulDivCeil(s.amountIn,new H(o),En.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ye=60,At=512,M=class{static getTickArrayAddressByTick(e,t,n,i){let o=M.getTickArrayStartIndexByTick(n,i),{publicKey:s}=se(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=M.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ye)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=Q.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)*Q.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ye,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ye,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*ye:e+t*ye}static mergeTickArrayBitmap(e){let t=new Fa(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*ye));return[...M.searchLowBitFromStart(e,t,s-1,o,n),...M.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return M.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=M.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=se(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=>M.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=Q.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=>M.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=Q.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Se}static nextInitTick(e,t,n,i,o){if(Q.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<ye;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ye-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ye;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=z.getSqrtPriceX64FromTick(t),o=z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=z.getSqrtPriceX64FromTick(o),a=z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var Xf=N([Pe(8),F("bump"),Nt("index"),I(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),Nt("tickSpacing"),D(b(),8,"")]),Oa=N([Ee("blockTimestamp"),O("sqrtPriceX64"),O("cumulativeTimePriceX64"),D(O(),1,"")]),Ir=N([Pe(8),Ne("initialized"),I("poolId"),D(Oa,1e3,"observations"),D(O(),5,"")]),Va=N([F("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),O("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),I("tokenMint"),I("tokenVault"),I("creator"),O("rewardGrowthGlobalX64")]),$i=N([Pe(8),F("bump"),I("ammConfig"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),Nt("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),he("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),O("swapInAmountTokenA"),O("swapOutAmountTokenB"),O("swapInAmountTokenB"),O("swapOutAmountTokenA"),F("status"),D(F(),7,""),D(Va,3,"rewardInfos"),D(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),D(b(),15*4-3,"padding")]),Wa=N([O("growthInsideLastX64"),b("rewardAmountOwed")]),Ji=N([Pe(8),F("bump"),I("nftMint"),I("poolId"),he("tickLower"),he("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),D(Wa,3,"rewardInfos"),D(b(),8,"")]),zf=N([Pe(8),F("bump"),I("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),D(O(),3,"rewardGrowthInside"),D(b(),8,"")]),Da=N([he("tick"),gi("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),D(O(),3,"rewardGrowthsOutsideX64"),D(Ee(),13,"")]),nn=N([Pe(8),I("poolId"),he("startTickIndex"),D(Da,ye,"ticks"),F("initializedTickCount"),D(F(),115,"")]),Hf=N([Pe(329),D(I(),100,"whitelistMints")]),eo=N([Pe(8),I("poolId"),D(D(b(),8),xr,"positiveTickArrayBitmap"),D(D(b(),8),xr,"negativeTickArrayBitmap")]);import{PublicKey as za,Keypair as Ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ya}from"@solana/spl-token";import fb from"bn.js";var to=N([I("mint"),I("owner"),b("amount"),Ee("delegateOption"),I("delegate"),F("state"),Ee("isNativeOption"),b("isNative"),b("delegatedAmount"),Ee("closeAuthorityOption"),I("closeAuthority")]);function qa(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Sr(r,...e){if(!qa(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 Kr(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 no(r,e){Sr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var _n=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),De=(r,e)=>r<<32-e|r>>>e;var Jf=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ga(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Lr(r){return typeof r=="string"&&(r=Ga(r)),Sr(r),r}var Mn=class{clone(){return this._cloneInto()}},eb={}.toString;function ro(r){let e=n=>r().update(Lr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Ua(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 io=(r,e,t)=>r&e^~r&t,oo=(r,e,t)=>r&e^r&t^e&t,vn=class extends Mn{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=_n(this.buffer)}update(e){Kr(this);let{view:t,buffer:n,blockLen:i}=this;e=Lr(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=_n(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){Kr(this),no(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;Ua(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=_n(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 Xa=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]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),Nr=class extends vn{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[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)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],y=De(d,7)^De(d,18)^d>>>3,f=De(p,17)^De(p,19)^p>>>10;dt[m]=f+dt[m-7]+y+dt[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=De(a,6)^De(a,11)^De(a,25),p=l+d+io(a,u,c)+Xa[m]+dt[m]|0,f=(De(n,2)^De(n,13)^De(n,22))+oo(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(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var so=ro(()=>new Nr);var wb=ie("Raydium_Util");function ao({fromPublicKey:r,programId:e=Ya}){let t=Ha.generate().publicKey.toBase58().slice(0,32);return{publicKey:ja(r,t,e),seed:t}}function ja(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=so(n);return new za(i)}var lo=ie("Raydium_Clmm"),Ge={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]},Fn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=N([O("sqrtPriceX64"),b("startTime")]),g=[{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:vt.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},w);let k=Buffer.from([...Ge.createPool,...w]);return new qe({keys:g,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=ao({fromPublicKey:i,programId:n}),[d,p]=[new L(o.address),new L(s.address)],y=[vt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ir.span),space:Ir.span,programId:n})],{publicKey:f}=Ui(n,a,d,p),{publicKey:g}=Ar(n,f,d),{publicKey:w}=Ar(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,g,new L(o.programId||ke),p,w,new L(s.programId||ke),Ye(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:w},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,k,h,P,A,K,S,B,_,V){let U=N([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),O("liquidity"),b("amountMaxA"),b("amountMaxB"),Ne("withMetadata"),F("optionBaseFlag"),Ne("baseFlag")]),ue=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],ne=[{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:at,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:uo,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:K,amountMaxA:S,amountMaxB:B,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}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 L(e.programId),new L(e.id)],y;if(l)y=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),y=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,g),{publicKey:h}=Me(n.wallet,y,ke),{publicKey:P}=Rn(y),{publicKey:A}=He(d,y),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,g,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K}}}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 L(e.programId),new L(e.id)],y;if(l)y=new L((await l(1))[0]);else{let B=Rr.generate();m.push(B),y=B.publicKey}let f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(d,p,f),{publicKey:k}=se(d,p,g),{publicKey:h}=Me(n.wallet,y,ke),{publicKey:P}=Rn(y),{publicKey:A}=He(d,y),{publicKey:K}=kt(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),i,o,f,g,c,s,a,u,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ye(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},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,g,w,k,h,P,A,K,S,B,_,V){let U=N([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),O("liquidity"),b("amountMaxA"),b("amountMaxB"),Ne("withMetadata"),F("optionBaseFlag"),Ne("baseFlag")]),ue=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],ne=[{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:at,isSigner:!1,isWritable:!1},{pubkey:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:uo,isSigner:!1,isWritable:!1},{pubkey:Lt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ue],oe=Buffer.alloc(U.span);U.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new co(0),amountMaxA:S==="MintA"?B:_,amountMaxB:S==="MintA"?_:B,withMetadata:K==="create",baseFlag:S==="MintA",optionBaseFlag:1},oe);let j=Buffer.from([...Ge.openPosition,...oe]);return new qe({keys:ne,programId:e,data:j})}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 L((await l(1))[0]);else{let B=Rr.generate();d.push(B),m=B.publicKey}let[p,y]=[new L(e.programId),new L(e.id)],f=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=se(p,y,f),{publicKey:k}=se(p,y,g),{publicKey:h}=Me(n.wallet,m,ke),{publicKey:P}=Rn(m),{publicKey:A}=He(p,m),{publicKey:K}=kt(p,y,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,h,P,K,w,k,A,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(t.mintA.address),new L(t.mintB.address),i,o,f,g,s,a,u,c,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ye(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:h,metadataAccount:P,personalPosition:A,protocolPosition:K},instructions:[S],signers:d,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=N([]),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:vt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Ge.closePosition,...u]);return new qe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new L(e.programId),{publicKey:s}=Me(n.wallet,i.nftMint,ke),{publicKey:a}=He(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,g,w,k){let h=N([O("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Ne("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:g,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:y}=Me(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:g}=kt(u,c,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[w],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 L(e.programId),new L(e.id)],l=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,c,l),{publicKey:p}=se(u,c,m),{publicKey:y}=Me(i.wallet,n.nftMint,ke),{publicKey:f}=He(u,n.nftMint),{publicKey:g}=kt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ye(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,g,w,k){let h=N([O("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Ne("baseFlag")]),P=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],A=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],K=Buffer.alloc(h.span);h.encode({liquidity:new co(0),amountMaxA:f==="MintA"?g:w,amountMaxB:f==="MintA"?w:g,baseFlag:f==="MintA",optionBaseFlag:1},K);let S=Buffer.from([...Ge.increaseLiquidity,...K]);return new qe({keys:A,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,k,h){let P=N([O("liquidity"),b("amountMinA"),b("amountMinB")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],K=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...A],S=Buffer.alloc(P.span);P.encode({liquidity:g,amountMinA:w,amountMinB:k},S);let B=Buffer.from([...Ge.decreaseLiquidity,...S]);return new qe({keys:K,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new L(e.programId),new L(e.id)],m=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:y}=se(c,l,d),{publicKey:f}=Me(i.wallet,n.nftMint,u),{publicKey:g}=He(c,n.nftMint),{publicKey:w}=kt(c,l,n.tickLower,n.tickUpper),k=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)k.push({poolRewardVault:new L(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new L(e.rewardDefaultInfos[P].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,g,l,w,p,y,i.tokenAccountA,i.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),k,o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ye(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:w},signers:[],instructions:h,instructionTypes:[$.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w){let k=N([b("amount"),b("otherAmountThreshold"),O("sqrtPriceLimitX64"),Ne("isBaseInput")]),h=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],P=[{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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],A=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},A);let K=Buffer.from([...Ge.swap,...A]);return new qe({keys:P,programId:e,data:K})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new L(e.programId),new L(e.id)],[m,d]=[new L(t.vault.A),new L(t.vault.B)],[p,y]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new L(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,Ye(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[$.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=N([b("openTime"),b("endTime"),O("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:vt.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...Ge.initReward,...f]);return new qe({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(e.id)],a=Xi(o,s,i.mint).publicKey,u=Tr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new L(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=N([F("rewardIndex"),O("emissionsPerSecondX64"),b("openTime"),b("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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,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:re(l),endTime:re(m)},f);let g=Buffer.from([...Ge.setRewardEmissions,...f]);return new qe({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new L(e.programId),new L(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 L(t.rewardInfos[d].vault),c=new L(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&lo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Tr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new L(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=N([F("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:ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ge.collectReward,...l]);return new qe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new L(e.programId),new L(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new L(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&lo.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 L(e.programId),new L(e.id)],[m,d]=[new L(t.vault.A),new L(t.vault.B)],[p,y]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new L(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:g,instructionTypes:[$.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as $a}from"@solana/web3.js";import{PublicKey as Qa}from"@solana/web3.js";import mo from"bn.js";var po=new mo(25),fo=new mo(1e4);var Za=ie("Raydium_liquidity_serum");function bo({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=Qa.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Za.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 Jb from"bn.js";function Cr({programId:r}){let{publicKey:e}=de([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function xt({name:r,programId:e,marketId:t}){let{publicKey:n}=de([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Ja({programId:r,marketId:e}){let{publicKey:t}=de([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function eu({programId:r}){return de([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function yo({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=xt({name:"amm_associated_seed",programId:a,marketId:t}),l=xt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=eu({programId:a}),p=xt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=xt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=Ja({programId:a,marketId:t}),w=xt({name:"target_associated_seed",programId:a,marketId:t}),k=xt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=bo({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:g,targetOrders:w,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:$a.default,configId:Cr({programId:a})}}import{PublicKey as go}from"@solana/web3.js";var ay=ie("Raydium_farm_config"),uy=new go("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cy=new go("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var On={"Standard SPL":0,"Option tokens":1},wo={[hi.toString()]:3,[ki.toString()]:5,[Ai.toString()]:6};var su=N([F("instruction")]),au=N([F("instruction")]),uu=N([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),O("accRewardPerShare"),I("rewardVault"),I("rewardMint"),I("rewardSender"),b("rewardType"),D(b(),15,"padding")]),cu=N([b("state"),b("nonce"),I("lpVault"),I("rewardVault"),I(),I(),b(),b(),b("totalReward"),O("perShareReward"),b("lastSlot"),b("perSlotReward")]),lu=N([b("state"),b("nonce"),I("lpVault"),I("rewardVaultA"),b("totalRewardA"),O("perShareRewardA"),b("perSlotRewardA"),F("option"),I("rewardVaultB"),Pe(7),b("totalRewardB"),O("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),I()]),mu=N([b(),b("state"),b("nonce"),b("validRewardTokenNum"),O("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),I("lpMint"),I("lpVault"),D(uu,5,"rewardInfos"),I("creator"),I(),D(b(),32,"padding")]),tu=new Proxy(cu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(G({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),nu=new Proxy(lu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(G({},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)}}),ru=new Proxy(mu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Y(G({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return Y(G({},o),{rewardType:((s=Object.entries(On).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),du=N([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),pu=N([F("instruction"),b("nonce"),D(du,5,"rewardTimeInfo")]),fu=N([F("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),bu=N([F("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),yy=N([b("state"),I("id"),I("owner"),b("deposited"),D(b(),1,"rewardDebts")]),ho=N([b("state"),I("id"),I("owner"),b("deposited"),D(O(),1,"rewardDebts"),b(""),b("voteLockedBalance"),D(b(),15)]),gy=N([b("state"),I("id"),I("owner"),b("deposited"),D(b(),2,"rewardDebts")]),iu=N([b("state"),I("id"),I("owner"),b("deposited"),D(O(),2,"rewardDebts"),D(b(),17)]),ou=N([b(),b("state"),I("id"),I("owner"),b("deposited"),D(O(),5,"rewardDebts"),D(b(),16)]),Bt=N([F("instruction"),b("amount")]),yu=N([I("mint"),I("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),yi("digitShift"),D(F(),7,"reserved1"),D(b(),7,"reserved2")]),gu=N([Pe(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),D(F(),32,"reserved1"),D(yu,4,"votingMints"),Tn("timeOffset"),F("bump"),D(F(),7,"reserved2"),D(b(),11,"reserved3")]),wu=N([Tn("startTime"),Tn("endTime"),F("kind"),D(F(),15,"reserved")]),hu=N([D(wu,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Ne("isUsed"),Ne("allowClawback"),F("votingMintConfigIdx"),D(F(),29,"reserved")]),ku=N([Pe(8),I("voterAuthority"),I("registrar"),D(hu,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),D(F(),94,"reserved")]);import xy from"bn.js";var Fy=ie("Raydium.farm.util");function Vn({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=de([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}import{PublicKey as Ie,SystemProgram as jy,SYSVAR_RENT_PUBKEY as Qy,SYSVAR_CLOCK_PUBKEY as ko,TransactionInstruction as Er}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Jy,TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as eg}from"@solana/spl-token";import ng from"bn.js";var fg=ie("Raydium_farm_instruction"),bg={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 Ao(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Ie(e.programId),new Ie(e.id)],c=Vn({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:re(s)},l);let m=[T({pubkey:Mr,isWritable:!1}),T({pubkey:u}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new Ie(t.rewardInfos[d].vault)})),m.push(T({pubkey:i[d]}));return new Er({programId:a,keys:m,data:l})}function To(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=Vn({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:ko,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:i[p]})),d.push(T({pubkey:new Ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}function Po(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ie(e.programId),new Ie(e.id)],l=Vn({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:re(s)},m);let d=[T({pubkey:c}),T({pubkey:new Ie(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Ie(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Ie(t.rewardInfos[0].vault)}),T({pubkey:ko,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new Er({programId:u,keys:d,data:m})}import ve from"bn.js";var _r=class extends $t{constructor(t){super(t);this.stableLayout=new Jt({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 ve(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=wi(t[o?"mintB":"mintA"]),[u,c]=[new ve(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ve(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ve(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()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Gt;s.isZero()||(d=m==="base"?hn(s.mul(c),u):hn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=hn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Xe(new ve(1)).add(i).mul(d).quotient,g=new le(a,d),w=new le(a,f);return this.logDebug("anotherAmount:",g.toFixed(),"maxAnotherAmount:",w.toFixed()),{anotherAmount:g,maxAnotherAmount:w,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}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let w=await l.getCreatedTokenAccount({mint:new Re(n.lpMint.address)}),k=[p,y],h=[f,g],P=[i.raw,o.raw],A=i.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(A)||this.logAndCreateError("invalid fixedSide","fixedSide",s),A==="quote"?(k.reverse(),h.reverse(),P.reverse(),K=s==="a"?"quote":"base"):A==="base"&&(K=s==="a"?"base":"quote");let[S,B]=k,[_,V]=h,[U,ue]=P,ne=await this.getAmmPoolKeys(n.id),oe=this.createTxBuilder(),nt=await l.handleTokenAccount({side:"in",amount:U,mint:S.mint,tokenAccount:_,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:j}=nt,Z=Ce(nt,["tokenAccount"]);oe.addInstruction(Z);let sn=await l.handleTokenAccount({side:"in",amount:ue,mint:B.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:tt}=sn,Ft=Ce(sn,["tokenAccount"]);oe.addInstruction(Ft);let Ot=await l.handleTokenAccount({side:"out",amount:0,mint:new Re(n.lpMint.address),tokenAccount:w,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Dn}=Ot,qn=Ce(Ot,["tokenAccount"]);return oe.addInstruction(qn),oe.addInstruction({instructions:[Oi({poolInfo:n,poolKeys:ne,userKeys:{baseTokenAccount:j,quoteTokenAccount:tt,lpTokenAccount:Dn,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:ue,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5AddLiquidity:$.AmmV4AddLiquidity],lookupTableAddress:ne.lookupTableAccount?[ne.lookupTableAccount]:[]}),oe.addCustomComputeBudget(c),u===0&&await oe.buildV0(),oe.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 Re(n.mintA.address),new Re(n.mintB.address),new Re(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}),g=this.createTxBuilder(),{bypassAssociatedCheck:w,checkCreateATAOwner:k}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:h}=S,P=Ce(S,["tokenAccount"]);g.addInstruction(P);let B=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:w,checkCreateATAOwner:k}),{tokenAccount:A}=B,K=Ce(B,["tokenAccount"]);return g.addInstruction(K),g.addInstruction({instructions:[wr({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:h,quoteTokenAccount:A,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(a),s===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Wn,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 g={};for(let j of this.scope.account.tokenAccountRawInfos)(g[j.accountInfo.mint.toString()]===void 0||Me(this.scope.ownerPubKey,j.accountInfo.mint,Wn).publicKey.equals(j.pubkey))&&(g[j.accountInfo.mint.toString()]=j.pubkey);let w=g[t.lpMint.address];if(w===void 0)throw Error("find lp account error in trade accounts");let k=i.add(a!=null?a:new ve(0)),h=t.mintA.address===Te.WSOL.mint.toString(),P=t.mintB.address===Te.WSOL.mint.toString(),{account:A,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Wn,mint:new Re(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(K||{}),A===void 0)throw new Error("base token account not found");let{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Wn,mint:new Re(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(B||{}),S===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=A,g[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let j=[];for(let nt of s.rewardInfos){let sn=nt.mint.address===Te.WSOL.mint.toString();if(g[nt.mint.address])j.push(g[nt.mint.address]);else{let{account:Ot,instructionParams:vr}=await this.scope.account.getOrCreateTokenAccount({mint:new Re(nt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!sn,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Ot||this.logAndCreateError("farm reward account not found:",nt.mint.address),vr&&f.addInstruction(vr),j.push(Ot)}}let Z=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],tt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Z,lpAccount:w,rewardAccounts:j},Ft=wo[s.programId],Dn=Ft===6?Ao(tt):Ft===5?To(tt):Po(tt),qn={3:$.FarmV3Withdraw,5:$.FarmV5Withdraw,6:$.FarmV6Withdraw};f.addInstruction({instructions:[Dn],instructionTypes:[qn[Ft]]})}let _=await this.getAmmPoolKeys(t.id),V=wr({poolInfo:t,poolKeys:_,userKeys:{lpTokenAccount:w,baseTokenAccount:A,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:k});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity],lookupTableAddress:_.lookupTableAccount?[_.lookupTableAccount]:[]});let[U,ue]=t.mintA.address===n.mintA.address?[A,S]:[S,A],ne=await this.scope.clmm.getClmmPoolKeys(t.id),oe=await Fn.openPositionFromBaseInstructions(Y(G({poolInfo:n,poolKeys:ne,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:ue},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...oe.instructions],signers:oe.signers,instructionTypes:[...oe.instructionTypes],lookupTableAddress:ne.lookupTableAccount?[ne.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 ue;let g=c.feePayer||((ue=this.scope.owner)==null?void 0:ue.publicKey),w=c.useSOLBalance&&i.mint.equals(xo),k=c.useSOLBalance&&o.mint.equals(xo),h=this.createTxBuilder(),{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:w?{payer:g,amount:s}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:l,checkCreateATAOwner:m});h.addInstruction(A||{});let{account:K,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:g,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(S||{}),P===void 0||K===void 0)throw Error("you don't has some token account");let B=yo({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),_={programId:t,ammId:B.id,ammAuthority:B.authority,ammOpenOrders:B.openOrders,lpMint:B.lpMint,coinMint:B.baseMint,pcMint:B.quoteMint,coinVault:B.baseVault,pcVault:B.quoteVault,withdrawQueue:B.withdrawQueue,ammTargetOrders:B.targetOrders,poolTempLp:B.lpVault,marketProgramId:B.marketProgramId,marketId:B.marketId,ammConfigId:B.configId,feeDestinationId:y},{instruction:V,instructionType:U}=Vi(Y(G({},_),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:K,userLpVault:Me(this.scope.ownerPubKey,B.lpMint,d).publicKey,nonce:B.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[V],instructionTypes:[U]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:_}})}async getCreatePoolFee({programId:t}){let n=Cr({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ni.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Ti.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let B=_i(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(B*1e6):y=new E(B*1e6).div(1e6)}let f=n,g=new ve(0),w=new ve(0);if(!f.isZero())if(p){w=Ht(f.mul(po),fo);let B=f.sub(w),_=m.add(B);g=d.mul(B).div(_)}else{w=f.mul(new ve(2)).div(new ve(1e4));let B=f.sub(w);l==="quote"?g=new ve(Ei(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber())):g=new ve(Mi(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),B.toNumber()))}let k=new ve(new E(g.toString()).mul(1-s).toFixed(0)),h=g,P=k,A=new E(g.toString()).div(new E(f.sub(w).toString()).toFixed(0));!f.isZero()&&!g.isZero()&&(A=new E(g.toString()).div(f.sub(w).toString()));let K=y.sub(A).div(y).mul(100);return{amountOut:h,minAmountOut:P,currentPrice:y,executionPrice:A,priceImpact:K,fee:w}}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 Re(l.address),programId:new Re(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Re(m.address),programId:new Re(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Re(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=P,f=Ce(P,["tokenAccount"]);c.addInstruction(f);let A=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Re(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=A,w=Ce(A,["tokenAccount"]);c.addInstruction(w);let k=await this.getAmmPoolKeys(t.id),h=4;return t.pooltype.includes("StablePool")&&(h=5),c.addInstruction({instructions:[Wi({version:h,poolKeys:k,userKeys:{tokenAccountIn:y,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[h===4?$.AmmV4SwapBaseIn:$.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};export{_r as default};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=liquidity.mjs.map
|