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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/index.d.ts +1 -1
  2. package/lib/index.js +1 -1
  3. package/lib/index.js.map +1 -1
  4. package/lib/index.mjs +1 -1
  5. package/lib/index.mjs.map +1 -1
  6. package/lib/raydium/account/account.d.ts +1 -1
  7. package/lib/raydium/clmm/clmm.d.ts +1 -1
  8. package/lib/raydium/clmm/clmm.js +1 -1
  9. package/lib/raydium/clmm/clmm.js.map +1 -1
  10. package/lib/raydium/clmm/clmm.mjs +1 -1
  11. package/lib/raydium/clmm/clmm.mjs.map +1 -1
  12. package/lib/raydium/clmm/index.d.ts +1 -1
  13. package/lib/raydium/clmm/index.js +1 -1
  14. package/lib/raydium/clmm/index.js.map +1 -1
  15. package/lib/raydium/clmm/index.mjs +1 -1
  16. package/lib/raydium/clmm/index.mjs.map +1 -1
  17. package/lib/raydium/cpmm/cpmm.d.ts +1 -1
  18. package/lib/raydium/farm/farm.d.ts +1 -1
  19. package/lib/raydium/ido/ido.d.ts +1 -1
  20. package/lib/raydium/ido/index.d.ts +1 -1
  21. package/lib/raydium/index.d.ts +1 -1
  22. package/lib/raydium/index.js +1 -1
  23. package/lib/raydium/index.js.map +1 -1
  24. package/lib/raydium/index.mjs +1 -1
  25. package/lib/raydium/index.mjs.map +1 -1
  26. package/lib/raydium/liquidity/liquidity.d.ts +1 -1
  27. package/lib/raydium/marketV2/createMarket.d.ts +1 -1
  28. package/lib/raydium/marketV2/index.d.ts +1 -1
  29. package/lib/raydium/moduleBase.d.ts +1 -1
  30. package/lib/raydium/raydium.d.ts +1 -1
  31. package/lib/raydium/raydium.js +1 -1
  32. package/lib/raydium/raydium.js.map +1 -1
  33. package/lib/raydium/raydium.mjs +1 -1
  34. package/lib/raydium/raydium.mjs.map +1 -1
  35. package/lib/raydium/token/token.d.ts +1 -1
  36. package/lib/raydium/tradeV2/index.js +1 -1
  37. package/lib/raydium/tradeV2/index.js.map +1 -1
  38. package/lib/raydium/tradeV2/index.mjs +1 -1
  39. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  40. package/lib/raydium/tradeV2/instrument.js +1 -1
  41. package/lib/raydium/tradeV2/instrument.js.map +1 -1
  42. package/lib/raydium/tradeV2/instrument.mjs +1 -1
  43. package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
  44. package/lib/raydium/tradeV2/trade.d.ts +1 -1
  45. package/lib/raydium/utils1216/index.d.ts +1 -1
  46. package/lib/raydium/utils1216/utils1216.d.ts +1 -1
  47. package/lib/{raydium-5d4faf36.d.ts → raydium-3aa078dd.d.ts} +6 -1
  48. package/package.json +1 -1
  49. package/src/raydium/clmm/clmm.ts +19 -1
@@ -1,3 +1,3 @@
1
- var Mi=Object.create;var Rt=Object.defineProperty,Oi=Object.defineProperties,Ei=Object.getOwnPropertyDescriptor,Di=Object.getOwnPropertyDescriptors,vi=Object.getOwnPropertyNames,Qt=Object.getOwnPropertySymbols,_i=Object.getPrototypeOf,In=Object.prototype.hasOwnProperty,kr=Object.prototype.propertyIsEnumerable;var Tr=(r,e,t)=>e in r?Rt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_=(r,e)=>{for(var t in e||(e={}))In.call(e,t)&&Tr(r,t,e[t]);if(Qt)for(var t of Qt(e))kr.call(e,t)&&Tr(r,t,e[t]);return r},J=(r,e)=>Oi(r,Di(e));var $t=(r,e)=>{var t={};for(var n in r)In.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Qt)for(var n of Qt(r))e.indexOf(n)<0&&kr.call(r,n)&&(t[n]=r[n]);return t};var Vi=(r,e)=>{for(var t in e)Rt(r,t,{get:e[t],enumerable:!0})},xr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vi(e))!In.call(r,i)&&i!==t&&Rt(r,i,{get:()=>e[i],enumerable:!(n=Ei(e,i))||n.enumerable});return r};var se=(r,e,t)=>(t=r!=null?Mi(_i(r)):{},xr(e||!r||!r.__esModule?Rt(t,"default",{value:r,enumerable:!0}):t,r)),qi=r=>xr(Rt({},"__esModule",{value:!0}),r);var gs={};Vi(gs,{AMM_CONFIG_SEED:()=>ci,AmmConfigLayout:()=>is,BIT_PRECISION:()=>Qn,Clmm:()=>Bn,ClmmInstrument:()=>fe,EXTENSION_TICKARRAY_BITMAP_SIZE:()=>hn,FEE_RATE_DENOMINATOR:()=>Ht,FETCH_TICKARRAY_COUNT:()=>xi,Fee:()=>ai,LOG_B_2_X32:()=>$n,LOG_B_P_ERR_MARGIN_LOWER_X64:()=>Jn,LOG_B_P_ERR_MARGIN_UPPER_X64:()=>er,LiquidityMath:()=>U,MAX_SQRT_PRICE_X64:()=>et,MAX_TICK:()=>Ce,MIN_SQRT_PRICE_X64:()=>Je,MIN_TICK:()=>Ae,MathUtil:()=>D,MaxU64:()=>fn,MaxUint128:()=>Zn,NEGATIVE_ONE:()=>Ye,ONE:()=>We,OPERATION_SEED:()=>pi,ObservationInfoLayout:()=>An,ObservationLayout:()=>Ai,OperationLayout:()=>dr,POOL_REWARD_VAULT_SEED:()=>mi,POOL_SEED:()=>ui,POOL_TICK_ARRAY_BITMAP_SEED:()=>fi,POOL_VAULT_SEED:()=>li,POSITION_SEED:()=>or,PoolInfoLayout:()=>mr,PoolUtils:()=>Te,PositionInfoLayout:()=>Zt,PositionRewardInfoLayout:()=>Ti,PositionUtils:()=>Nt,ProtocolPositionLayout:()=>os,Q128:()=>Xt,Q64:()=>Re,RewardInfo:()=>Pi,SqrtPriceMath:()=>O,SwapMath:()=>dt,TICK_ARRAY_BITMAP_SIZE:()=>lt,TICK_ARRAY_SEED:()=>di,TICK_ARRAY_SIZE:()=>pe,TICK_SPACINGS:()=>Zo,TickArrayBitmap:()=>Ze,TickArrayBitmapExtensionLayout:()=>pr,TickArrayBitmapExtensionUtils:()=>Ct,TickArrayLayout:()=>Kt,TickLayout:()=>ki,TickMath:()=>mt,TickQuery:()=>X,TickUtils:()=>C,U64Resolution:()=>kt,U64_IGNORE_RANGE:()=>$o,ZERO:()=>H,getLiquidityFromAmounts:()=>ss,getPdaAmmConfigId:()=>ts,getPdaExBitmapAccount:()=>Ge,getPdaMetadataKey:()=>Yt,getPdaOperationAccount:()=>Bt,getPdaPersonalPositionAddress:()=>Fe,getPdaPoolId:()=>sr,getPdaPoolRewardVaulId:()=>ar,getPdaPoolVaultId:()=>yn,getPdaProtocolPositionAddress:()=>ut,getPdaTickArrayAddress:()=>Q,i16ToBytes:()=>Jo,i32ToBytes:()=>zt,isZero:()=>xt,leadingZeros:()=>gn,leastSignificantBit:()=>ir,mockCreatePoolInfo:()=>Qo,mockV3CreatePoolInfo:()=>tr,mostSignificantBit:()=>rr,trailingZeros:()=>bn,u16ToBytes:()=>nr,u32ToBytes:()=>es});module.exports=qi(gs);var W=require("@solana/web3.js");var ht=9e15,st=1e9,Sn="0123456789abcdef",en="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",tn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Cn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-ht,maxE:ht,crypto:!1},Cr,Qe,v=!0,rn="[DecimalError] ",ot=rn+"Invalid argument: ",Kr=rn+"Precision limit exceeded",Nr=rn+"crypto unavailable",Rr="[object Decimal]",Be=Math.floor,ge=Math.pow,Wi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Gi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ui=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Lr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ve=1e7,L=7,Xi=9007199254740991,Hi=en.length-1,Kn=tn.length-1,T={toStringTag:Rr};T.absoluteValue=T.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),K(r)};T.ceil=function(){return K(new this.constructor(this),this.e+1,2)};T.clampedTo=T.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)};T.comparedTo=T.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,c=o.s,u=r.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==r.e)return o.e>r.e^c<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]^c<0?1:-1;return n===i?0:n>i^c<0?1:-1};T.cosine=T.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())+L,n.rounding=1,t=zi(n,Dr(n,t)),n.precision=r,n.rounding=e,K(Qe==2||Qe==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var r,e,t,n,i,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(v=!1,o=l.s*ge(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=ge(t,1/3),r=Be((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,c=a.times(a).times(a),u=c.plus(l),n=ee(u.plus(l).times(a),u.plus(c),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&&(K(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")&&(K(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return v=!0,K(n,r,m.rounding,e)};T.decimalPlaces=T.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Be(this.e/L))*L,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(r){return ee(this,new this.constructor(r))};T.dividedToIntegerBy=T.divToInt=function(r){var e=this,t=e.constructor;return K(ee(e,new t(r),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(r){return this.cmp(r)===0};T.floor=function(){return K(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(r){return this.cmp(r)>0};T.greaterThanOrEqualTo=T.gte=function(r){var e=this.cmp(r);return e==1||e===0};T.hyperbolicCosine=T.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/sn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=At(s,1,o.times(e),new s(1),!0);for(var c,u=r,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return K(o,s.precision=t,s.rounding=n,!0)};T.hyperbolicSine=T.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=At(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/sn(5,r)),i=At(o,2,i,i,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,K(i,e,t,!0)};T.hyperbolicTangent=T.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,ee(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};T.inverseCosine=T.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()?De(t,i,o):new t(0):new t(NaN):e.isZero()?De(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=De(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};T.inverseHyperbolicCosine=T.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,v=!1,t=t.times(t).minus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.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,v=!1,t=t.times(t).plus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.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?K(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ee(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)};T.inverseSine=T.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=De(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)))};T.inverseTangent=T.atan=function(){var r,e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=Kn)return s=De(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=Kn)return s=De(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/L+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(v=!1,e=Math.ceil(a/L),n=1,c=u.times(u),s=new l(u),i=u;r!==-1;)if(i=i.times(c),o=s.minus(i.div(n+=2)),i=i.times(c),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)),v=!0,K(s,l.precision=m,l.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&Be(this.e/L)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(r){return this.cmp(r)<0};T.lessThanOrEqualTo=T.lte=function(r){return this.cmp(r)<1};T.logarithm=T.log=function(r){var e,t,n,i,o,s,a,c,u=this,l=u.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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(v=!1,a=m+p,s=it(u,a),n=e?nn(l,a+10):it(r,a),c=ee(s,n,a,1),Lt(c.d,i=m,d))do if(a+=10,s=it(u,a),n=e?nn(l,a+10):it(r,a),c=ee(s,n,a,1),!o){+we(c.d).slice(i+1,i+15)+1==1e14&&(c=K(c,m+1,0));break}while(Lt(c.d,i+=10,d));return v=!0,K(c,m,d)};T.minus=T.sub=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(u=p.d,d=r.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])r.s=-r.s;else if(u[0])r=new g(p);else return new g(c===3?-0:0);return v?K(r,a,c):r}if(t=Be(r.e/L),l=Be(p.e/L),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}o=0}for(m&&(e=u,u=d,d=e,r.s=-r.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=ve-1;--u[i],u[n]+=ve}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=on(u,t),v?K(r,a,c):r):new g(c===3?-0:0)};T.modulo=T.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]?K(new n(t),n.precision,n.rounding):(v=!1,n.modulo==9?(e=ee(t,r.abs(),0,3,1),e.s*=r.s):e=ee(t,r,0,n.modulo,1),e=e.times(r),v=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return Nn(this)};T.naturalLogarithm=T.ln=function(){return it(this)};T.negated=T.neg=function(){var r=new this.constructor(this);return r.s=-r.s,K(r)};T.plus=T.add=function(r){var e,t,n,i,o,s,a,c,u,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(u=m.d,l=r.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(r=new d(m)),v?K(r,a,c):r;if(o=Be(m.e/L),n=Be(r.e/L),u=u.slice(),i=o-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=l.length,s-i<0&&(i=s,t=l,l=u,u=t),e=0;i;)e=(u[--i]=u[i]+l[i]+e)/ve|0,u[i]%=ve;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=on(u,n),v?K(r,a,c):r};T.precision=T.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=Fr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var r=this,e=r.constructor;return K(new e(r),r.e+1,e.rounding)};T.sine=T.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())+L,n.rounding=1,t=ji(n,Dr(n,t)),n.precision=r,n.rounding=e,K(Qe>2?t.neg():t,r,e,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(v=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=we(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Be((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(ee(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&&(K(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(K(n,c+1,1),r=!n.times(n).eq(s));break}return v=!0,K(n,c,l.rounding,r)};T.tangent=T.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=ee(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,K(Qe==2||Qe==4?t.neg():t,r,e,!0)):new n(NaN)};T.times=T.mul=function(r){var e,t,n,i,o,s,a,c,u,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=Be(l.e/L)+Be(r.e/L),c=d.length,u=p.length,c<u&&(o=d,d=p,p=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,i=c+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=on(o,t),v?K(r,m.precision,m.rounding):r};T.toBinary=function(r,e){return Ln(this,2,r,e)};T.toDecimalPlaces=T.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ne(r,0,st),e===void 0?e=n.rounding:Ne(e,0,8),K(t,r+t.e+1,e))};T.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ze(n,!0):(Ne(r,0,st),e===void 0?e=i.rounding:Ne(e,0,8),n=K(new i(n),r+1,e),t=ze(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=ze(i):(Ne(r,0,st),e===void 0?e=o.rounding:Ne(e,0,8),n=K(new o(i),r+i.e+1,e),t=ze(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toFraction=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=Fr(g)-p.e-1,s=o%L,e.d[0]=ge(10,s<0?L+s:s),r==null)r=o>0?e:u;else{if(a=new f(r),!a.isInt()||a.lt(u))throw Error(ot+a);r=a.gt(e)?o>0?e:u:a}for(v=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*L*2;m=ee(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=ee(r.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=p.s,d=ee(u,n,o,1).minus(p).abs().cmp(ee(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,v=!0,d};T.toHexadecimal=T.toHex=function(r,e){return Ln(this,16,r,e)};T.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:Ne(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]?(v=!1,t=ee(t,r,0,e,1).times(r),v=!0,K(t)):(r.s=t.s,t=r),t};T.toNumber=function(){return+this};T.toOctal=function(r,e){return Ln(this,8,r,e)};T.toPower=T.pow=function(r){var e,t,n,i,o,s,a=this,c=a.constructor,u=+(r=new c(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new c(ge(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,r.eq(1))return K(a,n,o);if(e=Be(r.e/L),e>=r.d.length-1&&(t=u<0?-u:u)<=Xi)return i=Mr(c,a,t,n),r.s<0?new c(1).div(i):K(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new c(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=ge(+a,u),e=t==0||!isFinite(t)?Be(u*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(v=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Nn(r.times(it(a,n+t)),n),i.d&&(i=K(i,n+5,1),Lt(i.d,n,o)&&(e=n+10,i=K(Nn(r.times(it(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=K(i,n+1,0)))),i.s=s,v=!0,c.rounding=o,K(i,n,o))};T.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ze(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ne(r,1,st),e===void 0?e=i.rounding:Ne(e,0,8),n=K(new i(n),r,e),t=ze(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ne(r,1,st),e===void 0?e=n.rounding:Ne(e,0,8)),K(new n(t),r,e)};T.toString=function(){var r=this,e=r.constructor,t=ze(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return K(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var r=this,e=r.constructor,t=ze(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=L-n.length,t&&(o+=rt(t)),o+=n;s=r[e],n=s+"",t=L-n.length,t&&(o+=rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ne(r,e,t){if(r!==~~r||r<e||r>t)throw Error(ot+r)}function Lt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=L,i=0):(i=Math.ceil((e+1)/L),e%=L),o=ge(10,L-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)==ge(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)==ge(10,e-3)-1,s}function Jt(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]+=Sn.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 zi(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/sn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=At(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 ee=function(){function r(n,i,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}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,c){var u,l,m,d,p,g,f,b,y,h,w,P,A,x,B,I,R,E,q,ke,ie=n.constructor,xe=n.s==i.s?1:-1,oe=n.d,Z=i.d;if(!oe||!oe[0]||!Z||!Z[0])return new ie(!n.s||!i.s||(oe?Z&&oe[0]==Z[0]:!Z)?NaN:oe&&oe[0]==0||!Z?xe*0:xe/0);for(c?(p=1,l=n.e-i.e):(c=ve,p=L,l=Be(n.e/p)-Be(i.e/p)),q=Z.length,R=oe.length,y=new ie(xe),h=y.d=[],m=0;Z[m]==(oe[m]||0);m++);if(Z[m]>(oe[m]||0)&&l--,o==null?(x=o=ie.precision,s=ie.rounding):a?x=o+(n.e-i.e)+1:x=o,x<0)h.push(1),g=!0;else{if(x=x/p+2|0,m=0,q==1){for(d=0,Z=Z[0],x++;(m<R||d)&&x--;m++)B=d*c+(oe[m]||0),h[m]=B/Z|0,d=B%Z|0;g=d||m<R}else{for(d=c/(Z[0]+1)|0,d>1&&(Z=r(Z,d,c),oe=r(oe,d,c),q=Z.length,R=oe.length),I=q,w=oe.slice(0,q),P=w.length;P<q;)w[P++]=0;ke=Z.slice(),ke.unshift(0),E=Z[0],Z[1]>=c/2&&++E;do d=0,u=e(Z,w,q,P),u<0?(A=w[0],q!=P&&(A=A*c+(w[1]||0)),d=A/E|0,d>1?(d>=c&&(d=c-1),f=r(Z,d,c),b=f.length,P=w.length,u=e(f,w,b,P),u==1&&(d--,t(f,q<b?ke:Z,b,c))):(d==0&&(u=d=1),f=Z.slice()),b=f.length,b<P&&f.unshift(0),t(w,f,P,c),u==-1&&(P=w.length,u=e(Z,w,q,P),u<1&&(d++,t(w,q<P?ke:Z,P,c))),P=w.length):u===0&&(d++,w=[0]),h[m++]=d,u&&w[0]?w[P++]=oe[I]||0:(w=[oe[I]],P=1);while((I++<R||w[0]!==void 0)&&x--);g=w[0]!==void 0}h[0]||h.shift()}if(p==1)y.e=l,Cr=g;else{for(m=1,d=h[0];d>=10;d/=10)m++;y.e=m+l*p-1,K(y,a?o+y.e+1:o,s,g)}return y}}();function K(r,e,t,n){var i,o,s,a,c,u,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+=L,s=e,l=m[d=0],c=l/ge(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/L),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,o%=L,s=o-L+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=L,s=o-L+i,c=s<0?0:l/ge(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%ge(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(r.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/ge(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=r.e+1,m[0]=ge(10,(L-e%L)%L),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=ge(10,L-o),m[d]=s>0?(l/ge(10,i-s)%ge(10,s)|0)*a:0),u)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 v&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function ze(r,e,t){if(!r.isFinite())return Er(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 on(r,e){var t=r[0];for(e*=L;t>=10;t/=10)e++;return e}function nn(r,e,t){if(e>Hi)throw v=!0,t&&(r.precision=t),Error(Kr);return K(new r(en),e,1,!0)}function De(r,e,t){if(e>Kn)throw Error(Kr);return K(new r(tn),e,t,!0)}function Fr(r){var e=r.length-1,t=e*L+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 Mr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/L+4);for(v=!1;;){if(t%2&&(o=o.times(e),Ir(o.d,s)&&(i=!0)),t=Be(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ir(e.d,s)}return v=!0,o}function Br(r){return r.d[r.d.length-1]&1}function Or(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 Nn(r,e){var t,n,i,o,s,a,c,u=0,l=0,m=0,d=r.constructor,p=d.rounding,g=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?(v=!1,c=g):c=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(ge(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=K(o.times(r),c,1),t=t.times(++l),a=s.plus(ee(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(i=m;i--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&Lt(s.d,c-n,p,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return K(s,d.precision=g,p,v=!0);else return d.precision=g,s}s=a}}function it(r,e){var t,n,i,o,s,a,c,u,l,m,d,p=1,g=10,f=r,b=f.d,y=f.constructor,h=y.rounding,w=y.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(v=!1,l=w):l=e,y.precision=l+=g,t=we(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new y("0."+t),o++):f=new y(n+"."+t.slice(1))}else return u=nn(y,l+2,w).times(o+""),f=it(new y(n+"."+t.slice(1)),l-g).plus(u),y.precision=w,e==null?K(f,w,h,v=!0):f;for(m=f,c=s=f=ee(f.minus(1),f.plus(1),l,1),d=K(f.times(f),l,1),i=3;;){if(s=K(s.times(d),l,1),u=c.plus(ee(s,new y(i),l,1)),we(u.d).slice(0,l)===we(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(nn(y,l+2,w).times(o+""))),c=ee(c,new y(p),l,1),e==null)if(Lt(c.d,l-g,h,a))y.precision=l+=g,u=s=f=ee(m.minus(1),m.plus(1),l,1),d=K(f.times(f),l,1),i=a=1;else return K(c,y.precision=w,h,v=!0);else return y.precision=w,c;c=u,i+=2}}function Er(r){return String(r.s*r.s/0)}function Rn(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)%L,t<0&&(n+=L),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=L;n<i;)r.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),v&&(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 Yi(r,e){var t,n,i,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Lr.test(e))return Rn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Gi.test(e))t=16,e=e.toLowerCase();else if(Wi.test(e))t=2;else if(Ui.test(e))t=8;else throw Error(ot+e);for(o=e.search(/p/i),o>0?(c=+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=Mr(n,new n(t),o,o*2)),u=Jt(e,t,ve),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(r.s*0):(r.e=on(u,l),r.d=u,v=!1,s&&(r=ee(r,i,a*4)),c&&(r=r.times(Math.abs(c)<54?ge(2,c):Ft.pow(2,c))),v=!0,r)}function ji(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:At(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/sn(5,t)),e=At(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 At(r,e,t,n,i){var o,s,a,c,u=1,l=r.precision,m=Math.ceil(l/L);for(v=!1,c=t.times(t),a=new r(n);;){if(s=ee(a.times(c),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ee(s.times(c),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,u++}return v=!0,s.d.length=m+1,s}function sn(r,e){for(var t=r;--e;)t*=r;return t}function Dr(r,e){var t,n=e.s<0,i=De(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Qe=n?4:1,e;if(t=e.divToInt(i),t.isZero())Qe=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Qe=Br(t)?n?2:3:n?4:1,e;Qe=Br(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ln(r,e,t,n){var i,o,s,a,c,u,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Ne(t,1,st),n===void 0?n=p.rounding:Ne(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Er(r);else{for(l=ze(r),s=l.indexOf("."),g?(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=Jt(ze(d),10,i),d.e=d.d.length),m=Jt(l,10,i),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ee(r,d,t,n,0,i),m=r.d,o=r.e,u=Cr),s=m[t],a=i/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,u)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=Sn.charAt(m[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Jt(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Sn.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>c)for(o-=c;o--;)l+="0";else o<c&&(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 Ir(r,e){if(r.length>e)return r.length=e,!0}function Zi(r){return new this(r).abs()}function Qi(r){return new this(r).acos()}function $i(r){return new this(r).acosh()}function Ji(r,e){return new this(r).plus(e)}function eo(r){return new this(r).asin()}function to(r){return new this(r).asinh()}function no(r){return new this(r).atan()}function ro(r){return new this(r).atanh()}function io(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=De(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?De(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=De(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ee(r,e,o,1)),e=De(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ee(r,e,o,1)),t}function oo(r){return new this(r).cbrt()}function so(r){return K(r=new this(r),r.e+1,2)}function ao(r,e,t){return new this(r).clamp(e,t)}function co(r){if(!r||typeof r!="object")throw Error(rn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,st,"rounding",0,8,"toExpNeg",-ht,0,"toExpPos",0,ht,"maxE",0,ht,"minE",-ht,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Cn[t]),(n=r[t])!==void 0)if(Be(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]=Cn[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(Nr);else this[t]=!1;else throw Error(ot+t+": "+n);return this}function uo(r){return new this(r).cos()}function lo(r){return new this(r).cosh()}function vr(r){var e,t,n;function i(o){var s,a,c,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,Sr(o)){u.s=o.s,v?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e<i.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;v?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Rn(u,o.toString())}else if(c!=="string")throw Error(ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Lr.test(o)?Rn(u,o):Yi(u,o)}if(i.prototype=T,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=co,i.clone=vr,i.isDecimal=Sr,i.abs=Zi,i.acos=Qi,i.acosh=$i,i.add=Ji,i.asin=eo,i.asinh=to,i.atan=no,i.atanh=ro,i.atan2=io,i.cbrt=oo,i.ceil=so,i.clamp=ao,i.cos=uo,i.cosh=lo,i.div=mo,i.exp=po,i.floor=fo,i.hypot=go,i.ln=bo,i.log=yo,i.log10=ho,i.log2=wo,i.max=Ao,i.min=Po,i.mod=To,i.mul=ko,i.pow=xo,i.random=Bo,i.round=Io,i.sign=So,i.sin=Co,i.sinh=Ko,i.sqrt=No,i.sub=Ro,i.sum=Lo,i.tan=Fo,i.tanh=Mo,i.trunc=Oo,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 mo(r,e){return new this(r).div(e)}function po(r){return new this(r).exp()}function fo(r){return K(r=new this(r),r.e+1,3)}function go(){var r,e,t=new this(0);for(v=!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 v=!0,new this(1/0);t=e}return v=!0,t.sqrt()}function Sr(r){return r instanceof Ft||r&&r.toStringTag===Rr||!1}function bo(r){return new this(r).ln()}function yo(r,e){return new this(r).log(e)}function wo(r){return new this(r).log(2)}function ho(r){return new this(r).log(10)}function Ao(){return Or(this,arguments,"lt")}function Po(){return Or(this,arguments,"gt")}function To(r,e){return new this(r).mod(e)}function ko(r,e){return new this(r).mul(e)}function xo(r,e){return new this(r).pow(e)}function Bo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ne(r,1,st),n=Math.ceil(r/L),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(Nr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=L,n&&r&&(i=ge(10,L-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-=L)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function Io(r){return K(r=new this(r),r.e+1,this.rounding)}function So(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Co(r){return new this(r).sin()}function Ko(r){return new this(r).sinh()}function No(r){return new this(r).sqrt()}function Ro(r,e){return new this(r).sub(e)}function Lo(){var r=0,e=arguments,t=new this(e[r]);for(v=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return v=!0,K(t,this.precision,this.rounding)}function Fo(r){return new this(r).tan()}function Mo(r){return new this(r).tanh()}function Oo(r){return K(r=new this(r),r.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var Ft=T.constructor=vr(Cn);en=new Ft(en);tn=new Ft(tn);var S=Ft;var Mt=require("lodash"),Mn=se(require("dayjs")),Vr=se(require("dayjs/plugin/utc"));Mn.default.extend(Vr.default);var Fn=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(0,Mn.default)().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}},_r={},Eo={};function be(r){let e=(0,Mt.get)(_r,r);if(!e){let t=(0,Mt.get)(Eo,r);e=new Fn({name:r,logLevel:t}),(0,Mt.set)(_r,r,e)}return e}var Xo=require("@solana/web3.js"),Ho=se(require("bn.js"));var $r=se(require("big.js")),Vt=se(require("bn.js"));var Ke=se(require("bn.js"));var cn=require("@solana/web3.js");var qr=require("@solana/spl-token"),z=require("@solana/web3.js");function On({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var As=[On({pubkey:qr.TOKEN_PROGRAM_ID,isWritable:!1}),On({pubkey:z.SystemProgram.programId,isWritable:!1}),On({pubkey:z.SYSVAR_RENT_PUBKEY,isWritable:!1})];function En({publicKey:r,transformSol:e}){let t=Wr(r.toString());if(t instanceof z.PublicKey)return e&&t.equals(Ot)?ne:t;if(e&&t.toString()===Ot.toBase58())return ne;if(typeof t=="string"){if(t===z.PublicKey.default.toBase58())return z.PublicKey.default;try{return new z.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wr(r){try{return new z.PublicKey(r)}catch{return r}}var an=new z.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ps=new z.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Et=new z.PublicKey("SysvarRent111111111111111111111111111111111"),Ts=new z.PublicKey("SysvarC1ock11111111111111111111111111111111"),Pt=new z.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ks=new z.PublicKey("Sysvar1nstructions1111111111111111111111111"),xs=z.SystemProgram.programId,Bs=new z.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Is=new z.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ss=new z.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cs=new z.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ks=new z.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ns=new z.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Rs=new z.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ls=new z.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Fs=new z.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ms=new z.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Os=new z.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ne=new z.PublicKey("So11111111111111111111111111111111111111112"),Ot=z.PublicKey.default;function Dn(r){return En({publicKey:r,transformSol:!0})}var Gr=require("@solana/web3.js"),vn=require("@solana/spl-token"),Ur={chainId:101,address:Gr.PublicKey.default.toBase58(),programId:vn.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},gt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:vn.TOKEN_PROGRAM_ID.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 _n=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ot.toBase58()||e instanceof cn.PublicKey&&Ot.equals(e)){this.decimals=gt.decimals,this.symbol=gt.symbol,this.name=gt.name,this.mint=new cn.PublicKey(gt.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?cn.PublicKey.default:En({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},$e=_n;$e.WSOL=new _n(J(_({},gt),{mint:gt.address}));var vt=se(require("big.js")),Hr=se(require("bn.js")),zr=se(require("decimal.js-light"));var Xr=se(require("toformat")),Do=Xr.default,Dt=Do;var un=be("module/fraction"),Vn=Dt(vt.default),_t=Dt(zr.default),vo={[0]:_t.ROUND_DOWN,[1]:_t.ROUND_HALF_UP,[2]:_t.ROUND_UP},_o={[0]:vt.default.roundDown,[1]:vt.default.roundHalfUp,[2]:vt.default.roundUp},Y=class{constructor(e,t=new Hr.default(1)){this.numerator=he(e),this.denominator=he(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||un.logWithError(`${e} is not an integer.`),e<=0&&un.logWithError(`${e} is not positive.`),_t.set({precision:e+1,rounding:vo[n]});let i=new _t(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)||un.logWithError(`${e} is not an integer.`),e<0&&un.logWithError(`${e} is negative.`),Vn.DP=e,Vn.RM=_o[n]||1,new Vn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qo=be("Raydium_price"),_e=class extends Y{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new Y(qn(n.decimals),qn(i.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new _e({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qo.logWithError("mul token not equals");let n=super.mul(t);return new _e({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 Wn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},ln=Wn;ln.SOL=new Wn(Ur);var jr=se(require("bn.js"));var Yr=new Y(new jr.default(100)),bt=class extends Y{toSignificant(e=5,t,n){return this.mul(Yr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Yr).toFixed(e,t,n)}};var Wo=new Ke.default(0),Ta=new Ke.default(1),ka=new Ke.default(2),xa=new Ke.default(3),Ba=new Ke.default(5),Gn=new Ke.default(10),Ia=new Ke.default(100),Sa=new Ke.default(1e3),Ca=new Ke.default(1e4),Zr=9007199254740991;function he(r){let e=be("Raydium_parseBigNumberish");if(r instanceof Ke.default)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ke.default(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Zr||r<=-Zr)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ke.default(String(r))):typeof r=="bigint"?new Ke.default(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ke.default(0))}function qn(r){return Gn.pow(he(r))}var Go=be("Raydium_amount"),Qr=Dt($r.default);function Uo(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")):Go.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ie=class extends Y{constructor(t,n,i=!0,o){let s=new Vt.default(0),a=Gn.pow(new Vt.default(t.decimals));if(i)s=he(n);else{let c=new Vt.default(0),u=new Vt.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Uo(n.toString(),t.decimals);c=he(l),u=he(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=be(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 Ie(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ie(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 Qr.DP=this.token.decimals,new Qr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var $=require("@solana/web3.js"),ii=se(require("axios"));var de={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 Se=require("@solana/web3.js"),ei=require("@solana/spl-token");var Jr=be("Raydium_txUtil"),ti=1644;function mn(r){let e=[],t=[];return r.microLamports&&(e.push(Se.ComputeBudgetProgram.setComputeUnitPrice({microLamports:r.microLamports})),t.push(de.SetComputeUnitPrice)),r.units&&(e.push(Se.ComputeBudgetProgram.setComputeUnitLimit({units:r.units})),t.push(de.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Tt(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 zo(r,e){r.length<1&&Jr.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Jr.logWithError(`no signers provided:, ${e.toString()}`);let t=new Se.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ti}catch{return!1}}function Le(r,e){let[t,n]=Se.PublicKey.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function qt({instructions:r,payer:e,signers:t}){return zo(r,[e,...t])}function Wt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Se.Keypair.generate().publicKey.toString()}){let o=new Se.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Se.VersionedTransaction(o).serialize()).toString("base64").length<ti}catch{return!1}}var Yo=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 Se.Transaction&&(t.recentBlockhash||(t.recentBlockhash=ei.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=Se.Keypair.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Se.VersionedTransaction&&(n=Yo(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}var ct=require("@solana/web3.js");var ni=require("@solana/web3.js"),ri=require("@solana/spl-token");var Un=be("Raydium_accountInfo_util");async function at(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=_({batchRequest:!1},t),o=Xn(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}}),c=Xn(a,10);s=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Un.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:g,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&Un.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new ni.PublicKey(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Un.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Hn(r,e,t){let n=await at(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>J(_({},i),{accountInfo:n[o]}))}async function zn({connection:r,address:e}){let t=await at(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ct.PublicKey(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new ct.AddressLookupTableAccount({key:s,state:ct.AddressLookupTableAccount.deserialize(o.data)});n[s.toString()]=a,dn[s.toString()]=a}return n}var dn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new ct.AddressLookupTableAccount({key:new ct.PublicKey("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:ct.AddressLookupTableAccount.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 pn=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 ii.default.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}=mn(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!==$.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(_({},t||{})):this.build(t)}build(e){let t=new $.Transaction;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 Tt(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await(0,$.sendAndConfirmTransaction)(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[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(u=>u.transaction.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{},g=d!=null?d:await Tt(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,y)=>(b.recentBlockhash=g,await(0,$.sendAndConfirmTransaction)(this.connection,b,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,w)=>(h.recentBlockhash=g,a[w].length&&h.sign(...a[w]),h));yt(b);let y=await this.signAllTransactions(b);if(l){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:p});w.push({txId:A,status:"sent",signedTx:y[h]}),m==null||m([...w]),h++,this.connection.onSignature(A,x=>{let B=w.findIndex(I=>I.txId===A);B>-1&&(w[B].status=x.err?"error":"success"),m==null||m([...w]),x.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:p});h.push(P)}return{txIds:h,signedTxs:y}}}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=$t(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=_(_({},this.cluster==="devnet"?{}:dn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new $.PublicKey(p));let u=await zn({connection:this.connection,address:c});for(let[p,g]of Object.entries(u))s[p]=g;let l=new $.TransactionMessage({payerKey:this.feePayer,recentBlockhash:i?$.PublicKey.default.toBase58():await Tt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new $.VersionedTransaction(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(m.message.recentBlockhash=g),yt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:w}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:h,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:f}),signedTx:y[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(u=>u.builder.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var g;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),yt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((y,h)=>{a[h].find(w=>w.publicKey.equals(this.owner.publicKey))||y.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async y=>{let h=await this.connection.sendTransaction(y,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,y=[],h=async()=>{if(!f[b])return;let w=await this.connection.sendTransaction(f[b],{skipPreflight:p});y.push({txId:w,status:"sent",signedTx:f[b]}),m==null||m([...y]),b++,this.connection.onSignature(w,P=>{let A=y.findIndex(x=>x.txId===w);A>-1&&(y[A].status=P.err?"error":"success"),m==null||m([...y]),P.err||h()},"processed"),this.connection.getSignatureStatus(w)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let y=0;y<f.length;y+=1){let h=await this.connection.sendTransaction(f[y],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=$t(u,["computeBudgetConfig"]),i=t?mn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>J(_({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let m=[...c,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new $.PublicKey(f));if(c.length<12&&qt({instructions:d,payer:this.feePayer,signers:g})||qt({instructions:m,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");qt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new $.Transaction().add(...i.instructions,...c)):s.push(new $.Transaction().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let m=[...new Set(c.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);qt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new $.Transaction().add(...i.instructions,...c)):s.push(new $.Transaction().add(...c)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Tt(this.connection);if(s.forEach(async(y,h)=>{y.recentBlockhash=f,a[h].length&&y.sign(...a[h])}),yt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(y,h)=>await(0,$.sendAndConfirmTransaction)(this.connection,y,a[h].find(w=>w.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:g}))),signedTxs:s};if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:g});w.push({txId:A,status:"sent",signedTx:y[h]}),d==null||d([...w]),h++,this.connection.onSignature(A,x=>{let B=w.findIndex(I=>I.txId===A);B>-1&&(w[B].status=x.err?"error":"success"),d==null||d([...w]),x.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:g});h.push(P)}return{txIds:h,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=$t(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=_(_({},this.cluster==="devnet"?{}:dn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let y of a)s[y]===void 0&&c.push(new $.PublicKey(y));let u=await zn({connection:this.connection,address:c});for(let[y,h]of Object.entries(u))s[y]=h;let l=t?mn(t):{instructions:[],instructionTypes:[]},m=await Tt(this.connection),d=this.signers.reduce((y,h)=>J(_({},y),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(y=>{let h=[...f,y],w=t?[...l.instructions,...h]:h;if(f.length<12&&Wt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Wt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(y);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&&Wt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new $.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $.VersionedTransaction(A))}else{let A=new $.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $.VersionedTransaction(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[y]}}),f.length>0){let h=[...new Set(f.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>d[w]).filter(w=>w!==void 0);if(t&&Wt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let w=new $.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $.VersionedTransaction(w))}else{let w=new $.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $.VersionedTransaction(w))}g.push(h)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async y=>{var x;let{sequentially:h,onTxUpdate:w,recentBlockHash:P,skipPreflight:A=!0}=y||{};if(p.map(async(B,I)=>{g[I].length&&B.sign(g[I]),P&&(B.message.recentBlockhash=P)}),yt(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:B,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((R,E)=>{g[E].find(q=>q.publicKey.equals(this.owner.publicKey))||R.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async R=>{let E=await this.connection.sendTransaction(R,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:B,signature:E},"confirmed"),E})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let I=0,R=[],E=async()=>{if(!B[I])return;let q=await this.connection.sendTransaction(B[I],{skipPreflight:A});R.push({txId:q,status:"sent",signedTx:B[I]}),w==null||w([...R]),I++,this.connection.onSignature(q,ke=>{let ie=R.findIndex(xe=>xe.txId===q);ie>-1&&(R[ie].status=ke.err?"error":"success"),w==null||w([...R]),ke.err||E()},"processed"),this.connection.getSignatureStatus(q)};return E(),{txIds:[],signedTxs:B}}else{let I=[];for(let R=0;R<B.length;R+=1){let E=await this.connection.sendTransaction(B[R],{skipPreflight:A});I.push(E)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function Xn(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var ue=require("@solana/web3.js"),Bc=new ue.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ic=new ue.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Sc=new ue.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cc=new ue.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Kc=new ue.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Nc=new ue.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Rc=new ue.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Lc=new ue.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Fc=new ue.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Mc=new ue.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Oc=new ue.PublicKey("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ec=new ue.PublicKey("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Dc=new ue.PublicKey("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),vc=new ue.PublicKey("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),_c=new ue.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Vc=new ue.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),qc=new ue.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Wc=new ue.PublicKey("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Gc=new ue.PublicKey("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Uc=new ue.PublicKey("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var oi=require("@solana/web3.js");var si=require("@solana/spl-token");function Ve(r,e,t){return Le([r.toBuffer(),(t!=null?t:si.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new oi.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var Oe=se(require("bn.js")),Gt=1e4;function le(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=J(_({},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 Oe.default(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===Gt){let c=new Oe.default(o.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=Yn(r.mul(new Oe.default(Gt)),new Oe.default(Gt-o.transferFeeBasisPoints)),u=new Oe.default(o.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,m=Yn(l.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(Gt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Yn(r.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(Gt)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function wt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Yn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Oe.default(0))?t.add(new Oe.default(1)):t}var jn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ut=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=be(t)}createTxBuilder(e){return this.scope.checkOwner(),new pn({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(jn(e))}logInfo(...e){this.logger.info(jn(e))}logAndCreateError(...e){let t=jn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var qe=se(require("bn.js")),H=new qe.default(0),We=new qe.default(1),Ye=new qe.default(-1),Re=new qe.default(1).shln(64),Xt=new qe.default(1).shln(128),fn=Re.sub(We),kt=64,Zn=Xt.subn(1),Ae=-443636,Ce=-Ae,Je=new qe.default("4295048016"),et=new qe.default("79226673521066979257578248091"),Qn=16,$n="59543866431248",Jn="184467440737095516",er="15793534762490258745",Ht=new qe.default(10).pow(new qe.default(6)),ai=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(ai||{}),Zo={[500]:10,[3e3]:60,[1e4]:200},Qo={version:6,liquidity:H,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:H,feeGrowthGlobalX64B:H,protocolFeesTokenA:H,protocolFeesTokenB:H,swapInAmountTokenA:H,swapOutAmountTokenB:H,swapInAmountTokenB:H,swapOutAmountTokenA:H,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},tr={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},$o=new qe.default("18446744073700000000");var V=se(require("bn.js"));function nr(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Jo(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function es(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function zt(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function gn(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function bn(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function xt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function rr(r,e){return xt(r,e)?null:gn(r,e)}function ir(r,e){return xt(r,e)?null:bn(r,e)}var ci=Buffer.from("amm_config","utf8"),ui=Buffer.from("pool","utf8"),li=Buffer.from("pool_vault","utf8"),mi=Buffer.from("pool_reward_vault","utf8"),or=Buffer.from("position","utf8"),di=Buffer.from("tick_array","utf8"),pi=Buffer.from("operation","utf8"),fi=Buffer.from("pool_tick_array_bitmap_extension","utf8");function ts(r,e){return Le([ci,nr(e)],r)}function sr(r,e,t,n){return Le([ui,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function yn(r,e,t){return Le([li,e.toBuffer(),t.toBuffer()],r)}function ar(r,e,t){return Le([mi,e.toBuffer(),t.toBuffer()],r)}function Q(r,e,t){return Le([di,e.toBuffer(),zt(t)],r)}function ut(r,e,t,n){return Le([or,e.toBuffer(),zt(t),zt(n)],r)}function Fe(r,e){return Le([or,e.toBuffer()],r)}function Yt(r){return Le([Buffer.from("metadata","utf8"),Pt.toBuffer(),r.toBuffer()],Pt)}function Bt(r){return Le([pi],r)}function Ge(r,e){return Le([fi,e.toBuffer()],r)}var nt=require("@solana/web3.js"),ce=se(require("bn.js"));var Bi=se(require("bn.js"));var wi=require("@solana/web3.js"),St=se(require("bn.js"));var N=require("@solana/buffer-layout"),cr=N.Layout,gi=N.Structure;var ur=N.UInt;var bi=N.u8,It=N.u16;var Pe=N.s32;var yi=N.seq;var Ee=N.blob;var jt=class extends cr{constructor(t,n,i){super(t,i);this.blob=Ee(t),this.signed=n}decode(t,n=0){let i=new St.default(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 St.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function me(r){return new ur(1,r)}function tt(r){return new ur(4,r)}function M(r){return new jt(8,!1,r)}function G(r){return new jt(16,!1,r)}function hi(r){return new jt(16,!0,r)}var wn=class extends cr{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 re(r){return new wn(Ee(32),e=>new wi.PublicKey(e),e=>e.toBuffer(),r)}function je(r){return new wn(bi(),ns,rs,r)}function ns(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function rs(r){return r?1:0}var lr=class extends gi{decode(e,t){return super.decode(e,t)}};function te(r,e,t){return new lr(r,e,t)}function ae(r,e,t){let n,i=typeof e=="number"?e:(0,St.isBN)(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=(0,St.isBN)(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 yi(r,i,t)}var hn=14,Ze=class{static maxTickInTickarrayBitmap(e){return e*pe*lt}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(!X.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-X.tickCount(n):t+X.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*pe,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=rr(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=ir(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-X.tickCount(n)}}}},Ct=class{static getBitmapOffset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Ze.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=Ze.maxTickInTickarrayBitmap(e),n=-t;if(Ce<=t)throw Error(`extensionTickBoundary check error: ${Ce}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);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:C.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=X.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}=Ze.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=C.mergeTickArrayBitmap(e).shln(lt-1-a),u=xt(512,c)?null:gn(512,c);if(u!==null){let l=t-u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=xt(512,c)?null:bn(512,c);if(u!==null){let l=t+u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-X.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Ze.maxTickInTickarrayBitmap(t),i=Math.floor(n/X.tickCount(t));return e<0&&n!=0&&(i=lt-i),i}};var is=te([Ee(8),me("bump"),It("index"),re(""),tt("protocolFeeRate"),tt("tradeFeeRate"),It("tickSpacing"),ae(M(),8,"")]),Ai=te([tt("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ae(G(),1,"")]),An=te([Ee(8),je("initialized"),re("poolId"),ae(Ai,1e3,"observations"),ae(G(),5,"")]),Pi=te([me("rewardState"),M("openTime"),M("endTime"),M("lastUpdateTime"),G("emissionsPerSecondX64"),M("rewardTotalEmissioned"),M("rewardClaimed"),re("tokenMint"),re("tokenVault"),re("creator"),G("rewardGrowthGlobalX64")]),mr=te([Ee(8),me("bump"),re("ammConfig"),re("creator"),re("mintA"),re("mintB"),re("vaultA"),re("vaultB"),re("observationId"),me("mintDecimalsA"),me("mintDecimalsB"),It("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),Pe("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),M("protocolFeesTokenA"),M("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),me("status"),ae(me(),7,""),ae(Pi,3,"rewardInfos"),ae(M(),16,"tickArrayBitmap"),M("totalFeesTokenA"),M("totalFeesClaimedTokenA"),M("totalFeesTokenB"),M("totalFeesClaimedTokenB"),M("fundFeesTokenA"),M("fundFeesTokenB"),M("startTime"),ae(M(),15*4-3,"padding")]),Ti=te([G("growthInsideLastX64"),M("rewardAmountOwed")]),Zt=te([Ee(8),me("bump"),re("nftMint"),re("poolId"),Pe("tickLower"),Pe("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),ae(Ti,3,"rewardInfos"),ae(M(),8,"")]),os=te([Ee(8),me("bump"),re("poolId"),Pe("tickLowerIndex"),Pe("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),ae(G(),3,"rewardGrowthInside"),ae(M(),8,"")]),ki=te([Pe("tick"),hi("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ae(G(),3,"rewardGrowthsOutsideX64"),ae(tt(),13,"")]),Kt=te([Ee(8),re("poolId"),Pe("startTickIndex"),ae(ki,pe,"ticks"),me("initializedTickCount"),ae(me(),115,"")]),dr=te([Ee(329),ae(re(),100,"whitelistMints")]),pr=te([Ee(8),re("poolId"),ae(ae(M(),8),hn,"positiveTickArrayBitmap"),ae(ae(M(),8),hn,"negativeTickArrayBitmap")]);var xi=15,X=class{static async getTickArrays(e,t,n,i,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(i,o),l=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(xi/2));for(let p=0;p<l.length;p++){let{publicKey:g}=Q(t,n,l[p]);c.push(g)}let m=(await at(e,c)).map(p=>p!==null?Kt.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=J(_({},g),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=C.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/X.tickCount(t)),a=n?C.searchLowBitFromStart(i,o,s-1,1,t):C.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=pe-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<pe;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=Q(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=C.getTickArrayStartIndexByTick(i,o),c=Math.floor((i-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<pe;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=Q(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Ce)return!1;let n=C.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return pe*e}};var pe=60,lt=512,C=class{static getTickArrayAddressByTick(e,t,n,i){let o=C.getTickArrayStartIndexByTick(n,i),{publicKey:s}=Q(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=C.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=pe)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=X.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)*X.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*pe,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*pe,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*pe:e+t*pe}static mergeTickArrayBitmap(e){let t=new Bi.default(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*pe));return[...C.searchLowBitFromStart(e,t,s-1,o,n),...C.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return C.searchHightBitFromStart(e,t,0,lt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,i,o);for(let c of a){let{publicKey:u}=Q(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>C.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===i)break}let c=X.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>C.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===i)break}let c=X.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ae||e>Ce}static nextInitTick(e,t,n,i,o){if(X.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<pe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=pe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<pe;){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=O.getSqrtPriceX64FromTick(t),o=O.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=mt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=O.getSqrtPriceX64FromTick(o),a=O.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=O.getSqrtPriceX64FromTick(t),o=O.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=mt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=O.getSqrtPriceX64FromTick(o),a=O.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};var Ue=se(require("bn.js"));var Nt=class{static getfeeGrowthInside(e,t,n){let i=new Ue.default(0),o=new Ue.default(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 Ue.default(0),a=new Ue.default(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Re),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Re),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Re),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Re),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Re),d=u.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 c=s[a],u=t.rewardInfos[a],l=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Re),d=u.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 Ue.default(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 c=new Ue.default(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ue.default(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 c=new Ue.default(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,y,h,w;let a=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=O.getSqrtPriceX64FromTick(t.tickLower),u=O.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=U.getAmountsFromLiquidity(a,c,u,n,o),[d,p]=[le(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),le(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,f]=[le(new Ue.default(new S(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),le(new Ue.default(new S(m.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}};var fr=require("@solana/spl-token"),Te=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=dt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,u,o);return a.push(...d),{expectedAmountOut:m.mul(Ye),remainingAccounts:a,executionPrice:p,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=Q(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=dt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ye),u,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Te.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Ct.checkTickArrayIsInit(X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):C.checkTickArrayIsInitialized(C.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Q(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Q(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/X.tickCount(e.tickSpacing)),i=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.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=X.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Ze.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Ct.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>Ce)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=J(_({},m),{perSecond:D.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new nt.PublicKey(d)});if(p.tokenMint.equals(nt.PublicKey.default))continue;if(n<=p.openTime.toNumber()||i.eq(H)){s.push(p);continue}let g=new ce.default(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),b=D.mulDivFloor(f,p.emissionsPerSecondX64,i),y=p.rewardGrowthGlobalX64.add(b),h=D.mulDivFloor(f,p.emissionsPerSecondX64,Re),w=p.rewardTotalEmissioned.add(h);s.push(J(_({},p),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Ze.maxTickInTickarrayBitmap(e),n=-t;return t>Ce&&(t=X.getArrayStartIndex(Ce,e)+X.tickCount(e)),n<Ae&&(n=X.getArrayStartIndex(Ae,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/X.tickCount(t)*lt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=pr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let c of t){let u=C.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=C.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=Q(c.programId,c.id,m);o.push({pubkey:d}),i[d.toString()]=c.id}}let s=await Hn(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=i[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Kt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=J(_({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(Fe(p,d).publicKey);let l=await at(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Zt.decode(d.data),g=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===g);if(f===void 0)continue;let b=f.state,y=C._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:w,amountB:P}=U.getAmountsFromLiquidity(b.sqrtPriceX64,y.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(y.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:y.price,priceUpper:h.price,amountA:w,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(I=>J(_({},I),{pendingReward:new ce.default(0)})),leverage:A,tokenFeeAmountA:new ce.default(0),tokenFeeAmountB:new ce.default(0)}];let x=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await at(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let y=d[f].toString();g[y]=Kt.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let y of b){let h=`${f.programId.toString()}-${f.id.toString()}-${y.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${y.tickUpper}`,P=g[m[h].toString()],A=g[m[w].toString()],x=P.ticks[C.getTickOffsetInArray(y.tickLower,f.tickSpacing)],B=A.ticks[C.getTickOffsetInArray(y.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:R}=await Nt.GetPositionFees(f,y,x,B),E=await Nt.GetPositionRewards(f,y,x,B);y.tokenFeeAmountA=I.gte(new ce.default(0))?I:new ce.default(0),y.tokenFeeAmountB=R.gte(new ce.default(0))?R:new ce.default(0);for(let q=0;q<E.length;q++)y.rewardInfos[q].pendingReward=E[q].gte(new ce.default(0))?E[q]:new ce.default(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new S(0)}){var E;let c,u=n.toBase58()===e.mintA.address,[l,m]=u?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=u?Je.add(new ce.default(1)):et.sub(new ce.default(1)):c=O.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=le(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:b}=Te.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((E=d.fee)!=null?E:H),c),y=le(p,m,i,!1),h=O.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),w=u?h:new S(1).div(h),P=p.mul(new ce.default(Math.floor((1-s)*1e10))).div(new ce.default(1e10)),A=le(P,m,i,!1),x=u?e.currentPrice:new S(1).div(e.currentPrice),B=new S(w).sub(x).abs(),I=x,R=new bt(new S(B).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:y,minAmountOut:A,expirationTime:wt(d.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:R,fee:b,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[c,u]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new $e(J(_({},c),{mint:c.address,isToken2022:c.programId===fr.TOKEN_2022_PROGRAM_ID.toBase58()})),new $e(J(_({},u),{mint:u.address,isToken2022:u.programId===fr.TOKEN_2022_PROGRAM_ID.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:b,executionPrice:y,priceImpact:h,fee:w,remainingAccounts:P}=await Te.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new nt.PublicKey(c.address),amountIn:n,slippage:o,epochInfo:s}),A=J(_({},d),{amount:new Ie(l,d.amount),fee:d.fee===void 0?void 0:new Ie(l,d.fee)}),x=J(_({},p),{amount:new Ie(m,p.amount),fee:p.fee===void 0?void 0:new Ie(m,p.fee)}),B=J(_({},g),{amount:new Ie(m,g.amount),fee:g.fee===void 0?void 0:new Ie(m,g.fee)}),I=new _e({baseToken:l,denominator:new ce.default(10).pow(new ce.default(20+l.decimals)),quoteToken:m,numerator:b.mul(new S(10**(20+m.decimals))).toFixed(0)}),R=new _e({baseToken:l,denominator:new ce.default(10).pow(new ce.default(20+l.decimals)),quoteToken:m,numerator:y.mul(new S(10**(20+m.decimals))).toFixed(0)}),E=new Ie(l,w);return{realAmountIn:A,amountOut:x,minAmountOut:B,expirationTime:f,currentPrice:I,executionPrice:R,priceImpact:h,fee:E,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,b;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,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:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Dn(e.mintA.address).toString()],d=i[Dn(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),b=O.getSqrtPriceX64FromTick(s),y=O.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(f,b,y,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,b,y,o,!1,!1,0),x=new S(h.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(d.value)),B=new S(P.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(A.toString()).div(new S(10).pow(g)).mul(d.value)),I=B.div(x.add(B)).div(B),E=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),q=3600*24*365,ke=e.rewardDefaultInfos.map(ie=>{var Z,Pr;let xe=ie.mint.decimals,oe=i[ie.mint.address];return c<((Z=ie.startTime)!=null?Z:0)||c>((Pr=ie.endTime)!=null?Pr:0)||!ie.perSecond||!oe||xe===void 0?0:new S(oe.value).mul(new S(ie.perSecond).mul(q)).div(new S(10).pow(xe)).mul(I).mul(100).toNumber()});return{feeApr:E,rewardsApr:ke,apr:E+ke.reduce((ie,xe)=>ie+xe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var y,h;let l=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=O.getSqrtPriceX64FromTick(n),d=O.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=le(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,c,!u),f=new ce.default(new S(g.amount.sub((h=g.fee)!=null?h:H).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?U.getLiquidityFromTokenAmountA(m,d,f,!a):new ce.default(0);else if(l.lte(d)){let w=U.getLiquidityFromTokenAmountA(l,d,f,!a),P=U.getLiquidityFromTokenAmountB(m,l,f);b=t?w:P}else b=t?new ce.default(0):U.getLiquidityFromTokenAmountB(m,d,f);return Te.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,y,h,w;let c=O.getSqrtPriceX64FromTick(n),u=O.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(O.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,p]=[le(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),le(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,f]=[le(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),le(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new nt.PublicKey(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=mr.decode(i.data),s=Ge(e,new nt.PublicKey(n.id)).publicKey,a=await Te.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return J(_({},o),{id:new nt.PublicKey(n.id),programId:new nt.PublicKey(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:J(_({},n.config),{id:new nt.PublicKey(n.config.id),fundOwner:""}),currentPrice:new S(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function ss({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:c}){var w,P,A,x;let[u,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=O.priceToSqrtPriceX64(new S(r.price),r.mintA.decimals,r.mintB.decimals),g=O.getSqrtPriceX64FromTick(u),f=O.getSqrtPriceX64FromTick(l),[b,y]=[le(m,(w=r.mintA.extensions)==null?void 0:w.feeConfig,a,!c),le(d,(P=r.mintB.extensions)==null?void 0:P.feeConfig,a,!c)],h=U.getLiquidityFromTokenAmounts(p,g,f,b.amount.sub((A=b.fee)!=null?A:H),y.amount.sub((x=y.fee)!=null?x:H));return U.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:h,slippage:o,add:s,epochInfo:a,amountAddFee:!c})}var D=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(H)||(o=o.add(We)),o}static mulDivFloor(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).add(n.sub(We)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new V.default(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Xt).sub(t).mod(Xt)}};function ye(r,e){return gr(r.mul(e),64,256)}function as(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function gr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var O=class{static sqrtPriceX64ToPrice(e,t,n){return D.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return D.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))return e;let o=t.shln(kt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?D.mulDivCeil(s,e,a):D.mulDivRoundingUp(s,We,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 D.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(kt);if(i)return e.add(o.div(t));{let s=D.mulDivRoundingUp(o,We,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<Ae||e>Ce)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new V.default("18445821805675395072"):new V.default("18446744073709551616");return(t&2)!=0&&(n=ye(n,new V.default("18444899583751176192"))),(t&4)!=0&&(n=ye(n,new V.default("18443055278223355904"))),(t&8)!=0&&(n=ye(n,new V.default("18439367220385607680"))),(t&16)!=0&&(n=ye(n,new V.default("18431993317065453568"))),(t&32)!=0&&(n=ye(n,new V.default("18417254355718170624"))),(t&64)!=0&&(n=ye(n,new V.default("18387811781193609216"))),(t&128)!=0&&(n=ye(n,new V.default("18329067761203558400"))),(t&256)!=0&&(n=ye(n,new V.default("18212142134806163456"))),(t&512)!=0&&(n=ye(n,new V.default("17980523815641700352"))),(t&1024)!=0&&(n=ye(n,new V.default("17526086738831433728"))),(t&2048)!=0&&(n=ye(n,new V.default("16651378430235570176"))),(t&4096)!=0&&(n=ye(n,new V.default("15030750278694412288"))),(t&8192)!=0&&(n=ye(n,new V.default("12247334978884435968"))),(t&16384)!=0&&(n=ye(n,new V.default("8131365268886854656"))),(t&32768)!=0&&(n=ye(n,new V.default("3584323654725218816"))),(t&65536)!=0&&(n=ye(n,new V.default("696457651848324352"))),(t&131072)!=0&&(n=ye(n,new V.default("26294789957507116"))),(t&262144)!=0&&(n=ye(n,new V.default("37481735321082"))),e>0&&(n=Zn.div(n)),n}static getTickFromPrice(e,t,n){return O.getTickFromSqrtPriceX64(O.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(et)||e.lt(Je))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new V.default(t-64),i=as(n,32,128),o=new V.default("8000000000000000","hex"),s=0,a=new V.default(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new V.default(0))&&s<Qn;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new V.default($n)),d=gr(m.sub(new V.default(Jn)),64,128).toNumber(),p=gr(m.add(new V.default(er)),64,128).toNumber();return d==p?d:O.getSqrtPriceX64FromTick(p).lte(e)?p:d}},mt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=O.getTickFromSqrtPriceX64(O.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=mt.getTickWithPriceAndTickspacing(e,t,n,i),s=O.getSqrtPriceX64FromTick(o);return O.sqrtPriceX64ToPrice(s,n,i)}},U=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(H))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(kt),s=t.sub(e);return i?D.mulDivRoundingUp(D.mulDivCeil(o,s,t),We,e):D.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(H))throw new Error("sqrtPriceX64A must greater than 0");return i?D.mulDivCeil(n,t.sub(e),Re):D.mulDivFloor(n,t.sub(e),Re)}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?D.mulDivRoundingUp(a,We,fn):a.shrn(kt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),D.mulDivFloor(n,fn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,i,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new V.default(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,i,o),a=U.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new V.default(0),amountB:U.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:c,amountB:u}=U.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new V.default(new S(c.toString()).mul(l).toFixed(0)),d=new V.default(new S(u.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:c}){var h,w,P,A;let u=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=O.getSqrtPriceX64FromTick(t),m=O.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=U.getAmountsFromLiquidity(u,l,m,i,s),[g,f]=[le(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),le(p.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,y]=[le(new V.default(new S(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),le(new V.default(new S(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:b,amountSlippageB:y,expirationTime:wt(g.expirationTime,f.expirationTime)}}},dt=class{static swapCompute(e,t,n,i,o,s,a,c,u,l,m,d,p,g){if(d.eq(H))throw new Error("amountSpecified must not be 0");if(g||(g=s?Je.add(We):et.sub(We)),s){if(g.lt(Je))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(et))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(H),b={amountSpecifiedRemaining:d,amountCalculated:H,sqrtPriceX64:m,tick:u>p?Math.min(p+X.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new V.default(0)},y=p,h=n[p],w=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(H)&&!b.sqrtPriceX64.eq(g);){if(w>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=b.sqrtPriceX64;let x=C.nextInitTick(h,b.tick,l,s,P),B=x||null,I=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let E=Te.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},y,s);if(!E.isExist)throw Error("swapCompute LiquidityInsufficient");y=E.nextStartIndex;let{publicKey:q}=Q(e,t,y);I=q,h=n[y],B=C.firstInitializedTick(h,s)}A.tickNext=B.tick,A.initialized=B.liquidityGross.gtn(0),p!==y&&I&&(b.accounts.push(I),p=y),A.tickNext<Ae?A.tickNext=Ae:A.tickNext>Ce&&(A.tickNext=Ce),A.sqrtPriceNextX64=O.getSqrtPriceX64FromTick(A.tickNext);let R;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?R=g:R=A.sqrtPriceNextX64,[b.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=dt.swapStepCompute(b.sqrtPriceX64,R,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(A.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),b.amountCalculated=b.amountCalculated.sub(A.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(A.amountOut),b.amountCalculated=b.amountCalculated.add(A.amountIn.add(A.feeAmount))),b.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let E=B.liquidityNet;s&&(E=E.mul(Ye)),b.liquidity=U.addDelta(b.liquidity,E)}P=A.tickNext!=b.tick&&!s&&h.startTickIndex===A.tickNext,b.tick=s?A.tickNext-1:A.tickNext}else if(b.sqrtPriceX64!=A.sqrtPriceStartX64){let E=O.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=E!=b.tick&&!s&&h.startTickIndex===E,b.tick=E}++w}try{let{nextStartIndex:A,isExist:x}=X.nextInitializedTickArray(b.tick,l,s,i,o);x&&p!==A&&(b.accounts.push(Q(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new V.default(0),amountIn:new V.default(0),amountOut:new V.default(0),feeAmount:new V.default(0)},a=e.gte(t),c=i.gte(H);if(c){let l=D.mulDivFloor(i,Ht.sub(new V.default(o.toString())),Ht);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=O.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ye).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=O.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ye),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(i.mul(Ye))&&(s.amountOut=i.mul(Ye)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=D.mulDivCeil(s.amountIn,new V.default(o),Ht.sub(new V.default(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var j=require("@solana/spl-token"),k=require("@solana/web3.js"),Ar=se(require("bn.js"));var xn=require("@solana/web3.js"),Ri=require("@solana/spl-token"),ps=se(require("bn.js"));var cs=te([re("mint"),re("owner"),M("amount"),tt("delegateOption"),re("delegate"),me("state"),tt("isNativeOption"),M("isNative"),M("delegatedAmount"),tt("closeAuthorityOption"),re("closeAuthority")]);function us(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function br(r,...e){if(!us(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 yr(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 Ii(r,e){br(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Tn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Xe=(r,e)=>r<<32-e|r>>>e;var El=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ls(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function wr(r){return typeof r=="string"&&(r=ls(r)),br(r),r}var Pn=class{clone(){return this._cloneInto()}},Dl={}.toString;function Si(r){let e=n=>r().update(wr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ms(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),c=n?4:0,u=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+u,a,n)}var Ci=(r,e,t)=>r&e^~r&t,Ki=(r,e,t)=>r&e^r&t^e&t,kn=class extends Pn{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=Tn(this.buffer)}update(e){yr(this);let{view:t,buffer:n,blockLen:i}=this;e=wr(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=Tn(e);for(;i<=o-s;s+=i)this.process(c,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){yr(this),Ii(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;ms(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Tn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<u;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 ds=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]),pt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ft=new Uint32Array(64),hr=class extends kn{constructor(){super(64,32,8,!1),this.A=pt[0]|0,this.B=pt[1]|0,this.C=pt[2]|0,this.D=pt[3]|0,this.E=pt[4]|0,this.F=pt[5]|0,this.G=pt[6]|0,this.H=pt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:c}=this;return[e,t,n,i,o,s,a,c]}set(e,t,n,i,o,s,a,c){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=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)ft[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=ft[m-15],p=ft[m-2],g=Xe(d,7)^Xe(d,18)^d>>>3,f=Xe(p,17)^Xe(p,19)^p>>>10;ft[m]=f+ft[m-7]+g+ft[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=Xe(a,6)^Xe(a,11)^Xe(a,25),p=l+d+Ci(a,c,u)+ds[m]+ft[m]|0,f=(Xe(n,2)^Xe(n,13)^Xe(n,22))+Ki(n,i,o)|0;l=u,u=c,c=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,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,c,u,l)}roundClean(){ft.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ni=Si(()=>new hr);var Ql=be("Raydium_Util");function Li({fromPublicKey:r,programId:e=Ri.TOKEN_PROGRAM_ID}){let t=xn.Keypair.generate().publicKey.toBase58().slice(0,32);return{publicKey:fs(r,t,e),seed:t}}function fs(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Ni(n);return new xn.PublicKey(i)}var Fi=be("Raydium_Clmm"),He={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]},fe=class{static createPoolInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g){let f=te([G("sqrtPriceX64"),M("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,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:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1}],y=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},y);let h=Buffer.from([...He.createPool,...y]);return new k.TransactionInstruction({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,m=Li({fromPublicKey:i,programId:n}),[d,p]=[new k.PublicKey(o.address),new k.PublicKey(s.address)],g=[k.SystemProgram.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(An.span),space:An.span,programId:n})],{publicKey:f}=sr(n,a,d,p),{publicKey:b}=yn(n,f,d),{publicKey:y}=yn(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new k.PublicKey(o.programId||j.TOKEN_PROGRAM_ID),p,y,new k.PublicKey(s.programId||j.TOKEN_PROGRAM_ID),Ge(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[de.CreateAccount,de.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,x,B,I,R,E){let q=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),G("liquidity"),M("amountMaxA"),M("amountMaxB"),je("withMetadata"),me("optionBaseFlag"),je("baseFlag")]),ke=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ie=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,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:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...ke],xe=Buffer.alloc(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:x,amountMaxA:B,amountMaxB:I,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},xe);let oe=Buffer.from([...He.openPosition,...xe]);return new k.TransactionInstruction({keys:ie,programId:e,data:oe})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],g;if(l)g=new k.PublicKey((await l(1))[0]);else{let I=k.Keypair.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Q(d,p,f),{publicKey:h}=Q(d,p,b),{publicKey:w}=Ve(n.wallet,g,j.TOKEN_PROGRAM_ID),{publicKey:P}=Yt(g),{publicKey:A}=Fe(d,g),{publicKey:x}=ut(d,p,i,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,w,P,x,y,h,A,n.tokenAccountA,n.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),i,o,f,b,s,a,c,u);return{signers:m,instructions:[B],instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],g;if(l)g=new k.PublicKey((await l(1))[0]);else{let I=k.Keypair.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Q(d,p,f),{publicKey:h}=Q(d,p,b),{publicKey:w}=Ve(n.wallet,g,j.TOKEN_PROGRAM_ID),{publicKey:P}=Yt(g),{publicKey:A}=Fe(d,g),{publicKey:x}=ut(d,p,i,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,w,P,x,y,h,A,n.tokenAccountA,n.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),i,o,f,b,u,s,a,c,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ge(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:x},instructions:[B],signers:m,instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,x,B,I,R,E){let q=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),G("liquidity"),M("amountMaxA"),M("amountMaxB"),je("withMetadata"),me("optionBaseFlag"),je("baseFlag")]),ke=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ie=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,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:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...ke],xe=Buffer.alloc(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new Ar.default(0),amountMaxA:B==="MintA"?I:R,amountMaxB:B==="MintA"?R:I,withMetadata:x==="create",baseFlag:B==="MintA",optionBaseFlag:1},xe);let oe=Buffer.from([...He.openPosition,...xe]);return new k.TransactionInstruction({keys:ie,programId:e,data:oe})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new k.PublicKey((await l(1))[0]);else{let I=k.Keypair.generate();d.push(I),m=I.publicKey}let[p,g]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Q(p,g,f),{publicKey:h}=Q(p,g,b),{publicKey:w}=Ve(n.wallet,m,j.TOKEN_PROGRAM_ID),{publicKey:P}=Yt(m),{publicKey:A}=Fe(p,m),{publicKey:x}=ut(p,g,i,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,w,P,x,y,h,A,n.tokenAccountA,n.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(t.mintA.address),new k.PublicKey(t.mintB.address),i,o,f,b,s,a,c,u,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ge(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:x},instructions:[B],signers:d,instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=te([]),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:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...He.closePosition,...c]);return new k.TransactionInstruction({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new k.PublicKey(e.programId),{publicKey:s}=Ve(n.wallet,i.nftMint,j.TOKEN_PROGRAM_ID),{publicKey:a}=Fe(o,i.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[de.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=te([G("liquidity"),M("amountMaxA"),M("amountMaxB"),me("optionBaseFlag"),je("baseFlag")]),P=[...h?[{pubkey:h,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],x=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:b,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},x);let B=Buffer.from([...He.increaseLiquidity,...x]);return new k.TransactionInstruction({keys:A,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Q(c,u,l),{publicKey:p}=Q(c,u,m),{publicKey:g}=Ve(i.wallet,n.nftMint,j.TOKEN_PROGRAM_ID),{publicKey:f}=Fe(c,n.nftMint),{publicKey:b}=ut(c,u,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),o,s,a,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ge(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},signers:[],instructions:[y],instructionTypes:[de.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Q(c,u,l),{publicKey:p}=Q(c,u,m),{publicKey:g}=Ve(i.wallet,n.nftMint,j.TOKEN_PROGRAM_ID),{publicKey:f}=Fe(c,n.nftMint),{publicKey:b}=ut(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),o,s,a,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ge(c,u).publicKey:void 0)],signers:[],instructionTypes:[de.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=te([G("liquidity"),M("amountMaxA"),M("amountMaxB"),me("optionBaseFlag"),je("baseFlag")]),P=[...h?[{pubkey:h,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],x=Buffer.alloc(w.span);w.encode({liquidity:new Ar.default(0),amountMaxA:f==="MintA"?b:y,amountMaxB:f==="MintA"?y:b,baseFlag:f==="MintA",optionBaseFlag:1},x);let B=Buffer.from([...He.increaseLiquidity,...x]);return new k.TransactionInstruction({keys:A,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w){let P=te([G("liquidity"),M("amountMinA"),M("amountMinB")]),A=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],B=Buffer.alloc(P.span);P.encode({liquidity:b,amountMinA:y,amountMinB:h},B);let I=Buffer.from([...He.decreaseLiquidity,...B]);return new k.TransactionInstruction({keys:x,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Q(u,l,m),{publicKey:g}=Q(u,l,d),{publicKey:f}=Ve(i.wallet,n.nftMint,c),{publicKey:b}=Fe(u,n.nftMint),{publicKey:y}=ut(u,l,n.tickLower,n.tickUpper),h=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)h.push({poolRewardVault:new k.PublicKey(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new k.PublicKey(e.rewardDefaultInfos[P].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,i.wallet,f,b,l,y,p,g,i.tokenAccountA,i.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),h,o,s,a,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ge(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:b,protocolPosition:y},signers:[],instructions:w,instructionTypes:[de.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y){let h=te([M("amount"),M("otherAmountThreshold"),G("sqrtPriceLimitX64"),je("isBaseInput")]),w=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,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:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],A=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:b},A);let x=Buffer.from([...He.swap,...A]);return new k.TransactionInstruction({keys:P,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],[m,d]=[new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B)],[p,g]=[new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new k.PublicKey(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:g,f?g:p,c,m,o,s,a,!0,Ge(u,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[de.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=te([M("openTime"),M("endTime"),G("emissionsPerSecondX64")]),g=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:he(l),endTime:he(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...He.initReward,...f]);return new k.TransactionInstruction({keys:g,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],a=ar(o,s,i.mint).publicKey,c=Bt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new k.PublicKey(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[de.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=te([me("rewardIndex"),G("emissionsPerSecondX64"),M("openTime"),M("endTime")]),g=[{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:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:he(l),endTime:he(m)},f);let b=Buffer.from([...He.setRewardEmissions,...f]);return new k.TransactionInstruction({keys:g,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new k.PublicKey(t.rewardInfos[d].vault),u=new k.PublicKey(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&Fi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Bt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new k.PublicKey(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[de.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let c=te([me("rewardIndex")]),u=[{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:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...He.collectReward,...l]);return new k.TransactionInstruction({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new k.PublicKey(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Fi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[de.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],[m,d]=[new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B)],[p,g]=[new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new k.PublicKey(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:g,f?g:p,c,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[de.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};var Me=se(require("bn.js")),Bn=class extends Ut{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||W.PublicKey.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,g,f]=new Me.default(new W.PublicKey(i.address).toBuffer()).gt(new Me.default(new W.PublicKey(o.address).toBuffer()))?[o,i,new S(1).div(a)]:[i,o,a],b=O.priceToSqrtPriceX64(f,p.decimals,g.decimals),y=await fe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:g,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return d.addInstruction(y),d.addCustomComputeBudget(u),d.versionBuild({txVersion:m,extInfo:{address:J(_({},y.address),{programId:t.toString(),id:y.address.poolId.toString(),mintA:p,mintB:g,openTime:c.toString(),vault:{A:y.address.mintAVault.toString(),B:y.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:_({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:y.address.poolId.toString(),mintA:p,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},tr),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,y=null,h=n.useSOLBalance&&e.mintA.address===ne.toString(),w=n.useSOLBalance&&e.mintB.address===ne.toString(),[P,A]=s==="MintA"?[a,c]:[c,a],{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(B||{});let{account:I,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||A.isZero()?{payer:this.scope.ownerPubKey,amount:A}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:l});I&&(y=I),f.addInstruction(R||{}),(!b||!y)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let E=t||await this.getClmmPoolKeys(e.id),q=await fe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:E,ownerInfo:J(_({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(q),f.addCustomComputeBudget(p),f.versionBuild({txVersion:g,extInfo:q.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),f=null,b=null,y=n.useSOLBalance&&e.mintA.address===ne.toBase58(),h=n.useSOLBalance&&e.mintB.address===ne.toBase58(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w&&(f=w),g.addInstruction(P||{});let{account:A,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});A&&(b=A),g.addInstruction(x||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),I=await fe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return g.addInstruction(I),g.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W.PublicKey(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),x=fe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W.PublicKey(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),x=fe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===ne.toString(),g=i.useSOLBalance&&t.mintB.address===ne.toString(),f,b,{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W.PublicKey(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});f=y,h&&d.addInstruction(h);let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W.PublicKey(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});b=w,P&&d.addInstruction(P);let A=[];for(let R of t.rewardDefaultInfos){let E=i.useSOLBalance&&R.mint.address===ne.toString(),q;if(R.mint.address===t.mintA.address)q=f;else if(R.mint.address===t.mintB.address)q=b;else{let{account:ke,instructionParams:ie}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(R.mint.programId),mint:new W.PublicKey(R.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!E,associatedOnly:E?!1:c,checkCreateATAOwner:u});q=ke,ie&&d.addInstruction(ie)}A.push(q)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=await this.getClmmPoolKeys(t.id),B=await fe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:A},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[de.ClmmDecreasePosition]});let I=_({},B.address);if(i.closePosition){let R=await fe.closePositionInstructions({poolInfo:t,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),I=_(_({},I),R.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=fe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===ne.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(n.mint.address),mint:new W.PublicKey(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),g=fe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new W.PublicKey(n.mint.programId),mint:new W.PublicKey(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let c=this.createTxBuilder(),u={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===ne.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(l.mint.programId),mint:new W.PublicKey(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});g&&c.addInstruction(g),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=fe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new W.PublicKey(l.mint.programId),mint:new W.PublicKey(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});u=_(_({},u),b.address),c.addInstruction(b)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(ne),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=fe.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let c=this.createTxBuilder(),u={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===ne.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(l.mint.programId),mint:new W.PublicKey(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});p&&c.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id),f=fe.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new W.PublicKey(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});c.addInstruction(f),u=_(_({},u),f.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(ne),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=fe.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(ne),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),g=fe.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(g),a=_(_({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===ne.toBase58(),p=s.useSOLBalance&&e.mintB.address===ne.toBase58(),g;!o||o.equals(new S(0))?g=t.toString()===e.mintA.address?Je.add(new Me.default(1)):et.sub(new Me.default(1)):g=O.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W.PublicKey(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:c,checkCreateATAOwner:u});f=h,w&&m.addInstruction(w)}let b;if(!b){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W.PublicKey(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:u});b=h,w&&m.addInstruction(w)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id);return m.addInstruction(fe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new W.PublicKey(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let m of this.scope.account.tokenAccountRawInfos)i?Ve(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(u[m.accountInfo.mint.toString()]=m.pubkey):u[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(P=>!P.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===ne.toString(),g=n.useSOLBalance&&d.mintB.address===ne.toString(),f=u[d.mintA.address];if(!f){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new W.PublicKey(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=w,P&&l.addInstruction(P)}let b=u[d.mintB.address];if(!b){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new W.PublicKey(d.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:i,checkCreateATAOwner:o});b=w,P&&l.addInstruction(P)}u[d.mintA.address]=f,u[d.mintB.address]=b;let y=[];for(let w of d.rewardDefaultInfos){let P=n.useSOLBalance&&w.mint.address===ne.toString(),A=u[w.mint.address];if(!A){let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(w.mint.programId),mint:new W.PublicKey(w.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:i});A=x,B&&l.addInstruction(B)}u[w.mint.address]=A,y.push(A)}let h=await this.getClmmPoolKeys(d.id);for(let w of t[m.id]){let P=fe.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:y},liquidity:new Me.default(0),amountMinA:new Me.default(0),amountMinB:new Me.default(0)});l.addInstruction(P)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Bt(e).publicKey);return t?dr.decode(t.data).whitelistMints.filter(i=>!i.equals(W.PublicKey.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Me.default(1))).map(s=>Fe(new W.PublicKey(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=Zt.decode(s.data);o.push(a)}),o}};0&&(module.exports={AMM_CONFIG_SEED,AmmConfigLayout,BIT_PRECISION,Clmm,ClmmInstrument,EXTENSION_TICKARRAY_BITMAP_SIZE,FEE_RATE_DENOMINATOR,FETCH_TICKARRAY_COUNT,Fee,LOG_B_2_X32,LOG_B_P_ERR_MARGIN_LOWER_X64,LOG_B_P_ERR_MARGIN_UPPER_X64,LiquidityMath,MAX_SQRT_PRICE_X64,MAX_TICK,MIN_SQRT_PRICE_X64,MIN_TICK,MathUtil,MaxU64,MaxUint128,NEGATIVE_ONE,ONE,OPERATION_SEED,ObservationInfoLayout,ObservationLayout,OperationLayout,POOL_REWARD_VAULT_SEED,POOL_SEED,POOL_TICK_ARRAY_BITMAP_SEED,POOL_VAULT_SEED,POSITION_SEED,PoolInfoLayout,PoolUtils,PositionInfoLayout,PositionRewardInfoLayout,PositionUtils,ProtocolPositionLayout,Q128,Q64,RewardInfo,SqrtPriceMath,SwapMath,TICK_ARRAY_BITMAP_SIZE,TICK_ARRAY_SEED,TICK_ARRAY_SIZE,TICK_SPACINGS,TickArrayBitmap,TickArrayBitmapExtensionLayout,TickArrayBitmapExtensionUtils,TickArrayLayout,TickLayout,TickMath,TickQuery,TickUtils,U64Resolution,U64_IGNORE_RANGE,ZERO,getLiquidityFromAmounts,getPdaAmmConfigId,getPdaExBitmapAccount,getPdaMetadataKey,getPdaOperationAccount,getPdaPersonalPositionAddress,getPdaPoolId,getPdaPoolRewardVaulId,getPdaPoolVaultId,getPdaProtocolPositionAddress,getPdaTickArrayAddress,i16ToBytes,i32ToBytes,isZero,leadingZeros,leastSignificantBit,mockCreatePoolInfo,mockV3CreatePoolInfo,mostSignificantBit,trailingZeros,u16ToBytes,u32ToBytes});
1
+ var Mi=Object.create;var Rt=Object.defineProperty,Oi=Object.defineProperties,Ei=Object.getOwnPropertyDescriptor,Di=Object.getOwnPropertyDescriptors,vi=Object.getOwnPropertyNames,$t=Object.getOwnPropertySymbols,_i=Object.getPrototypeOf,Sn=Object.prototype.hasOwnProperty,kr=Object.prototype.propertyIsEnumerable;var Tr=(r,e,t)=>e in r?Rt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_=(r,e)=>{for(var t in e||(e={}))Sn.call(e,t)&&Tr(r,t,e[t]);if($t)for(var t of $t(e))kr.call(e,t)&&Tr(r,t,e[t]);return r},$=(r,e)=>Oi(r,Di(e));var Jt=(r,e)=>{var t={};for(var n in r)Sn.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&$t)for(var n of $t(r))e.indexOf(n)<0&&kr.call(r,n)&&(t[n]=r[n]);return t};var Vi=(r,e)=>{for(var t in e)Rt(r,t,{get:e[t],enumerable:!0})},xr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vi(e))!Sn.call(r,i)&&i!==t&&Rt(r,i,{get:()=>e[i],enumerable:!(n=Ei(e,i))||n.enumerable});return r};var se=(r,e,t)=>(t=r!=null?Mi(_i(r)):{},xr(e||!r||!r.__esModule?Rt(t,"default",{value:r,enumerable:!0}):t,r)),qi=r=>xr(Rt({},"__esModule",{value:!0}),r);var gs={};Vi(gs,{AMM_CONFIG_SEED:()=>ci,AmmConfigLayout:()=>is,BIT_PRECISION:()=>$n,Clmm:()=>In,ClmmInstrument:()=>fe,EXTENSION_TICKARRAY_BITMAP_SIZE:()=>An,FEE_RATE_DENOMINATOR:()=>Ht,FETCH_TICKARRAY_COUNT:()=>xi,Fee:()=>ai,LOG_B_2_X32:()=>Jn,LOG_B_P_ERR_MARGIN_LOWER_X64:()=>er,LOG_B_P_ERR_MARGIN_UPPER_X64:()=>tr,LiquidityMath:()=>U,MAX_SQRT_PRICE_X64:()=>et,MAX_TICK:()=>Ce,MIN_SQRT_PRICE_X64:()=>Je,MIN_TICK:()=>Ae,MathUtil:()=>D,MaxU64:()=>gn,MaxUint128:()=>Qn,NEGATIVE_ONE:()=>Ye,ONE:()=>We,OPERATION_SEED:()=>pi,ObservationInfoLayout:()=>Pn,ObservationLayout:()=>Ai,OperationLayout:()=>dr,POOL_REWARD_VAULT_SEED:()=>mi,POOL_SEED:()=>ui,POOL_TICK_ARRAY_BITMAP_SEED:()=>fi,POOL_VAULT_SEED:()=>li,POSITION_SEED:()=>sr,PoolInfoLayout:()=>Zt,PoolUtils:()=>Te,PositionInfoLayout:()=>Qt,PositionRewardInfoLayout:()=>Ti,PositionUtils:()=>Nt,ProtocolPositionLayout:()=>os,Q128:()=>Xt,Q64:()=>Re,RewardInfo:()=>Pi,SqrtPriceMath:()=>M,SwapMath:()=>dt,TICK_ARRAY_BITMAP_SIZE:()=>lt,TICK_ARRAY_SEED:()=>di,TICK_ARRAY_SIZE:()=>pe,TICK_SPACINGS:()=>Zo,TickArrayBitmap:()=>Ze,TickArrayBitmapExtensionLayout:()=>pr,TickArrayBitmapExtensionUtils:()=>Ct,TickArrayLayout:()=>Kt,TickLayout:()=>ki,TickMath:()=>mt,TickQuery:()=>X,TickUtils:()=>C,U64Resolution:()=>kt,U64_IGNORE_RANGE:()=>$o,ZERO:()=>H,getLiquidityFromAmounts:()=>ss,getPdaAmmConfigId:()=>ts,getPdaExBitmapAccount:()=>Ge,getPdaMetadataKey:()=>Yt,getPdaOperationAccount:()=>Bt,getPdaPersonalPositionAddress:()=>Fe,getPdaPoolId:()=>ar,getPdaPoolRewardVaulId:()=>cr,getPdaPoolVaultId:()=>wn,getPdaProtocolPositionAddress:()=>ut,getPdaTickArrayAddress:()=>Q,i16ToBytes:()=>Jo,i32ToBytes:()=>zt,isZero:()=>xt,leadingZeros:()=>bn,leastSignificantBit:()=>or,mockCreatePoolInfo:()=>Qo,mockV3CreatePoolInfo:()=>nr,mostSignificantBit:()=>ir,trailingZeros:()=>yn,u16ToBytes:()=>rr,u32ToBytes:()=>es});module.exports=qi(gs);var W=require("@solana/web3.js");var ht=9e15,st=1e9,Cn="0123456789abcdef",tn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",nn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Kn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-ht,maxE:ht,crypto:!1},Cr,Qe,v=!0,on="[DecimalError] ",ot=on+"Invalid argument: ",Kr=on+"Precision limit exceeded",Nr=on+"crypto unavailable",Rr="[object Decimal]",Be=Math.floor,ge=Math.pow,Wi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Gi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ui=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Lr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ve=1e7,L=7,Xi=9007199254740991,Hi=tn.length-1,Nn=nn.length-1,T={toStringTag:Rr};T.absoluteValue=T.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),K(r)};T.ceil=function(){return K(new this.constructor(this),this.e+1,2)};T.clampedTo=T.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)};T.comparedTo=T.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,c=o.s,u=r.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==r.e)return o.e>r.e^c<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]^c<0?1:-1;return n===i?0:n>i^c<0?1:-1};T.cosine=T.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())+L,n.rounding=1,t=zi(n,Dr(n,t)),n.precision=r,n.rounding=e,K(Qe==2||Qe==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var r,e,t,n,i,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(v=!1,o=l.s*ge(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=ge(t,1/3),r=Be((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,c=a.times(a).times(a),u=c.plus(l),n=ee(u.plus(l).times(a),u.plus(c),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&&(K(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")&&(K(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return v=!0,K(n,r,m.rounding,e)};T.decimalPlaces=T.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Be(this.e/L))*L,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(r){return ee(this,new this.constructor(r))};T.dividedToIntegerBy=T.divToInt=function(r){var e=this,t=e.constructor;return K(ee(e,new t(r),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(r){return this.cmp(r)===0};T.floor=function(){return K(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(r){return this.cmp(r)>0};T.greaterThanOrEqualTo=T.gte=function(r){var e=this.cmp(r);return e==1||e===0};T.hyperbolicCosine=T.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/an(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=At(s,1,o.times(e),new s(1),!0);for(var c,u=r,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return K(o,s.precision=t,s.rounding=n,!0)};T.hyperbolicSine=T.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=At(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/an(5,r)),i=At(o,2,i,i,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,K(i,e,t,!0)};T.hyperbolicTangent=T.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,ee(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};T.inverseCosine=T.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()?De(t,i,o):new t(0):new t(NaN):e.isZero()?De(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=De(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};T.inverseHyperbolicCosine=T.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,v=!1,t=t.times(t).minus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.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,v=!1,t=t.times(t).plus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.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?K(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ee(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)};T.inverseSine=T.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=De(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)))};T.inverseTangent=T.atan=function(){var r,e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=Nn)return s=De(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=Nn)return s=De(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/L+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(v=!1,e=Math.ceil(a/L),n=1,c=u.times(u),s=new l(u),i=u;r!==-1;)if(i=i.times(c),o=s.minus(i.div(n+=2)),i=i.times(c),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)),v=!0,K(s,l.precision=m,l.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&Be(this.e/L)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(r){return this.cmp(r)<0};T.lessThanOrEqualTo=T.lte=function(r){return this.cmp(r)<1};T.logarithm=T.log=function(r){var e,t,n,i,o,s,a,c,u=this,l=u.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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(v=!1,a=m+p,s=it(u,a),n=e?rn(l,a+10):it(r,a),c=ee(s,n,a,1),Lt(c.d,i=m,d))do if(a+=10,s=it(u,a),n=e?rn(l,a+10):it(r,a),c=ee(s,n,a,1),!o){+we(c.d).slice(i+1,i+15)+1==1e14&&(c=K(c,m+1,0));break}while(Lt(c.d,i+=10,d));return v=!0,K(c,m,d)};T.minus=T.sub=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(u=p.d,d=r.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])r.s=-r.s;else if(u[0])r=new g(p);else return new g(c===3?-0:0);return v?K(r,a,c):r}if(t=Be(r.e/L),l=Be(p.e/L),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}o=0}for(m&&(e=u,u=d,d=e,r.s=-r.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=ve-1;--u[i],u[n]+=ve}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=sn(u,t),v?K(r,a,c):r):new g(c===3?-0:0)};T.modulo=T.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]?K(new n(t),n.precision,n.rounding):(v=!1,n.modulo==9?(e=ee(t,r.abs(),0,3,1),e.s*=r.s):e=ee(t,r,0,n.modulo,1),e=e.times(r),v=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return Rn(this)};T.naturalLogarithm=T.ln=function(){return it(this)};T.negated=T.neg=function(){var r=new this.constructor(this);return r.s=-r.s,K(r)};T.plus=T.add=function(r){var e,t,n,i,o,s,a,c,u,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(u=m.d,l=r.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(r=new d(m)),v?K(r,a,c):r;if(o=Be(m.e/L),n=Be(r.e/L),u=u.slice(),i=o-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=l.length,s-i<0&&(i=s,t=l,l=u,u=t),e=0;i;)e=(u[--i]=u[i]+l[i]+e)/ve|0,u[i]%=ve;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=sn(u,n),v?K(r,a,c):r};T.precision=T.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=Fr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var r=this,e=r.constructor;return K(new e(r),r.e+1,e.rounding)};T.sine=T.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())+L,n.rounding=1,t=ji(n,Dr(n,t)),n.precision=r,n.rounding=e,K(Qe>2?t.neg():t,r,e,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(v=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=we(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Be((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(ee(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&&(K(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(K(n,c+1,1),r=!n.times(n).eq(s));break}return v=!0,K(n,c,l.rounding,r)};T.tangent=T.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=ee(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,K(Qe==2||Qe==4?t.neg():t,r,e,!0)):new n(NaN)};T.times=T.mul=function(r){var e,t,n,i,o,s,a,c,u,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=Be(l.e/L)+Be(r.e/L),c=d.length,u=p.length,c<u&&(o=d,d=p,p=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,i=c+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=sn(o,t),v?K(r,m.precision,m.rounding):r};T.toBinary=function(r,e){return Fn(this,2,r,e)};T.toDecimalPlaces=T.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ne(r,0,st),e===void 0?e=n.rounding:Ne(e,0,8),K(t,r+t.e+1,e))};T.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ze(n,!0):(Ne(r,0,st),e===void 0?e=i.rounding:Ne(e,0,8),n=K(new i(n),r+1,e),t=ze(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=ze(i):(Ne(r,0,st),e===void 0?e=o.rounding:Ne(e,0,8),n=K(new o(i),r+i.e+1,e),t=ze(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toFraction=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=Fr(g)-p.e-1,s=o%L,e.d[0]=ge(10,s<0?L+s:s),r==null)r=o>0?e:u;else{if(a=new f(r),!a.isInt()||a.lt(u))throw Error(ot+a);r=a.gt(e)?o>0?e:u:a}for(v=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*L*2;m=ee(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=ee(r.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=p.s,d=ee(u,n,o,1).minus(p).abs().cmp(ee(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,v=!0,d};T.toHexadecimal=T.toHex=function(r,e){return Fn(this,16,r,e)};T.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:Ne(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]?(v=!1,t=ee(t,r,0,e,1).times(r),v=!0,K(t)):(r.s=t.s,t=r),t};T.toNumber=function(){return+this};T.toOctal=function(r,e){return Fn(this,8,r,e)};T.toPower=T.pow=function(r){var e,t,n,i,o,s,a=this,c=a.constructor,u=+(r=new c(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new c(ge(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,r.eq(1))return K(a,n,o);if(e=Be(r.e/L),e>=r.d.length-1&&(t=u<0?-u:u)<=Xi)return i=Mr(c,a,t,n),r.s<0?new c(1).div(i):K(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new c(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=ge(+a,u),e=t==0||!isFinite(t)?Be(u*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(v=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Rn(r.times(it(a,n+t)),n),i.d&&(i=K(i,n+5,1),Lt(i.d,n,o)&&(e=n+10,i=K(Rn(r.times(it(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=K(i,n+1,0)))),i.s=s,v=!0,c.rounding=o,K(i,n,o))};T.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ze(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ne(r,1,st),e===void 0?e=i.rounding:Ne(e,0,8),n=K(new i(n),r,e),t=ze(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ne(r,1,st),e===void 0?e=n.rounding:Ne(e,0,8)),K(new n(t),r,e)};T.toString=function(){var r=this,e=r.constructor,t=ze(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return K(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var r=this,e=r.constructor,t=ze(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=L-n.length,t&&(o+=rt(t)),o+=n;s=r[e],n=s+"",t=L-n.length,t&&(o+=rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ne(r,e,t){if(r!==~~r||r<e||r>t)throw Error(ot+r)}function Lt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=L,i=0):(i=Math.ceil((e+1)/L),e%=L),o=ge(10,L-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)==ge(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)==ge(10,e-3)-1,s}function en(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]+=Cn.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 zi(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/an(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=At(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 ee=function(){function r(n,i,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}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,c){var u,l,m,d,p,g,f,b,y,h,w,P,A,x,B,I,R,E,q,ke,ie=n.constructor,xe=n.s==i.s?1:-1,oe=n.d,Z=i.d;if(!oe||!oe[0]||!Z||!Z[0])return new ie(!n.s||!i.s||(oe?Z&&oe[0]==Z[0]:!Z)?NaN:oe&&oe[0]==0||!Z?xe*0:xe/0);for(c?(p=1,l=n.e-i.e):(c=ve,p=L,l=Be(n.e/p)-Be(i.e/p)),q=Z.length,R=oe.length,y=new ie(xe),h=y.d=[],m=0;Z[m]==(oe[m]||0);m++);if(Z[m]>(oe[m]||0)&&l--,o==null?(x=o=ie.precision,s=ie.rounding):a?x=o+(n.e-i.e)+1:x=o,x<0)h.push(1),g=!0;else{if(x=x/p+2|0,m=0,q==1){for(d=0,Z=Z[0],x++;(m<R||d)&&x--;m++)B=d*c+(oe[m]||0),h[m]=B/Z|0,d=B%Z|0;g=d||m<R}else{for(d=c/(Z[0]+1)|0,d>1&&(Z=r(Z,d,c),oe=r(oe,d,c),q=Z.length,R=oe.length),I=q,w=oe.slice(0,q),P=w.length;P<q;)w[P++]=0;ke=Z.slice(),ke.unshift(0),E=Z[0],Z[1]>=c/2&&++E;do d=0,u=e(Z,w,q,P),u<0?(A=w[0],q!=P&&(A=A*c+(w[1]||0)),d=A/E|0,d>1?(d>=c&&(d=c-1),f=r(Z,d,c),b=f.length,P=w.length,u=e(f,w,b,P),u==1&&(d--,t(f,q<b?ke:Z,b,c))):(d==0&&(u=d=1),f=Z.slice()),b=f.length,b<P&&f.unshift(0),t(w,f,P,c),u==-1&&(P=w.length,u=e(Z,w,q,P),u<1&&(d++,t(w,q<P?ke:Z,P,c))),P=w.length):u===0&&(d++,w=[0]),h[m++]=d,u&&w[0]?w[P++]=oe[I]||0:(w=[oe[I]],P=1);while((I++<R||w[0]!==void 0)&&x--);g=w[0]!==void 0}h[0]||h.shift()}if(p==1)y.e=l,Cr=g;else{for(m=1,d=h[0];d>=10;d/=10)m++;y.e=m+l*p-1,K(y,a?o+y.e+1:o,s,g)}return y}}();function K(r,e,t,n){var i,o,s,a,c,u,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+=L,s=e,l=m[d=0],c=l/ge(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/L),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,o%=L,s=o-L+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=L,s=o-L+i,c=s<0?0:l/ge(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%ge(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(r.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/ge(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=r.e+1,m[0]=ge(10,(L-e%L)%L),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=ge(10,L-o),m[d]=s>0?(l/ge(10,i-s)%ge(10,s)|0)*a:0),u)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 v&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function ze(r,e,t){if(!r.isFinite())return Er(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 sn(r,e){var t=r[0];for(e*=L;t>=10;t/=10)e++;return e}function rn(r,e,t){if(e>Hi)throw v=!0,t&&(r.precision=t),Error(Kr);return K(new r(tn),e,1,!0)}function De(r,e,t){if(e>Nn)throw Error(Kr);return K(new r(nn),e,t,!0)}function Fr(r){var e=r.length-1,t=e*L+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 Mr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/L+4);for(v=!1;;){if(t%2&&(o=o.times(e),Ir(o.d,s)&&(i=!0)),t=Be(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ir(e.d,s)}return v=!0,o}function Br(r){return r.d[r.d.length-1]&1}function Or(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 Rn(r,e){var t,n,i,o,s,a,c,u=0,l=0,m=0,d=r.constructor,p=d.rounding,g=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?(v=!1,c=g):c=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(ge(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=K(o.times(r),c,1),t=t.times(++l),a=s.plus(ee(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(i=m;i--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&Lt(s.d,c-n,p,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return K(s,d.precision=g,p,v=!0);else return d.precision=g,s}s=a}}function it(r,e){var t,n,i,o,s,a,c,u,l,m,d,p=1,g=10,f=r,b=f.d,y=f.constructor,h=y.rounding,w=y.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(v=!1,l=w):l=e,y.precision=l+=g,t=we(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new y("0."+t),o++):f=new y(n+"."+t.slice(1))}else return u=rn(y,l+2,w).times(o+""),f=it(new y(n+"."+t.slice(1)),l-g).plus(u),y.precision=w,e==null?K(f,w,h,v=!0):f;for(m=f,c=s=f=ee(f.minus(1),f.plus(1),l,1),d=K(f.times(f),l,1),i=3;;){if(s=K(s.times(d),l,1),u=c.plus(ee(s,new y(i),l,1)),we(u.d).slice(0,l)===we(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(rn(y,l+2,w).times(o+""))),c=ee(c,new y(p),l,1),e==null)if(Lt(c.d,l-g,h,a))y.precision=l+=g,u=s=f=ee(m.minus(1),m.plus(1),l,1),d=K(f.times(f),l,1),i=a=1;else return K(c,y.precision=w,h,v=!0);else return y.precision=w,c;c=u,i+=2}}function Er(r){return String(r.s*r.s/0)}function Ln(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)%L,t<0&&(n+=L),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=L;n<i;)r.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),v&&(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 Yi(r,e){var t,n,i,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Lr.test(e))return Ln(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Gi.test(e))t=16,e=e.toLowerCase();else if(Wi.test(e))t=2;else if(Ui.test(e))t=8;else throw Error(ot+e);for(o=e.search(/p/i),o>0?(c=+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=Mr(n,new n(t),o,o*2)),u=en(e,t,ve),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(r.s*0):(r.e=sn(u,l),r.d=u,v=!1,s&&(r=ee(r,i,a*4)),c&&(r=r.times(Math.abs(c)<54?ge(2,c):Ft.pow(2,c))),v=!0,r)}function ji(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:At(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/an(5,t)),e=At(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 At(r,e,t,n,i){var o,s,a,c,u=1,l=r.precision,m=Math.ceil(l/L);for(v=!1,c=t.times(t),a=new r(n);;){if(s=ee(a.times(c),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ee(s.times(c),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,u++}return v=!0,s.d.length=m+1,s}function an(r,e){for(var t=r;--e;)t*=r;return t}function Dr(r,e){var t,n=e.s<0,i=De(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Qe=n?4:1,e;if(t=e.divToInt(i),t.isZero())Qe=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Qe=Br(t)?n?2:3:n?4:1,e;Qe=Br(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Fn(r,e,t,n){var i,o,s,a,c,u,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Ne(t,1,st),n===void 0?n=p.rounding:Ne(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Er(r);else{for(l=ze(r),s=l.indexOf("."),g?(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=en(ze(d),10,i),d.e=d.d.length),m=en(l,10,i),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ee(r,d,t,n,0,i),m=r.d,o=r.e,u=Cr),s=m[t],a=i/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,u)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=Cn.charAt(m[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=en(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Cn.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>c)for(o-=c;o--;)l+="0";else o<c&&(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 Ir(r,e){if(r.length>e)return r.length=e,!0}function Zi(r){return new this(r).abs()}function Qi(r){return new this(r).acos()}function $i(r){return new this(r).acosh()}function Ji(r,e){return new this(r).plus(e)}function eo(r){return new this(r).asin()}function to(r){return new this(r).asinh()}function no(r){return new this(r).atan()}function ro(r){return new this(r).atanh()}function io(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=De(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?De(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=De(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ee(r,e,o,1)),e=De(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ee(r,e,o,1)),t}function oo(r){return new this(r).cbrt()}function so(r){return K(r=new this(r),r.e+1,2)}function ao(r,e,t){return new this(r).clamp(e,t)}function co(r){if(!r||typeof r!="object")throw Error(on+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,st,"rounding",0,8,"toExpNeg",-ht,0,"toExpPos",0,ht,"maxE",0,ht,"minE",-ht,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Kn[t]),(n=r[t])!==void 0)if(Be(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]=Kn[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(Nr);else this[t]=!1;else throw Error(ot+t+": "+n);return this}function uo(r){return new this(r).cos()}function lo(r){return new this(r).cosh()}function vr(r){var e,t,n;function i(o){var s,a,c,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,Sr(o)){u.s=o.s,v?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e<i.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;v?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Ln(u,o.toString())}else if(c!=="string")throw Error(ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Lr.test(o)?Ln(u,o):Yi(u,o)}if(i.prototype=T,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=co,i.clone=vr,i.isDecimal=Sr,i.abs=Zi,i.acos=Qi,i.acosh=$i,i.add=Ji,i.asin=eo,i.asinh=to,i.atan=no,i.atanh=ro,i.atan2=io,i.cbrt=oo,i.ceil=so,i.clamp=ao,i.cos=uo,i.cosh=lo,i.div=mo,i.exp=po,i.floor=fo,i.hypot=go,i.ln=bo,i.log=yo,i.log10=ho,i.log2=wo,i.max=Ao,i.min=Po,i.mod=To,i.mul=ko,i.pow=xo,i.random=Bo,i.round=Io,i.sign=So,i.sin=Co,i.sinh=Ko,i.sqrt=No,i.sub=Ro,i.sum=Lo,i.tan=Fo,i.tanh=Mo,i.trunc=Oo,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 mo(r,e){return new this(r).div(e)}function po(r){return new this(r).exp()}function fo(r){return K(r=new this(r),r.e+1,3)}function go(){var r,e,t=new this(0);for(v=!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 v=!0,new this(1/0);t=e}return v=!0,t.sqrt()}function Sr(r){return r instanceof Ft||r&&r.toStringTag===Rr||!1}function bo(r){return new this(r).ln()}function yo(r,e){return new this(r).log(e)}function wo(r){return new this(r).log(2)}function ho(r){return new this(r).log(10)}function Ao(){return Or(this,arguments,"lt")}function Po(){return Or(this,arguments,"gt")}function To(r,e){return new this(r).mod(e)}function ko(r,e){return new this(r).mul(e)}function xo(r,e){return new this(r).pow(e)}function Bo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ne(r,1,st),n=Math.ceil(r/L),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(Nr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=L,n&&r&&(i=ge(10,L-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-=L)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function Io(r){return K(r=new this(r),r.e+1,this.rounding)}function So(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Co(r){return new this(r).sin()}function Ko(r){return new this(r).sinh()}function No(r){return new this(r).sqrt()}function Ro(r,e){return new this(r).sub(e)}function Lo(){var r=0,e=arguments,t=new this(e[r]);for(v=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return v=!0,K(t,this.precision,this.rounding)}function Fo(r){return new this(r).tan()}function Mo(r){return new this(r).tanh()}function Oo(r){return K(r=new this(r),r.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var Ft=T.constructor=vr(Kn);tn=new Ft(tn);nn=new Ft(nn);var S=Ft;var Mt=require("lodash"),On=se(require("dayjs")),Vr=se(require("dayjs/plugin/utc"));On.default.extend(Vr.default);var Mn=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(0,On.default)().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}},_r={},Eo={};function be(r){let e=(0,Mt.get)(_r,r);if(!e){let t=(0,Mt.get)(Eo,r);e=new Mn({name:r,logLevel:t}),(0,Mt.set)(_r,r,e)}return e}var Xo=require("@solana/web3.js"),Ho=se(require("bn.js"));var $r=se(require("big.js")),Vt=se(require("bn.js"));var Ke=se(require("bn.js"));var un=require("@solana/web3.js");var qr=require("@solana/spl-token"),z=require("@solana/web3.js");function En({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var As=[En({pubkey:qr.TOKEN_PROGRAM_ID,isWritable:!1}),En({pubkey:z.SystemProgram.programId,isWritable:!1}),En({pubkey:z.SYSVAR_RENT_PUBKEY,isWritable:!1})];function Dn({publicKey:r,transformSol:e}){let t=Wr(r.toString());if(t instanceof z.PublicKey)return e&&t.equals(Ot)?ne:t;if(e&&t.toString()===Ot.toBase58())return ne;if(typeof t=="string"){if(t===z.PublicKey.default.toBase58())return z.PublicKey.default;try{return new z.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wr(r){try{return new z.PublicKey(r)}catch{return r}}var cn=new z.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ps=new z.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Et=new z.PublicKey("SysvarRent111111111111111111111111111111111"),Ts=new z.PublicKey("SysvarC1ock11111111111111111111111111111111"),Pt=new z.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ks=new z.PublicKey("Sysvar1nstructions1111111111111111111111111"),xs=z.SystemProgram.programId,Bs=new z.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Is=new z.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ss=new z.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cs=new z.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ks=new z.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ns=new z.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Rs=new z.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ls=new z.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Fs=new z.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ms=new z.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Os=new z.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ne=new z.PublicKey("So11111111111111111111111111111111111111112"),Ot=z.PublicKey.default;function vn(r){return Dn({publicKey:r,transformSol:!0})}var Gr=require("@solana/web3.js"),_n=require("@solana/spl-token"),Ur={chainId:101,address:Gr.PublicKey.default.toBase58(),programId:_n.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},gt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:_n.TOKEN_PROGRAM_ID.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 Vn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ot.toBase58()||e instanceof un.PublicKey&&Ot.equals(e)){this.decimals=gt.decimals,this.symbol=gt.symbol,this.name=gt.name,this.mint=new un.PublicKey(gt.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?un.PublicKey.default:Dn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},$e=Vn;$e.WSOL=new Vn($(_({},gt),{mint:gt.address}));var vt=se(require("big.js")),Hr=se(require("bn.js")),zr=se(require("decimal.js-light"));var Xr=se(require("toformat")),Do=Xr.default,Dt=Do;var ln=be("module/fraction"),qn=Dt(vt.default),_t=Dt(zr.default),vo={[0]:_t.ROUND_DOWN,[1]:_t.ROUND_HALF_UP,[2]:_t.ROUND_UP},_o={[0]:vt.default.roundDown,[1]:vt.default.roundHalfUp,[2]:vt.default.roundUp},Y=class{constructor(e,t=new Hr.default(1)){this.numerator=he(e),this.denominator=he(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||ln.logWithError(`${e} is not an integer.`),e<=0&&ln.logWithError(`${e} is not positive.`),_t.set({precision:e+1,rounding:vo[n]});let i=new _t(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)||ln.logWithError(`${e} is not an integer.`),e<0&&ln.logWithError(`${e} is negative.`),qn.DP=e,qn.RM=_o[n]||1,new qn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qo=be("Raydium_price"),_e=class extends Y{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new Y(Wn(n.decimals),Wn(i.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new _e({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qo.logWithError("mul token not equals");let n=super.mul(t);return new _e({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 Gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},mn=Gn;mn.SOL=new Gn(Ur);var jr=se(require("bn.js"));var Yr=new Y(new jr.default(100)),bt=class extends Y{toSignificant(e=5,t,n){return this.mul(Yr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Yr).toFixed(e,t,n)}};var Wo=new Ke.default(0),Ta=new Ke.default(1),ka=new Ke.default(2),xa=new Ke.default(3),Ba=new Ke.default(5),Un=new Ke.default(10),Ia=new Ke.default(100),Sa=new Ke.default(1e3),Ca=new Ke.default(1e4),Zr=9007199254740991;function he(r){let e=be("Raydium_parseBigNumberish");if(r instanceof Ke.default)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ke.default(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Zr||r<=-Zr)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ke.default(String(r))):typeof r=="bigint"?new Ke.default(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ke.default(0))}function Wn(r){return Un.pow(he(r))}var Go=be("Raydium_amount"),Qr=Dt($r.default);function Uo(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")):Go.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ie=class extends Y{constructor(t,n,i=!0,o){let s=new Vt.default(0),a=Un.pow(new Vt.default(t.decimals));if(i)s=he(n);else{let c=new Vt.default(0),u=new Vt.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Uo(n.toString(),t.decimals);c=he(l),u=he(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=be(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 Ie(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ie(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 Qr.DP=this.token.decimals,new Qr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var J=require("@solana/web3.js"),ii=se(require("axios"));var de={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 Se=require("@solana/web3.js"),ei=require("@solana/spl-token");var Jr=be("Raydium_txUtil"),ti=1644;function dn(r){let e=[],t=[];return r.microLamports&&(e.push(Se.ComputeBudgetProgram.setComputeUnitPrice({microLamports:r.microLamports})),t.push(de.SetComputeUnitPrice)),r.units&&(e.push(Se.ComputeBudgetProgram.setComputeUnitLimit({units:r.units})),t.push(de.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Tt(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 zo(r,e){r.length<1&&Jr.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Jr.logWithError(`no signers provided:, ${e.toString()}`);let t=new Se.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ti}catch{return!1}}function Le(r,e){let[t,n]=Se.PublicKey.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function qt({instructions:r,payer:e,signers:t}){return zo(r,[e,...t])}function Wt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Se.Keypair.generate().publicKey.toString()}){let o=new Se.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Se.VersionedTransaction(o).serialize()).toString("base64").length<ti}catch{return!1}}var Yo=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 Se.Transaction&&(t.recentBlockhash||(t.recentBlockhash=ei.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=Se.Keypair.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Se.VersionedTransaction&&(n=Yo(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}var ct=require("@solana/web3.js");var ni=require("@solana/web3.js"),ri=require("@solana/spl-token");var Xn=be("Raydium_accountInfo_util");async function at(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=_({batchRequest:!1},t),o=Hn(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}}),c=Hn(a,10);s=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Xn.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:g,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&Xn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new ni.PublicKey(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Xn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function zn(r,e,t){let n=await at(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>$(_({},i),{accountInfo:n[o]}))}async function Yn({connection:r,address:e}){let t=await at(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ct.PublicKey(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new ct.AddressLookupTableAccount({key:s,state:ct.AddressLookupTableAccount.deserialize(o.data)});n[s.toString()]=a,pn[s.toString()]=a}return n}var pn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new ct.AddressLookupTableAccount({key:new ct.PublicKey("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:ct.AddressLookupTableAccount.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 fn=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 ii.default.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}=dn(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!==J.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(_({},t||{})):this.build(t)}build(e){let t=new J.Transaction;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 Tt(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),yt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await(0,J.sendAndConfirmTransaction)(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[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(u=>u.transaction.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{},g=d!=null?d:await Tt(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,y)=>(b.recentBlockhash=g,await(0,J.sendAndConfirmTransaction)(this.connection,b,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,w)=>(h.recentBlockhash=g,a[w].length&&h.sign(...a[w]),h));yt(b);let y=await this.signAllTransactions(b);if(l){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:p});w.push({txId:A,status:"sent",signedTx:y[h]}),m==null||m([...w]),h++,this.connection.onSignature(A,x=>{let B=w.findIndex(I=>I.txId===A);B>-1&&(w[B].status=x.err?"error":"success"),m==null||m([...w]),x.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:p});h.push(P)}return{txIds:h,signedTxs:y}}}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=Jt(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=_(_({},this.cluster==="devnet"?{}:pn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new J.PublicKey(p));let u=await Yn({connection:this.connection,address:c});for(let[p,g]of Object.entries(u))s[p]=g;let l=new J.TransactionMessage({payerKey:this.feePayer,recentBlockhash:i?J.PublicKey.default.toBase58():await Tt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new J.VersionedTransaction(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(m.message.recentBlockhash=g),yt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:w}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:h,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:f}),signedTx:y[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(u=>u.builder.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var g;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),yt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((y,h)=>{a[h].find(w=>w.publicKey.equals(this.owner.publicKey))||y.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async y=>{let h=await this.connection.sendTransaction(y,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,y=[],h=async()=>{if(!f[b])return;let w=await this.connection.sendTransaction(f[b],{skipPreflight:p});y.push({txId:w,status:"sent",signedTx:f[b]}),m==null||m([...y]),b++,this.connection.onSignature(w,P=>{let A=y.findIndex(x=>x.txId===w);A>-1&&(y[A].status=P.err?"error":"success"),m==null||m([...y]),P.err||h()},"processed"),this.connection.getSignatureStatus(w)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let y=0;y<f.length;y+=1){let h=await this.connection.sendTransaction(f[y],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=Jt(u,["computeBudgetConfig"]),i=t?dn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>$(_({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let m=[...c,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new J.PublicKey(f));if(c.length<12&&qt({instructions:d,payer:this.feePayer,signers:g})||qt({instructions:m,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");qt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new J.Transaction().add(...i.instructions,...c)):s.push(new J.Transaction().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let m=[...new Set(c.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);qt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new J.Transaction().add(...i.instructions,...c)):s.push(new J.Transaction().add(...c)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Tt(this.connection);if(s.forEach(async(y,h)=>{y.recentBlockhash=f,a[h].length&&y.sign(...a[h])}),yt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(y,h)=>await(0,J.sendAndConfirmTransaction)(this.connection,y,a[h].find(w=>w.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:g}))),signedTxs:s};if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:g});w.push({txId:A,status:"sent",signedTx:y[h]}),d==null||d([...w]),h++,this.connection.onSignature(A,x=>{let B=w.findIndex(I=>I.txId===A);B>-1&&(w[B].status=x.err?"error":"success"),d==null||d([...w]),x.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:g});h.push(P)}return{txIds:h,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Jt(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=_(_({},this.cluster==="devnet"?{}:pn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let y of a)s[y]===void 0&&c.push(new J.PublicKey(y));let u=await Yn({connection:this.connection,address:c});for(let[y,h]of Object.entries(u))s[y]=h;let l=t?dn(t):{instructions:[],instructionTypes:[]},m=await Tt(this.connection),d=this.signers.reduce((y,h)=>$(_({},y),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(y=>{let h=[...f,y],w=t?[...l.instructions,...h]:h;if(f.length<12&&Wt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Wt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(y);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&&Wt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new J.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new J.VersionedTransaction(A))}else{let A=new J.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new J.VersionedTransaction(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[y]}}),f.length>0){let h=[...new Set(f.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>d[w]).filter(w=>w!==void 0);if(t&&Wt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let w=new J.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new J.VersionedTransaction(w))}else{let w=new J.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new J.VersionedTransaction(w))}g.push(h)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async y=>{var x;let{sequentially:h,onTxUpdate:w,recentBlockHash:P,skipPreflight:A=!0}=y||{};if(p.map(async(B,I)=>{g[I].length&&B.sign(g[I]),P&&(B.message.recentBlockhash=P)}),yt(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:B,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((R,E)=>{g[E].find(q=>q.publicKey.equals(this.owner.publicKey))||R.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async R=>{let E=await this.connection.sendTransaction(R,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:B,signature:E},"confirmed"),E})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let I=0,R=[],E=async()=>{if(!B[I])return;let q=await this.connection.sendTransaction(B[I],{skipPreflight:A});R.push({txId:q,status:"sent",signedTx:B[I]}),w==null||w([...R]),I++,this.connection.onSignature(q,ke=>{let ie=R.findIndex(xe=>xe.txId===q);ie>-1&&(R[ie].status=ke.err?"error":"success"),w==null||w([...R]),ke.err||E()},"processed"),this.connection.getSignatureStatus(q)};return E(),{txIds:[],signedTxs:B}}else{let I=[];for(let R=0;R<B.length;R+=1){let E=await this.connection.sendTransaction(B[R],{skipPreflight:A});I.push(E)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function Hn(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var ue=require("@solana/web3.js"),Bc=new ue.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ic=new ue.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Sc=new ue.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cc=new ue.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Kc=new ue.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Nc=new ue.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Rc=new ue.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Lc=new ue.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Fc=new ue.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Mc=new ue.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Oc=new ue.PublicKey("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ec=new ue.PublicKey("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Dc=new ue.PublicKey("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),vc=new ue.PublicKey("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),_c=new ue.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Vc=new ue.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),qc=new ue.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Wc=new ue.PublicKey("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Gc=new ue.PublicKey("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Uc=new ue.PublicKey("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var oi=require("@solana/web3.js");var si=require("@solana/spl-token");function Ve(r,e,t){return Le([r.toBuffer(),(t!=null?t:si.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new oi.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var Oe=se(require("bn.js")),Gt=1e4;function le(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=$(_({},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 Oe.default(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===Gt){let c=new Oe.default(o.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=jn(r.mul(new Oe.default(Gt)),new Oe.default(Gt-o.transferFeeBasisPoints)),u=new Oe.default(o.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,m=jn(l.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(Gt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=jn(r.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(Gt)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function wt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function jn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Oe.default(0))?t.add(new Oe.default(1)):t}var Zn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ut=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=be(t)}createTxBuilder(e){return this.scope.checkOwner(),new fn({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(Zn(e))}logInfo(...e){this.logger.info(Zn(e))}logAndCreateError(...e){let t=Zn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var qe=se(require("bn.js")),H=new qe.default(0),We=new qe.default(1),Ye=new qe.default(-1),Re=new qe.default(1).shln(64),Xt=new qe.default(1).shln(128),gn=Re.sub(We),kt=64,Qn=Xt.subn(1),Ae=-443636,Ce=-Ae,Je=new qe.default("4295048016"),et=new qe.default("79226673521066979257578248091"),$n=16,Jn="59543866431248",er="184467440737095516",tr="15793534762490258745",Ht=new qe.default(10).pow(new qe.default(6)),ai=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(ai||{}),Zo={[500]:10,[3e3]:60,[1e4]:200},Qo={version:6,liquidity:H,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:H,feeGrowthGlobalX64B:H,protocolFeesTokenA:H,protocolFeesTokenB:H,swapInAmountTokenA:H,swapOutAmountTokenB:H,swapInAmountTokenB:H,swapOutAmountTokenA:H,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},nr={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},$o=new qe.default("18446744073700000000");var V=se(require("bn.js"));function rr(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Jo(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function es(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function zt(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function bn(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function yn(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function xt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function ir(r,e){return xt(r,e)?null:bn(r,e)}function or(r,e){return xt(r,e)?null:yn(r,e)}var ci=Buffer.from("amm_config","utf8"),ui=Buffer.from("pool","utf8"),li=Buffer.from("pool_vault","utf8"),mi=Buffer.from("pool_reward_vault","utf8"),sr=Buffer.from("position","utf8"),di=Buffer.from("tick_array","utf8"),pi=Buffer.from("operation","utf8"),fi=Buffer.from("pool_tick_array_bitmap_extension","utf8");function ts(r,e){return Le([ci,rr(e)],r)}function ar(r,e,t,n){return Le([ui,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function wn(r,e,t){return Le([li,e.toBuffer(),t.toBuffer()],r)}function cr(r,e,t){return Le([mi,e.toBuffer(),t.toBuffer()],r)}function Q(r,e,t){return Le([di,e.toBuffer(),zt(t)],r)}function ut(r,e,t,n){return Le([sr,e.toBuffer(),zt(t),zt(n)],r)}function Fe(r,e){return Le([sr,e.toBuffer()],r)}function Yt(r){return Le([Buffer.from("metadata","utf8"),Pt.toBuffer(),r.toBuffer()],Pt)}function Bt(r){return Le([pi],r)}function Ge(r,e){return Le([fi,e.toBuffer()],r)}var nt=require("@solana/web3.js"),ce=se(require("bn.js"));var Bi=se(require("bn.js"));var wi=require("@solana/web3.js"),St=se(require("bn.js"));var N=require("@solana/buffer-layout"),ur=N.Layout,gi=N.Structure;var lr=N.UInt;var bi=N.u8,It=N.u16;var Pe=N.s32;var yi=N.seq;var Ee=N.blob;var jt=class extends ur{constructor(t,n,i){super(t,i);this.blob=Ee(t),this.signed=n}decode(t,n=0){let i=new St.default(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 St.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function me(r){return new lr(1,r)}function tt(r){return new lr(4,r)}function O(r){return new jt(8,!1,r)}function G(r){return new jt(16,!1,r)}function hi(r){return new jt(16,!0,r)}var hn=class extends ur{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 re(r){return new hn(Ee(32),e=>new wi.PublicKey(e),e=>e.toBuffer(),r)}function je(r){return new hn(bi(),ns,rs,r)}function ns(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function rs(r){return r?1:0}var mr=class extends gi{decode(e,t){return super.decode(e,t)}};function te(r,e,t){return new mr(r,e,t)}function ae(r,e,t){let n,i=typeof e=="number"?e:(0,St.isBN)(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=(0,St.isBN)(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 yi(r,i,t)}var An=14,Ze=class{static maxTickInTickarrayBitmap(e){return e*pe*lt}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(!X.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-X.tickCount(n):t+X.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*pe,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=ir(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=or(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-X.tickCount(n)}}}},Ct=class{static getBitmapOffset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Ze.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=Ze.maxTickInTickarrayBitmap(e),n=-t;if(Ce<=t)throw Error(`extensionTickBoundary check error: ${Ce}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);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:C.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=X.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}=Ze.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=C.mergeTickArrayBitmap(e).shln(lt-1-a),u=xt(512,c)?null:bn(512,c);if(u!==null){let l=t-u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=xt(512,c)?null:yn(512,c);if(u!==null){let l=t+u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-X.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Ze.maxTickInTickarrayBitmap(t),i=Math.floor(n/X.tickCount(t));return e<0&&n!=0&&(i=lt-i),i}};var is=te([Ee(8),me("bump"),It("index"),re(""),tt("protocolFeeRate"),tt("tradeFeeRate"),It("tickSpacing"),ae(O(),8,"")]),Ai=te([tt("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ae(G(),1,"")]),Pn=te([Ee(8),je("initialized"),re("poolId"),ae(Ai,1e3,"observations"),ae(G(),5,"")]),Pi=te([me("rewardState"),O("openTime"),O("endTime"),O("lastUpdateTime"),G("emissionsPerSecondX64"),O("rewardTotalEmissioned"),O("rewardClaimed"),re("tokenMint"),re("tokenVault"),re("creator"),G("rewardGrowthGlobalX64")]),Zt=te([Ee(8),me("bump"),re("ammConfig"),re("creator"),re("mintA"),re("mintB"),re("vaultA"),re("vaultB"),re("observationId"),me("mintDecimalsA"),me("mintDecimalsB"),It("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),Pe("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),O("protocolFeesTokenA"),O("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),me("status"),ae(me(),7,""),ae(Pi,3,"rewardInfos"),ae(O(),16,"tickArrayBitmap"),O("totalFeesTokenA"),O("totalFeesClaimedTokenA"),O("totalFeesTokenB"),O("totalFeesClaimedTokenB"),O("fundFeesTokenA"),O("fundFeesTokenB"),O("startTime"),ae(O(),15*4-3,"padding")]),Ti=te([G("growthInsideLastX64"),O("rewardAmountOwed")]),Qt=te([Ee(8),me("bump"),re("nftMint"),re("poolId"),Pe("tickLower"),Pe("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),O("tokenFeesOwedA"),O("tokenFeesOwedB"),ae(Ti,3,"rewardInfos"),ae(O(),8,"")]),os=te([Ee(8),me("bump"),re("poolId"),Pe("tickLowerIndex"),Pe("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),O("tokenFeesOwedA"),O("tokenFeesOwedB"),ae(G(),3,"rewardGrowthInside"),ae(O(),8,"")]),ki=te([Pe("tick"),hi("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ae(G(),3,"rewardGrowthsOutsideX64"),ae(tt(),13,"")]),Kt=te([Ee(8),re("poolId"),Pe("startTickIndex"),ae(ki,pe,"ticks"),me("initializedTickCount"),ae(me(),115,"")]),dr=te([Ee(329),ae(re(),100,"whitelistMints")]),pr=te([Ee(8),re("poolId"),ae(ae(O(),8),An,"positiveTickArrayBitmap"),ae(ae(O(),8),An,"negativeTickArrayBitmap")]);var xi=15,X=class{static async getTickArrays(e,t,n,i,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(i,o),l=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(xi/2));for(let p=0;p<l.length;p++){let{publicKey:g}=Q(t,n,l[p]);c.push(g)}let m=(await at(e,c)).map(p=>p!==null?Kt.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=$(_({},g),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=C.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/X.tickCount(t)),a=n?C.searchLowBitFromStart(i,o,s-1,1,t):C.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=pe-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<pe;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=Q(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=C.getTickArrayStartIndexByTick(i,o),c=Math.floor((i-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<pe;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=Q(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Ce)return!1;let n=C.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return pe*e}};var pe=60,lt=512,C=class{static getTickArrayAddressByTick(e,t,n,i){let o=C.getTickArrayStartIndexByTick(n,i),{publicKey:s}=Q(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=C.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=pe)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=X.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)*X.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*pe,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*pe,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*pe:e+t*pe}static mergeTickArrayBitmap(e){let t=new Bi.default(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*pe));return[...C.searchLowBitFromStart(e,t,s-1,o,n),...C.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return C.searchHightBitFromStart(e,t,0,lt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,i,o);for(let c of a){let{publicKey:u}=Q(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>C.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===i)break}let c=X.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>C.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===i)break}let c=X.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ae||e>Ce}static nextInitTick(e,t,n,i,o){if(X.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<pe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=pe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<pe;){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=M.getSqrtPriceX64FromTick(t),o=M.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=mt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=M.getSqrtPriceX64FromTick(o),a=M.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=M.getSqrtPriceX64FromTick(t),o=M.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=mt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=M.getSqrtPriceX64FromTick(o),a=M.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};var Ue=se(require("bn.js"));var Nt=class{static getfeeGrowthInside(e,t,n){let i=new Ue.default(0),o=new Ue.default(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 Ue.default(0),a=new Ue.default(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Re),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Re),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Re),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Re),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Re),d=u.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 c=s[a],u=t.rewardInfos[a],l=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Re),d=u.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 Ue.default(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 c=new Ue.default(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ue.default(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 c=new Ue.default(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,y,h,w;let a=M.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=M.getSqrtPriceX64FromTick(t.tickLower),u=M.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=U.getAmountsFromLiquidity(a,c,u,n,o),[d,p]=[le(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),le(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,f]=[le(new Ue.default(new S(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),le(new Ue.default(new S(m.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}};var fr=require("@solana/spl-token"),Te=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=dt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,u,o);return a.push(...d),{expectedAmountOut:m.mul(Ye),remainingAccounts:a,executionPrice:p,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=Q(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=dt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ye),u,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Te.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Ct.checkTickArrayIsInit(X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):C.checkTickArrayIsInitialized(C.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Q(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Q(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/X.tickCount(e.tickSpacing)),i=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.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=X.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Ze.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Ct.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>Ce)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=$(_({},m),{perSecond:D.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new nt.PublicKey(d)});if(p.tokenMint.equals(nt.PublicKey.default))continue;if(n<=p.openTime.toNumber()||i.eq(H)){s.push(p);continue}let g=new ce.default(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),b=D.mulDivFloor(f,p.emissionsPerSecondX64,i),y=p.rewardGrowthGlobalX64.add(b),h=D.mulDivFloor(f,p.emissionsPerSecondX64,Re),w=p.rewardTotalEmissioned.add(h);s.push($(_({},p),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Ze.maxTickInTickarrayBitmap(e),n=-t;return t>Ce&&(t=X.getArrayStartIndex(Ce,e)+X.tickCount(e)),n<Ae&&(n=X.getArrayStartIndex(Ae,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/X.tickCount(t)*lt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await zn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=pr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let c of t){let u=C.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=C.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=Q(c.programId,c.id,m);o.push({pubkey:d}),i[d.toString()]=c.id}}let s=await zn(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=i[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Kt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=$(_({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(Fe(p,d).publicKey);let l=await at(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Qt.decode(d.data),g=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===g);if(f===void 0)continue;let b=f.state,y=C._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:w,amountB:P}=U.getAmountsFromLiquidity(b.sqrtPriceX64,y.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(y.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:y.price,priceUpper:h.price,amountA:w,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(I=>$(_({},I),{pendingReward:new ce.default(0)})),leverage:A,tokenFeeAmountA:new ce.default(0),tokenFeeAmountB:new ce.default(0)}];let x=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await at(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let y=d[f].toString();g[y]=Kt.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let y of b){let h=`${f.programId.toString()}-${f.id.toString()}-${y.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${y.tickUpper}`,P=g[m[h].toString()],A=g[m[w].toString()],x=P.ticks[C.getTickOffsetInArray(y.tickLower,f.tickSpacing)],B=A.ticks[C.getTickOffsetInArray(y.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:R}=await Nt.GetPositionFees(f,y,x,B),E=await Nt.GetPositionRewards(f,y,x,B);y.tokenFeeAmountA=I.gte(new ce.default(0))?I:new ce.default(0),y.tokenFeeAmountB=R.gte(new ce.default(0))?R:new ce.default(0);for(let q=0;q<E.length;q++)y.rewardInfos[q].pendingReward=E[q].gte(new ce.default(0))?E[q]:new ce.default(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new S(0)}){var E;let c,u=n.toBase58()===e.mintA.address,[l,m]=u?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=u?Je.add(new ce.default(1)):et.sub(new ce.default(1)):c=M.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=le(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:b}=Te.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((E=d.fee)!=null?E:H),c),y=le(p,m,i,!1),h=M.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),w=u?h:new S(1).div(h),P=p.mul(new ce.default(Math.floor((1-s)*1e10))).div(new ce.default(1e10)),A=le(P,m,i,!1),x=u?e.currentPrice:new S(1).div(e.currentPrice),B=new S(w).sub(x).abs(),I=x,R=new bt(new S(B).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:y,minAmountOut:A,expirationTime:wt(d.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:R,fee:b,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[c,u]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new $e($(_({},c),{mint:c.address,isToken2022:c.programId===fr.TOKEN_2022_PROGRAM_ID.toBase58()})),new $e($(_({},u),{mint:u.address,isToken2022:u.programId===fr.TOKEN_2022_PROGRAM_ID.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:b,executionPrice:y,priceImpact:h,fee:w,remainingAccounts:P}=await Te.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new nt.PublicKey(c.address),amountIn:n,slippage:o,epochInfo:s}),A=$(_({},d),{amount:new Ie(l,d.amount),fee:d.fee===void 0?void 0:new Ie(l,d.fee)}),x=$(_({},p),{amount:new Ie(m,p.amount),fee:p.fee===void 0?void 0:new Ie(m,p.fee)}),B=$(_({},g),{amount:new Ie(m,g.amount),fee:g.fee===void 0?void 0:new Ie(m,g.fee)}),I=new _e({baseToken:l,denominator:new ce.default(10).pow(new ce.default(20+l.decimals)),quoteToken:m,numerator:b.mul(new S(10**(20+m.decimals))).toFixed(0)}),R=new _e({baseToken:l,denominator:new ce.default(10).pow(new ce.default(20+l.decimals)),quoteToken:m,numerator:y.mul(new S(10**(20+m.decimals))).toFixed(0)}),E=new Ie(l,w);return{realAmountIn:A,amountOut:x,minAmountOut:B,expirationTime:f,currentPrice:I,executionPrice:R,priceImpact:h,fee:E,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,b;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,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:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[vn(e.mintA.address).toString()],d=i[vn(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=M.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),b=M.getSqrtPriceX64FromTick(s),y=M.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(f,b,y,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,b,y,o,!1,!1,0),x=new S(h.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(d.value)),B=new S(P.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(A.toString()).div(new S(10).pow(g)).mul(d.value)),I=B.div(x.add(B)).div(B),E=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),q=3600*24*365,ke=e.rewardDefaultInfos.map(ie=>{var Z,Pr;let xe=ie.mint.decimals,oe=i[ie.mint.address];return c<((Z=ie.startTime)!=null?Z:0)||c>((Pr=ie.endTime)!=null?Pr:0)||!ie.perSecond||!oe||xe===void 0?0:new S(oe.value).mul(new S(ie.perSecond).mul(q)).div(new S(10).pow(xe)).mul(I).mul(100).toNumber()});return{feeApr:E,rewardsApr:ke,apr:E+ke.reduce((ie,xe)=>ie+xe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var y,h;let l=M.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=M.getSqrtPriceX64FromTick(n),d=M.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=le(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,c,!u),f=new ce.default(new S(g.amount.sub((h=g.fee)!=null?h:H).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?U.getLiquidityFromTokenAmountA(m,d,f,!a):new ce.default(0);else if(l.lte(d)){let w=U.getLiquidityFromTokenAmountA(l,d,f,!a),P=U.getLiquidityFromTokenAmountB(m,l,f);b=t?w:P}else b=t?new ce.default(0):U.getLiquidityFromTokenAmountB(m,d,f);return Te.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,y,h,w;let c=M.getSqrtPriceX64FromTick(n),u=M.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(M.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,p]=[le(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),le(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,f]=[le(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),le(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new nt.PublicKey(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=Zt.decode(i.data),s=Ge(e,new nt.PublicKey(n.id)).publicKey,a=await Te.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return $(_({},o),{id:new nt.PublicKey(n.id),programId:new nt.PublicKey(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:$(_({},n.config),{id:new nt.PublicKey(n.config.id),fundOwner:""}),currentPrice:new S(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function ss({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:c}){var w,P,A,x;let[u,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=M.priceToSqrtPriceX64(new S(r.price),r.mintA.decimals,r.mintB.decimals),g=M.getSqrtPriceX64FromTick(u),f=M.getSqrtPriceX64FromTick(l),[b,y]=[le(m,(w=r.mintA.extensions)==null?void 0:w.feeConfig,a,!c),le(d,(P=r.mintB.extensions)==null?void 0:P.feeConfig,a,!c)],h=U.getLiquidityFromTokenAmounts(p,g,f,b.amount.sub((A=b.fee)!=null?A:H),y.amount.sub((x=y.fee)!=null?x:H));return U.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:h,slippage:o,add:s,epochInfo:a,amountAddFee:!c})}var D=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(H)||(o=o.add(We)),o}static mulDivFloor(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).add(n.sub(We)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new V.default(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Xt).sub(t).mod(Xt)}};function ye(r,e){return gr(r.mul(e),64,256)}function as(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function gr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var M=class{static sqrtPriceX64ToPrice(e,t,n){return D.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return D.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))return e;let o=t.shln(kt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?D.mulDivCeil(s,e,a):D.mulDivRoundingUp(s,We,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 D.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(kt);if(i)return e.add(o.div(t));{let s=D.mulDivRoundingUp(o,We,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<Ae||e>Ce)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new V.default("18445821805675395072"):new V.default("18446744073709551616");return(t&2)!=0&&(n=ye(n,new V.default("18444899583751176192"))),(t&4)!=0&&(n=ye(n,new V.default("18443055278223355904"))),(t&8)!=0&&(n=ye(n,new V.default("18439367220385607680"))),(t&16)!=0&&(n=ye(n,new V.default("18431993317065453568"))),(t&32)!=0&&(n=ye(n,new V.default("18417254355718170624"))),(t&64)!=0&&(n=ye(n,new V.default("18387811781193609216"))),(t&128)!=0&&(n=ye(n,new V.default("18329067761203558400"))),(t&256)!=0&&(n=ye(n,new V.default("18212142134806163456"))),(t&512)!=0&&(n=ye(n,new V.default("17980523815641700352"))),(t&1024)!=0&&(n=ye(n,new V.default("17526086738831433728"))),(t&2048)!=0&&(n=ye(n,new V.default("16651378430235570176"))),(t&4096)!=0&&(n=ye(n,new V.default("15030750278694412288"))),(t&8192)!=0&&(n=ye(n,new V.default("12247334978884435968"))),(t&16384)!=0&&(n=ye(n,new V.default("8131365268886854656"))),(t&32768)!=0&&(n=ye(n,new V.default("3584323654725218816"))),(t&65536)!=0&&(n=ye(n,new V.default("696457651848324352"))),(t&131072)!=0&&(n=ye(n,new V.default("26294789957507116"))),(t&262144)!=0&&(n=ye(n,new V.default("37481735321082"))),e>0&&(n=Qn.div(n)),n}static getTickFromPrice(e,t,n){return M.getTickFromSqrtPriceX64(M.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(et)||e.lt(Je))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new V.default(t-64),i=as(n,32,128),o=new V.default("8000000000000000","hex"),s=0,a=new V.default(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new V.default(0))&&s<$n;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new V.default(Jn)),d=gr(m.sub(new V.default(er)),64,128).toNumber(),p=gr(m.add(new V.default(tr)),64,128).toNumber();return d==p?d:M.getSqrtPriceX64FromTick(p).lte(e)?p:d}},mt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=M.getTickFromSqrtPriceX64(M.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=mt.getTickWithPriceAndTickspacing(e,t,n,i),s=M.getSqrtPriceX64FromTick(o);return M.sqrtPriceX64ToPrice(s,n,i)}},U=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(H))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(kt),s=t.sub(e);return i?D.mulDivRoundingUp(D.mulDivCeil(o,s,t),We,e):D.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(H))throw new Error("sqrtPriceX64A must greater than 0");return i?D.mulDivCeil(n,t.sub(e),Re):D.mulDivFloor(n,t.sub(e),Re)}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?D.mulDivRoundingUp(a,We,gn):a.shrn(kt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),D.mulDivFloor(n,gn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,i,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new V.default(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,i,o),a=U.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new V.default(0),amountB:U.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:c,amountB:u}=U.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new V.default(new S(c.toString()).mul(l).toFixed(0)),d=new V.default(new S(u.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:c}){var h,w,P,A;let u=M.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=M.getSqrtPriceX64FromTick(t),m=M.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=U.getAmountsFromLiquidity(u,l,m,i,s),[g,f]=[le(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),le(p.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,y]=[le(new V.default(new S(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),le(new V.default(new S(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:b,amountSlippageB:y,expirationTime:wt(g.expirationTime,f.expirationTime)}}},dt=class{static swapCompute(e,t,n,i,o,s,a,c,u,l,m,d,p,g){if(d.eq(H))throw new Error("amountSpecified must not be 0");if(g||(g=s?Je.add(We):et.sub(We)),s){if(g.lt(Je))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(et))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(H),b={amountSpecifiedRemaining:d,amountCalculated:H,sqrtPriceX64:m,tick:u>p?Math.min(p+X.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new V.default(0)},y=p,h=n[p],w=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(H)&&!b.sqrtPriceX64.eq(g);){if(w>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=b.sqrtPriceX64;let x=C.nextInitTick(h,b.tick,l,s,P),B=x||null,I=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let E=Te.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},y,s);if(!E.isExist)throw Error("swapCompute LiquidityInsufficient");y=E.nextStartIndex;let{publicKey:q}=Q(e,t,y);I=q,h=n[y],B=C.firstInitializedTick(h,s)}A.tickNext=B.tick,A.initialized=B.liquidityGross.gtn(0),p!==y&&I&&(b.accounts.push(I),p=y),A.tickNext<Ae?A.tickNext=Ae:A.tickNext>Ce&&(A.tickNext=Ce),A.sqrtPriceNextX64=M.getSqrtPriceX64FromTick(A.tickNext);let R;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?R=g:R=A.sqrtPriceNextX64,[b.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=dt.swapStepCompute(b.sqrtPriceX64,R,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(A.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),b.amountCalculated=b.amountCalculated.sub(A.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(A.amountOut),b.amountCalculated=b.amountCalculated.add(A.amountIn.add(A.feeAmount))),b.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let E=B.liquidityNet;s&&(E=E.mul(Ye)),b.liquidity=U.addDelta(b.liquidity,E)}P=A.tickNext!=b.tick&&!s&&h.startTickIndex===A.tickNext,b.tick=s?A.tickNext-1:A.tickNext}else if(b.sqrtPriceX64!=A.sqrtPriceStartX64){let E=M.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=E!=b.tick&&!s&&h.startTickIndex===E,b.tick=E}++w}try{let{nextStartIndex:A,isExist:x}=X.nextInitializedTickArray(b.tick,l,s,i,o);x&&p!==A&&(b.accounts.push(Q(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new V.default(0),amountIn:new V.default(0),amountOut:new V.default(0),feeAmount:new V.default(0)},a=e.gte(t),c=i.gte(H);if(c){let l=D.mulDivFloor(i,Ht.sub(new V.default(o.toString())),Ht);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=M.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ye).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=M.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ye),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(i.mul(Ye))&&(s.amountOut=i.mul(Ye)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=D.mulDivCeil(s.amountIn,new V.default(o),Ht.sub(new V.default(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var j=require("@solana/spl-token"),k=require("@solana/web3.js"),Ar=se(require("bn.js"));var Bn=require("@solana/web3.js"),Ri=require("@solana/spl-token"),ps=se(require("bn.js"));var cs=te([re("mint"),re("owner"),O("amount"),tt("delegateOption"),re("delegate"),me("state"),tt("isNativeOption"),O("isNative"),O("delegatedAmount"),tt("closeAuthorityOption"),re("closeAuthority")]);function us(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function br(r,...e){if(!us(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 yr(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 Ii(r,e){br(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var kn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Xe=(r,e)=>r<<32-e|r>>>e;var El=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ls(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function wr(r){return typeof r=="string"&&(r=ls(r)),br(r),r}var Tn=class{clone(){return this._cloneInto()}},Dl={}.toString;function Si(r){let e=n=>r().update(wr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ms(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),c=n?4:0,u=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+u,a,n)}var Ci=(r,e,t)=>r&e^~r&t,Ki=(r,e,t)=>r&e^r&t^e&t,xn=class extends Tn{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=kn(this.buffer)}update(e){yr(this);let{view:t,buffer:n,blockLen:i}=this;e=wr(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=kn(e);for(;i<=o-s;s+=i)this.process(c,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){yr(this),Ii(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;ms(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=kn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<u;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 ds=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]),pt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ft=new Uint32Array(64),hr=class extends xn{constructor(){super(64,32,8,!1),this.A=pt[0]|0,this.B=pt[1]|0,this.C=pt[2]|0,this.D=pt[3]|0,this.E=pt[4]|0,this.F=pt[5]|0,this.G=pt[6]|0,this.H=pt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:c}=this;return[e,t,n,i,o,s,a,c]}set(e,t,n,i,o,s,a,c){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=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)ft[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=ft[m-15],p=ft[m-2],g=Xe(d,7)^Xe(d,18)^d>>>3,f=Xe(p,17)^Xe(p,19)^p>>>10;ft[m]=f+ft[m-7]+g+ft[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=Xe(a,6)^Xe(a,11)^Xe(a,25),p=l+d+Ci(a,c,u)+ds[m]+ft[m]|0,f=(Xe(n,2)^Xe(n,13)^Xe(n,22))+Ki(n,i,o)|0;l=u,u=c,c=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,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,c,u,l)}roundClean(){ft.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ni=Si(()=>new hr);var Ql=be("Raydium_Util");function Li({fromPublicKey:r,programId:e=Ri.TOKEN_PROGRAM_ID}){let t=Bn.Keypair.generate().publicKey.toBase58().slice(0,32);return{publicKey:fs(r,t,e),seed:t}}function fs(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Ni(n);return new Bn.PublicKey(i)}var Fi=be("Raydium_Clmm"),He={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]},fe=class{static createPoolInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g){let f=te([G("sqrtPriceX64"),O("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,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:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1}],y=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},y);let h=Buffer.from([...He.createPool,...y]);return new k.TransactionInstruction({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,m=Li({fromPublicKey:i,programId:n}),[d,p]=[new k.PublicKey(o.address),new k.PublicKey(s.address)],g=[k.SystemProgram.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Pn.span),space:Pn.span,programId:n})],{publicKey:f}=ar(n,a,d,p),{publicKey:b}=wn(n,f,d),{publicKey:y}=wn(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new k.PublicKey(o.programId||j.TOKEN_PROGRAM_ID),p,y,new k.PublicKey(s.programId||j.TOKEN_PROGRAM_ID),Ge(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[de.CreateAccount,de.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,x,B,I,R,E){let q=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),G("liquidity"),O("amountMaxA"),O("amountMaxB"),je("withMetadata"),me("optionBaseFlag"),je("baseFlag")]),ke=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ie=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,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:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...ke],xe=Buffer.alloc(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:x,amountMaxA:B,amountMaxB:I,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},xe);let oe=Buffer.from([...He.openPosition,...xe]);return new k.TransactionInstruction({keys:ie,programId:e,data:oe})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],g;if(l)g=new k.PublicKey((await l(1))[0]);else{let I=k.Keypair.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Q(d,p,f),{publicKey:h}=Q(d,p,b),{publicKey:w}=Ve(n.wallet,g,j.TOKEN_PROGRAM_ID),{publicKey:P}=Yt(g),{publicKey:A}=Fe(d,g),{publicKey:x}=ut(d,p,i,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,w,P,x,y,h,A,n.tokenAccountA,n.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),i,o,f,b,s,a,c,u);return{signers:m,instructions:[B],instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],g;if(l)g=new k.PublicKey((await l(1))[0]);else{let I=k.Keypair.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Q(d,p,f),{publicKey:h}=Q(d,p,b),{publicKey:w}=Ve(n.wallet,g,j.TOKEN_PROGRAM_ID),{publicKey:P}=Yt(g),{publicKey:A}=Fe(d,g),{publicKey:x}=ut(d,p,i,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,w,P,x,y,h,A,n.tokenAccountA,n.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),i,o,f,b,u,s,a,c,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ge(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:x},instructions:[B],signers:m,instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,x,B,I,R,E){let q=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),G("liquidity"),O("amountMaxA"),O("amountMaxB"),je("withMetadata"),me("optionBaseFlag"),je("baseFlag")]),ke=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ie=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,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:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...ke],xe=Buffer.alloc(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new Ar.default(0),amountMaxA:B==="MintA"?I:R,amountMaxB:B==="MintA"?R:I,withMetadata:x==="create",baseFlag:B==="MintA",optionBaseFlag:1},xe);let oe=Buffer.from([...He.openPosition,...xe]);return new k.TransactionInstruction({keys:ie,programId:e,data:oe})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new k.PublicKey((await l(1))[0]);else{let I=k.Keypair.generate();d.push(I),m=I.publicKey}let[p,g]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Q(p,g,f),{publicKey:h}=Q(p,g,b),{publicKey:w}=Ve(n.wallet,m,j.TOKEN_PROGRAM_ID),{publicKey:P}=Yt(m),{publicKey:A}=Fe(p,m),{publicKey:x}=ut(p,g,i,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,w,P,x,y,h,A,n.tokenAccountA,n.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(t.mintA.address),new k.PublicKey(t.mintB.address),i,o,f,b,s,a,c,u,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ge(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:x},instructions:[B],signers:d,instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=te([]),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:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...He.closePosition,...c]);return new k.TransactionInstruction({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new k.PublicKey(e.programId),{publicKey:s}=Ve(n.wallet,i.nftMint,j.TOKEN_PROGRAM_ID),{publicKey:a}=Fe(o,i.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[de.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=te([G("liquidity"),O("amountMaxA"),O("amountMaxB"),me("optionBaseFlag"),je("baseFlag")]),P=[...h?[{pubkey:h,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],x=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:b,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},x);let B=Buffer.from([...He.increaseLiquidity,...x]);return new k.TransactionInstruction({keys:A,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Q(c,u,l),{publicKey:p}=Q(c,u,m),{publicKey:g}=Ve(i.wallet,n.nftMint,j.TOKEN_PROGRAM_ID),{publicKey:f}=Fe(c,n.nftMint),{publicKey:b}=ut(c,u,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),o,s,a,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ge(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},signers:[],instructions:[y],instructionTypes:[de.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Q(c,u,l),{publicKey:p}=Q(c,u,m),{publicKey:g}=Ve(i.wallet,n.nftMint,j.TOKEN_PROGRAM_ID),{publicKey:f}=Fe(c,n.nftMint),{publicKey:b}=ut(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),o,s,a,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ge(c,u).publicKey:void 0)],signers:[],instructionTypes:[de.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=te([G("liquidity"),O("amountMaxA"),O("amountMaxB"),me("optionBaseFlag"),je("baseFlag")]),P=[...h?[{pubkey:h,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],x=Buffer.alloc(w.span);w.encode({liquidity:new Ar.default(0),amountMaxA:f==="MintA"?b:y,amountMaxB:f==="MintA"?y:b,baseFlag:f==="MintA",optionBaseFlag:1},x);let B=Buffer.from([...He.increaseLiquidity,...x]);return new k.TransactionInstruction({keys:A,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w){let P=te([G("liquidity"),O("amountMinA"),O("amountMinB")]),A=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],B=Buffer.alloc(P.span);P.encode({liquidity:b,amountMinA:y,amountMinB:h},B);let I=Buffer.from([...He.decreaseLiquidity,...B]);return new k.TransactionInstruction({keys:x,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Q(u,l,m),{publicKey:g}=Q(u,l,d),{publicKey:f}=Ve(i.wallet,n.nftMint,c),{publicKey:b}=Fe(u,n.nftMint),{publicKey:y}=ut(u,l,n.tickLower,n.tickUpper),h=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)h.push({poolRewardVault:new k.PublicKey(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new k.PublicKey(e.rewardDefaultInfos[P].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,i.wallet,f,b,l,y,p,g,i.tokenAccountA,i.tokenAccountB,new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B),new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address),h,o,s,a,Te.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ge(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:b,protocolPosition:y},signers:[],instructions:w,instructionTypes:[de.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y){let h=te([O("amount"),O("otherAmountThreshold"),G("sqrtPriceLimitX64"),je("isBaseInput")]),w=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,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:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],A=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:b},A);let x=Buffer.from([...He.swap,...A]);return new k.TransactionInstruction({keys:P,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],[m,d]=[new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B)],[p,g]=[new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new k.PublicKey(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:g,f?g:p,c,m,o,s,a,!0,Ge(u,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[de.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=te([O("openTime"),O("endTime"),G("emissionsPerSecondX64")]),g=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:k.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:he(l),endTime:he(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...He.initReward,...f]);return new k.TransactionInstruction({keys:g,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],a=cr(o,s,i.mint).publicKey,c=Bt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new k.PublicKey(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[de.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=te([me("rewardIndex"),G("emissionsPerSecondX64"),O("openTime"),O("endTime")]),g=[{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:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:he(l),endTime:he(m)},f);let b=Buffer.from([...He.setRewardEmissions,...f]);return new k.TransactionInstruction({keys:g,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new k.PublicKey(t.rewardInfos[d].vault),u=new k.PublicKey(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&Fi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Bt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new k.PublicKey(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[de.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let c=te([me("rewardIndex")]),u=[{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:j.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:j.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...He.collectReward,...l]);return new k.TransactionInstruction({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new k.PublicKey(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Fi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[de.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new k.PublicKey(e.programId),new k.PublicKey(e.id)],[m,d]=[new k.PublicKey(t.vault.A),new k.PublicKey(t.vault.B)],[p,g]=[new k.PublicKey(e.mintA.address),new k.PublicKey(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new k.PublicKey(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:g,f?g:p,c,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[de.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};var Me=se(require("bn.js")),In=class extends Ut{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||W.PublicKey.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,g,f]=new Me.default(new W.PublicKey(i.address).toBuffer()).gt(new Me.default(new W.PublicKey(o.address).toBuffer()))?[o,i,new S(1).div(a)]:[i,o,a],b=M.priceToSqrtPriceX64(f,p.decimals,g.decimals),y=await fe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:g,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return d.addInstruction(y),d.addCustomComputeBudget(u),d.versionBuild({txVersion:m,extInfo:{address:$(_({},y.address),{programId:t.toString(),id:y.address.poolId.toString(),mintA:p,mintB:g,openTime:c.toString(),vault:{A:y.address.mintAVault.toString(),B:y.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:_({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:y.address.poolId.toString(),mintA:p,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},nr),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,y=null,h=n.useSOLBalance&&e.mintA.address===ne.toString(),w=n.useSOLBalance&&e.mintB.address===ne.toString(),[P,A]=s==="MintA"?[a,c]:[c,a],{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(B||{});let{account:I,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||A.isZero()?{payer:this.scope.ownerPubKey,amount:A}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:l});I&&(y=I),f.addInstruction(R||{}),(!b||!y)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let E=t||await this.getClmmPoolKeys(e.id),q=await fe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:E,ownerInfo:$(_({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(q),f.addCustomComputeBudget(p),f.versionBuild({txVersion:g,extInfo:q.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),f=null,b=null,y=n.useSOLBalance&&e.mintA.address===ne.toBase58(),h=n.useSOLBalance&&e.mintB.address===ne.toBase58(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w&&(f=w),g.addInstruction(P||{});let{account:A,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});A&&(b=A),g.addInstruction(x||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),I=await fe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return g.addInstruction(I),g.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W.PublicKey(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),x=fe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===ne.toString(),b=a.useSOLBalance&&t.mintB.address===ne.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W.PublicKey(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),x=fe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===ne.toString(),g=i.useSOLBalance&&t.mintB.address===ne.toString(),f,b,{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W.PublicKey(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});f=y,h&&d.addInstruction(h);let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W.PublicKey(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});b=w,P&&d.addInstruction(P);let A=[];for(let R of t.rewardDefaultInfos){let E=i.useSOLBalance&&R.mint.address===ne.toString(),q;if(R.mint.address===t.mintA.address)q=f;else if(R.mint.address===t.mintB.address)q=b;else{let{account:ke,instructionParams:ie}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(R.mint.programId),mint:new W.PublicKey(R.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!E,associatedOnly:E?!1:c,checkCreateATAOwner:u});q=ke,ie&&d.addInstruction(ie)}A.push(q)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=await this.getClmmPoolKeys(t.id),B=await fe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:A},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[de.ClmmDecreasePosition]});let I=_({},B.address);if(i.closePosition){let R=await fe.closePositionInstructions({poolInfo:t,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),I=_(_({},I),R.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=fe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===ne.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(n.mint.address),mint:new W.PublicKey(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),g=fe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new W.PublicKey(n.mint.programId),mint:new W.PublicKey(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let c=this.createTxBuilder(),u={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===ne.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(l.mint.programId),mint:new W.PublicKey(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});g&&c.addInstruction(g),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=fe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new W.PublicKey(l.mint.programId),mint:new W.PublicKey(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});u=_(_({},u),b.address),c.addInstruction(b)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(ne),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=fe.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let c=this.createTxBuilder(),u={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===ne.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(l.mint.programId),mint:new W.PublicKey(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me.default(new S(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});p&&c.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id),f=fe.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new W.PublicKey(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});c.addInstruction(f),u=_(_({},u),f.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(ne),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=fe.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(ne),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),g=fe.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(g),a=_(_({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===ne.toBase58(),p=s.useSOLBalance&&e.mintB.address===ne.toBase58(),g;!o||o.equals(new S(0))?g=t.toString()===e.mintA.address?Je.add(new Me.default(1)):et.sub(new Me.default(1)):g=M.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W.PublicKey(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:c,checkCreateATAOwner:u});f=h,w&&m.addInstruction(w)}let b;if(!b){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W.PublicKey(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:u});b=h,w&&m.addInstruction(w)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id);return m.addInstruction(fe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new W.PublicKey(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let m of this.scope.account.tokenAccountRawInfos)i?Ve(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(u[m.accountInfo.mint.toString()]=m.pubkey):u[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(P=>!P.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===ne.toString(),g=n.useSOLBalance&&d.mintB.address===ne.toString(),f=u[d.mintA.address];if(!f){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new W.PublicKey(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=w,P&&l.addInstruction(P)}let b=u[d.mintB.address];if(!b){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new W.PublicKey(d.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:i,checkCreateATAOwner:o});b=w,P&&l.addInstruction(P)}u[d.mintA.address]=f,u[d.mintB.address]=b;let y=[];for(let w of d.rewardDefaultInfos){let P=n.useSOLBalance&&w.mint.address===ne.toString(),A=u[w.mint.address];if(!A){let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W.PublicKey(w.mint.programId),mint:new W.PublicKey(w.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:i});A=x,B&&l.addInstruction(B)}u[w.mint.address]=A,y.push(A)}let h=await this.getClmmPoolKeys(d.id);for(let w of t[m.id]){let P=fe.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:y},liquidity:new Me.default(0),amountMinA:new Me.default(0),amountMinB:new Me.default(0)});l.addInstruction(P)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Bt(e).publicKey);return t?dr.decode(t.data).whitelistMints.filter(i=>!i.equals(W.PublicKey.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Me.default(1))).map(s=>Fe(new W.PublicKey(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=Qt.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new W.PublicKey(e)),n=Zt.decode(t.data),i=M.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return $(_({},n),{currentPrice:i})}};0&&(module.exports={AMM_CONFIG_SEED,AmmConfigLayout,BIT_PRECISION,Clmm,ClmmInstrument,EXTENSION_TICKARRAY_BITMAP_SIZE,FEE_RATE_DENOMINATOR,FETCH_TICKARRAY_COUNT,Fee,LOG_B_2_X32,LOG_B_P_ERR_MARGIN_LOWER_X64,LOG_B_P_ERR_MARGIN_UPPER_X64,LiquidityMath,MAX_SQRT_PRICE_X64,MAX_TICK,MIN_SQRT_PRICE_X64,MIN_TICK,MathUtil,MaxU64,MaxUint128,NEGATIVE_ONE,ONE,OPERATION_SEED,ObservationInfoLayout,ObservationLayout,OperationLayout,POOL_REWARD_VAULT_SEED,POOL_SEED,POOL_TICK_ARRAY_BITMAP_SEED,POOL_VAULT_SEED,POSITION_SEED,PoolInfoLayout,PoolUtils,PositionInfoLayout,PositionRewardInfoLayout,PositionUtils,ProtocolPositionLayout,Q128,Q64,RewardInfo,SqrtPriceMath,SwapMath,TICK_ARRAY_BITMAP_SIZE,TICK_ARRAY_SEED,TICK_ARRAY_SIZE,TICK_SPACINGS,TickArrayBitmap,TickArrayBitmapExtensionLayout,TickArrayBitmapExtensionUtils,TickArrayLayout,TickLayout,TickMath,TickQuery,TickUtils,U64Resolution,U64_IGNORE_RANGE,ZERO,getLiquidityFromAmounts,getPdaAmmConfigId,getPdaExBitmapAccount,getPdaMetadataKey,getPdaOperationAccount,getPdaPersonalPositionAddress,getPdaPoolId,getPdaPoolRewardVaulId,getPdaPoolVaultId,getPdaProtocolPositionAddress,getPdaTickArrayAddress,i16ToBytes,i32ToBytes,isZero,leadingZeros,leastSignificantBit,mockCreatePoolInfo,mockV3CreatePoolInfo,mostSignificantBit,trailingZeros,u16ToBytes,u32ToBytes});
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.js.map