@raydium-io/raydium-sdk-v2 0.1.29-alpha → 0.1.30-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 (94) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +1 -1
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/layout.d.ts +1 -1
  41. package/lib/raydium/cpmm/type.d.ts +1 -1
  42. package/lib/raydium/farm/config.d.ts +1 -1
  43. package/lib/raydium/farm/farm.d.ts +3 -3
  44. package/lib/raydium/farm/index.d.ts +1 -1
  45. package/lib/raydium/farm/instruction.d.ts +1 -1
  46. package/lib/raydium/farm/layout.d.ts +1 -1
  47. package/lib/raydium/farm/type.d.ts +1 -1
  48. package/lib/raydium/farm/util.d.ts +1 -1
  49. package/lib/raydium/ido/ido.d.ts +3 -3
  50. package/lib/raydium/ido/index.d.ts +3 -3
  51. package/lib/raydium/ido/instruction.d.ts +1 -1
  52. package/lib/raydium/ido/type.d.ts +1 -1
  53. package/lib/raydium/index.d.ts +3 -3
  54. package/lib/raydium/index.js +1 -1
  55. package/lib/raydium/index.js.map +1 -1
  56. package/lib/raydium/index.mjs +1 -1
  57. package/lib/raydium/index.mjs.map +1 -1
  58. package/lib/raydium/liquidity/index.d.ts +1 -1
  59. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  60. package/lib/raydium/liquidity/layout.d.ts +6 -6
  61. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  62. package/lib/raydium/liquidity/liquidity.js +1 -1
  63. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  64. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  65. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  66. package/lib/raydium/liquidity/type.d.ts +6 -2
  67. package/lib/raydium/liquidity/type.js.map +1 -1
  68. package/lib/raydium/liquidity/utils.d.ts +1 -1
  69. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  70. package/lib/raydium/marketV2/index.d.ts +3 -3
  71. package/lib/raydium/moduleBase.d.ts +3 -3
  72. package/lib/raydium/raydium.d.ts +3 -3
  73. package/lib/raydium/raydium.js +1 -1
  74. package/lib/raydium/raydium.js.map +1 -1
  75. package/lib/raydium/raydium.mjs +1 -1
  76. package/lib/raydium/raydium.mjs.map +1 -1
  77. package/lib/raydium/token/constant.d.ts +1 -1
  78. package/lib/raydium/token/index.d.ts +1 -1
  79. package/lib/raydium/token/token.d.ts +3 -3
  80. package/lib/raydium/token/type.d.ts +1 -1
  81. package/lib/raydium/token/utils.d.ts +1 -1
  82. package/lib/raydium/tradeV2/index.d.ts +2 -2
  83. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  84. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  85. package/lib/raydium/tradeV2/type.d.ts +2 -2
  86. package/lib/raydium/type.d.ts +1 -1
  87. package/lib/raydium/utils1216/index.d.ts +3 -3
  88. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  89. package/lib/{raydium-1e9cad89.d.ts → raydium-8871c9e8.d.ts} +4 -4
  90. package/lib/{type-b95eb35d.d.ts → type-0de39dab.d.ts} +1 -1
  91. package/package.json +1 -1
  92. package/src/raydium/liquidity/liquidity.ts +76 -30
  93. package/src/raydium/liquidity/type.ts +5 -1
  94. package/lib/{type-60acc172.d.ts → type-2596119f.d.ts} +5 -5
@@ -1,3 +1,3 @@
1
- var Vo=Object.defineProperty,Do=Object.defineProperties;var Wo=Object.getOwnPropertyDescriptors;var fn=Object.getOwnPropertySymbols;var jr=Object.prototype.hasOwnProperty,Qr=Object.prototype.propertyIsEnumerable;var Yr=(r,e,t)=>e in r?Vo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))jr.call(e,t)&&Yr(r,t,e[t]);if(fn)for(var t of fn(e))Qr.call(e,t)&&Yr(r,t,e[t]);return r},j=(r,e)=>Do(r,Wo(e));var Le=(r,e)=>{var t={};for(var n in r)jr.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&fn)for(var n of fn(r))e.indexOf(n)<0&&Qr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as fe}from"@solana/web3.js";import{AccountLayout as Ou,NATIVE_MINT as Fo,TOKEN_PROGRAM_ID as Hn}from"@solana/spl-token";import ea from"big.js";import Sn from"bn.js";import Re from"bn.js";var Lt=9e15,at=1e9,Qn="0123456789abcdef",yn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",gn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Zn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Lt,maxE:Lt,crypto:!1},ei,$e,U=!0,hn="[DecimalError] ",st=hn+"Invalid argument: ",ti=hn+"Precision limit exceeded",ni=hn+"crypto unavailable",ri="[object Decimal]",Te=Math.floor,be=Math.pow,qo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Go=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Uo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ii=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,W=7,Xo=9007199254740991,zo=yn.length-1,Jn=gn.length-1,x={toStringTag:ri};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),F(r)};x.ceil=function(){return F(new this.constructor(this),this.e+1,2)};x.clampedTo=x.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(st+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};x.cosine=x.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+W,n.rounding=1,t=Ho(n,ci(n,t)),n.precision=r,n.rounding=e,F($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(U=!1,o=l.s*be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=he(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=be(t,1/3),r=Te((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=se(c.plus(l).times(a),c.plus(u),s+2,1),he(a.d).slice(0,s)===(t=he(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(F(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")&&(F(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Te(this.e/W))*W,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return se(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return F(se(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return F(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/An(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Nt(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return F(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=Nt(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=Nt(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,F(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,se(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ve(t,i,o):new t(0):new t(NaN):e.isZero()?Ve(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ve(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?F(new o(i),r,e,!0):(o.precision=t=n-i.e,i=se(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=Ve(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};x.inverseTangent=x.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Jn)return s=Ve(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Jn)return s=Ve(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/W+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/W),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),U=!0,F(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Te(this.e/W)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(U=!1,a=m+p,s=ot(c,a),n=e?wn(l,a+10):ot(r,a),u=se(s,n,a,1),Gt(u.d,i=m,d))do if(a+=10,s=ot(c,a),n=e?wn(l,a+10):ot(r,a),u=se(s,n,a,1),!o){+he(u.d).slice(i+1,i+15)+1==1e14&&(u=F(u,m+1,0));break}while(Gt(u.d,i+=10,d));return U=!0,F(u,m,d)};x.minus=x.sub=function(r){var e,t,n,i,o,s,a,u,c,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(c=p.d,d=r.d,a=g.precision,u=g.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new g(p);else return new g(u===3?-0:0);return U?F(r,a,u):r}if(t=Te(r.e/W),l=Te(p.e/W),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/W),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=De-1;--c[i],c[n]+=De}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=kn(c,t),U?F(r,a,u):r):new g(u===3?-0:0)};x.modulo=x.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=se(t,r.abs(),0,3,1),e.s*=r.s):e=se(t,r,0,n.modulo,1),e=e.times(r),U=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return $n(this)};x.naturalLogarithm=x.ln=function(){return ot(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,F(r)};x.plus=x.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),U?F(r,a,u):r;if(o=Te(m.e/W),n=Te(r.e/W),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/W),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/De|0,c[i]%=De;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=kn(c,n),U?F(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(st+r);return t.d?(e=oi(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return F(new e(r),r.e+1,e.rounding)};x.sine=x.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+W,n.rounding=1,t=jo(n,ci(n,t)),n.precision=r,n.rounding=e,F($e>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=he(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Te((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(se(s,o,t+2,1)).times(.5),he(o.d).slice(0,t)===(e=he(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(F(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(n,u+1,1),r=!n.times(n).eq(s));break}return U=!0,F(n,u,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=se(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,F($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Te(l.e/W)+Te(r.e/W),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%De|0,e=a/De|0;o[i]=(o[i]+e)%De|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=kn(o,t),U?F(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return tr(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ne(r,0,at),e===void 0?e=n.rounding:Ne(e,0,8),F(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=He(n,!0):(Ne(r,0,at),e===void 0?e=i.rounding:Ne(e,0,8),n=F(new i(n),r+1,e),t=He(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=He(i):(Ne(r,0,at),e===void 0?e=o.rounding:Ne(e,0,8),n=F(new o(i),r+i.e+1,e),t=He(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=oi(g)-p.e-1,s=o%W,e.d[0]=be(10,s<0?W+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(st+a);r=a.gt(e)?o>0?e:c:a}for(U=!1,a=new f(he(g)),l=f.precision,f.precision=o=g.length*W*2;m=se(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=se(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=se(c,n,o,1).minus(p).abs().cmp(se(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,U=!0,d};x.toHexadecimal=x.toHex=function(r,e){return tr(this,16,r,e)};x.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding: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]?(U=!1,t=se(t,r,0,e,1).times(r),U=!0,F(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return tr(this,8,r,e)};x.toPower=x.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return F(a,n,o);if(e=Te(r.e/W),e>=r.d.length-1&&(t=c<0?-c:c)<=Xo)return i=si(u,a,t,n),r.s<0?new u(1).div(i):F(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=be(+a,c),e=t==0||!isFinite(t)?Te(c*(Math.log("0."+he(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(U=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=$n(r.times(ot(a,n+t)),n),i.d&&(i=F(i,n+5,1),Gt(i.d,n,o)&&(e=n+10,i=F($n(r.times(ot(a,e+t)),e),e+5,1),+he(i.d).slice(n+1,n+15)+1==1e14&&(i=F(i,n+1,0)))),i.s=s,U=!0,u.rounding=o,F(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=He(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ne(r,1,at),e===void 0?e=i.rounding:Ne(e,0,8),n=F(new i(n),r,e),t=He(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ne(r,1,at),e===void 0?e=n.rounding:Ne(e,0,8)),F(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=He(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return F(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=He(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function he(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=W-n.length,t&&(o+=it(t)),o+=n;s=r[e],n=s+"",t=W-n.length,t&&(o+=it(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(st+r)}function Gt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=W,i=0):(i=Math.ceil((e+1)/W),e%=W),o=be(10,W-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==be(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)==be(10,e-3)-1,s}function bn(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]+=Qn.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 Ho(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=Nt(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 se=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,g,f,w,y,k,h,A,B,T,L,I,v,M,V,$,ie=n.constructor,ue=n.s==i.s?1:-1,Q=n.d,X=i.d;if(!Q||!Q[0]||!X||!X[0])return new ie(!n.s||!i.s||(Q?X&&Q[0]==X[0]:!X)?NaN:Q&&Q[0]==0||!X?ue*0:ue/0);for(u?(p=1,l=n.e-i.e):(u=De,p=W,l=Te(n.e/p)-Te(i.e/p)),V=X.length,v=Q.length,y=new ie(ue),k=y.d=[],m=0;X[m]==(Q[m]||0);m++);if(X[m]>(Q[m]||0)&&l--,o==null?(T=o=ie.precision,s=ie.rounding):a?T=o+(n.e-i.e)+1:T=o,T<0)k.push(1),g=!0;else{if(T=T/p+2|0,m=0,V==1){for(d=0,X=X[0],T++;(m<v||d)&&T--;m++)L=d*u+(Q[m]||0),k[m]=L/X|0,d=L%X|0;g=d||m<v}else{for(d=u/(X[0]+1)|0,d>1&&(X=r(X,d,u),Q=r(Q,d,u),V=X.length,v=Q.length),I=V,h=Q.slice(0,V),A=h.length;A<V;)h[A++]=0;$=X.slice(),$.unshift(0),M=X[0],X[1]>=u/2&&++M;do d=0,c=e(X,h,V,A),c<0?(B=h[0],V!=A&&(B=B*u+(h[1]||0)),d=B/M|0,d>1?(d>=u&&(d=u-1),f=r(X,d,u),w=f.length,A=h.length,c=e(f,h,w,A),c==1&&(d--,t(f,V<w?$:X,w,u))):(d==0&&(c=d=1),f=X.slice()),w=f.length,w<A&&f.unshift(0),t(h,f,A,u),c==-1&&(A=h.length,c=e(X,h,V,A),c<1&&(d++,t(h,V<A?$:X,A,u))),A=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[A++]=Q[I]||0:(h=[Q[I]],A=1);while((I++<v||h[0]!==void 0)&&T--);g=h[0]!==void 0}k[0]||k.shift()}if(p==1)y.e=l,ei=g;else{for(m=1,d=k[0];d>=10;d/=10)m++;y.e=m+l*p-1,F(y,a?o+y.e+1:o,s,g)}return y}}();function F(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=W,s=e,l=m[d=0],u=l/be(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/W),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=W,s=o-W+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=W,s=o-W+i,u=s<0?0:l/be(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%be(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/be(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=be(10,(W-e%W)%W),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=be(10,W-o),m[d]=s>0?(l/be(10,i-s)%be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==De&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=De)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return U&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function He(r,e,t){if(!r.isFinite())return ui(r);var n,i=r.e,o=he(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+it(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+it(-i-1)+o,t&&(n=t-s)>0&&(o+=it(n))):i>=s?(o+=it(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+it(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=it(n))),o}function kn(r,e){var t=r[0];for(e*=W;t>=10;t/=10)e++;return e}function wn(r,e,t){if(e>zo)throw U=!0,t&&(r.precision=t),Error(ti);return F(new r(yn),e,1,!0)}function Ve(r,e,t){if(e>Jn)throw Error(ti);return F(new r(gn),e,t,!0)}function oi(r){var e=r.length-1,t=e*W+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function it(r){for(var e="";r--;)e+="0";return e}function si(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/W+4);for(U=!1;;){if(t%2&&(o=o.times(e),Jr(o.d,s)&&(i=!0)),t=Te(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Jr(e.d,s)}return U=!0,o}function Zr(r){return r.d[r.d.length-1]&1}function ai(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 $n(r,e){var t,n,i,o,s,a,u,c=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?(U=!1,u=g):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=F(o.times(r),u,1),t=t.times(++l),a=s.plus(se(o,t,u,1)),he(a.d).slice(0,u)===he(s.d).slice(0,u)){for(i=m;i--;)s=F(s.times(s),u,1);if(e==null)if(c<3&&Gt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return F(s,d.precision=g,p,U=!0);else return d.precision=g,s}s=a}}function ot(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,g=10,f=r,w=f.d,y=f.constructor,k=y.rounding,h=y.precision;if(f.s<0||!w||!w[0]||!f.e&&w[0]==1&&w.length==1)return new y(w&&!w[0]?-1/0:f.s!=1?NaN:w?0:f);if(e==null?(U=!1,l=h):l=e,y.precision=l+=g,t=he(w),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=he(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 c=wn(y,l+2,h).times(o+""),f=ot(new y(n+"."+t.slice(1)),l-g).plus(c),y.precision=h,e==null?F(f,h,k,U=!0):f;for(m=f,u=s=f=se(f.minus(1),f.plus(1),l,1),d=F(f.times(f),l,1),i=3;;){if(s=F(s.times(d),l,1),c=u.plus(se(s,new y(i),l,1)),he(c.d).slice(0,l)===he(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(wn(y,l+2,h).times(o+""))),u=se(u,new y(p),l,1),e==null)if(Gt(u.d,l-g,k,a))y.precision=l+=g,c=s=f=se(m.minus(1),m.plus(1),l,1),d=F(f.times(f),l,1),i=a=1;else return F(u,y.precision=h,k,U=!0);else return y.precision=h,u;u=c,i+=2}}function ui(r){return String(r.s*r.s/0)}function er(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%W,t<0&&(n+=W),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=W;n<i;)r.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),U&&(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 Yo(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ii.test(e))return er(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Go.test(e))t=16,e=e.toLowerCase();else if(qo.test(e))t=2;else if(Uo.test(e))t=8;else throw Error(st+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=si(n,new n(t),o,o*2)),c=bn(e,t,De),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=kn(c,l),r.d=c,U=!1,s&&(r=se(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?be(2,u):Ut.pow(2,u))),U=!0,r)}function jo(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Nt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/An(5,t)),e=Nt(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 Nt(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/W);for(U=!1,u=t.times(t),a=new r(n);;){if(s=se(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=se(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return U=!0,s.d.length=m+1,s}function An(r,e){for(var t=r;--e;)t*=r;return t}function ci(r,e){var t,n=e.s<0,i=Ve(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Zr(t)?n?2:3:n?4:1,e;$e=Zr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function tr(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Ne(t,1,at),n===void 0?n=p.rounding:Ne(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ui(r);else{for(l=He(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=bn(He(d),10,i),d.e=d.d.length),m=bn(l,10,i),o=u=m.length;m[--u]==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=se(r,d,t,n,0,i),m=r.d,o=r.e,c=ei),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Qn.charAt(m[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=bn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Qn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Jr(r,e){if(r.length>e)return r.length=e,!0}function Qo(r){return new this(r).abs()}function Zo(r){return new this(r).acos()}function Jo(r){return new this(r).acosh()}function $o(r,e){return new this(r).plus(e)}function es(r){return new this(r).asin()}function ts(r){return new this(r).asinh()}function ns(r){return new this(r).atan()}function rs(r){return new this(r).atanh()}function is(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=Ve(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ve(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ve(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(se(r,e,o,1)),e=Ve(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(se(r,e,o,1)),t}function os(r){return new this(r).cbrt()}function ss(r){return F(r=new this(r),r.e+1,2)}function as(r,e,t){return new this(r).clamp(e,t)}function us(r){if(!r||typeof r!="object")throw Error(hn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,at,"rounding",0,8,"toExpNeg",-Lt,0,"toExpPos",0,Lt,"maxE",0,Lt,"minE",-Lt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Zn[t]),(n=r[t])!==void 0)if(Te(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(st+t+": "+n);if(t="crypto",i&&(this[t]=Zn[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(ni);else this[t]=!1;else throw Error(st+t+": "+n);return this}function cs(r){return new this(r).cos()}function ls(r){return new this(r).cosh()}function li(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,$r(o)){c.s=o.s,U?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;U?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return er(c,o.toString())}else if(u!=="string")throw Error(st+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ii.test(o)?er(c,o):Yo(c,o)}if(i.prototype=x,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=us,i.clone=li,i.isDecimal=$r,i.abs=Qo,i.acos=Zo,i.acosh=Jo,i.add=$o,i.asin=es,i.asinh=ts,i.atan=ns,i.atanh=rs,i.atan2=is,i.cbrt=os,i.ceil=ss,i.clamp=as,i.cos=cs,i.cosh=ls,i.div=ms,i.exp=ds,i.floor=ps,i.hypot=fs,i.ln=bs,i.log=ys,i.log10=ws,i.log2=gs,i.max=hs,i.min=ks,i.mod=As,i.mul=Ts,i.pow=Ps,i.random=xs,i.round=Is,i.sign=Bs,i.sin=Ss,i.sinh=Ks,i.sqrt=Ls,i.sub=Ns,i.sum=Rs,i.tan=Cs,i.tanh=Es,i.trunc=Ms,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 ms(r,e){return new this(r).div(e)}function ds(r){return new this(r).exp()}function ps(r){return F(r=new this(r),r.e+1,3)}function fs(){var r,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function $r(r){return r instanceof Ut||r&&r.toStringTag===ri||!1}function bs(r){return new this(r).ln()}function ys(r,e){return new this(r).log(e)}function gs(r){return new this(r).log(2)}function ws(r){return new this(r).log(10)}function hs(){return ai(this,arguments,"lt")}function ks(){return ai(this,arguments,"gt")}function As(r,e){return new this(r).mod(e)}function Ts(r,e){return new this(r).mul(e)}function Ps(r,e){return new this(r).pow(e)}function xs(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ne(r,1,at),n=Math.ceil(r/W),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(ni);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=W,n&&r&&(i=be(10,W-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=W)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function Is(r){return F(r=new this(r),r.e+1,this.rounding)}function Bs(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Ss(r){return new this(r).sin()}function Ks(r){return new this(r).sinh()}function Ls(r){return new this(r).sqrt()}function Ns(r,e){return new this(r).sub(e)}function Rs(){var r=0,e=arguments,t=new this(e[r]);for(U=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return U=!0,F(t,this.precision,this.rounding)}function Cs(r){return new this(r).tan()}function Es(r){return new this(r).tanh()}function Ms(r){return F(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var Ut=x.constructor=li(Zn);yn=new Ut(yn);gn=new Ut(gn);var K=Ut;import{PublicKey as sr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _s}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as mi,SYSVAR_RENT_PUBKEY as vs}from"@solana/web3.js";function P({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Fs=[P({pubkey:_s,isWritable:!1}),P({pubkey:mi.programId,isWritable:!1}),P({pubkey:vs,isWritable:!1})];function rr({publicKey:r,transformSol:e}){let t=ir(r.toString());if(t instanceof ce)return e&&t.equals(Rt)?nr:t;if(e&&t.toString()===Rt.toBase58())return nr;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ir(r){try{return new ce(r)}catch{return r}}var Tn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Uu=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new ce("SysvarRent111111111111111111111111111111111"),Xu=new ce("SysvarC1ock11111111111111111111111111111111"),Ct=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Os=new ce("Sysvar1nstructions1111111111111111111111111"),zu=mi.programId,Hu=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Yu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ju=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Qu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Zu=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ju=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$u=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ec=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),tc=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),nc=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),rc=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),nr=new ce("So11111111111111111111111111111111111111112"),Rt=ce.default;function Et(r){return rr({publicKey:r,transformSol:!0})}import{PublicKey as Vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as di}from"@solana/spl-token";var or={chainId:101,address:Vs.default.toBase58(),programId:di.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ct={chainId:101,address:"So11111111111111111111111111111111111111112",programId:di.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 ar=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Rt.toBase58()||e instanceof sr&&Rt.equals(e)){this.decimals=ct.decimals,this.symbol=ct.symbol,this.name=ct.name,this.mint=new sr(ct.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?sr.default:rr({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Pe=ar;Pe.WSOL=new ar(j(G({},ct),{mint:ct.address}));import{get as pi,set as Ds}from"lodash";import bi from"dayjs";import Ws from"dayjs/plugin/utc";bi.extend(Ws);var ur=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 bi().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}},fi={},qs={};function ae(r){let e=pi(fi,r);if(!e){let t=pi(qs,r);e=new ur({name:r,logLevel:t}),Ds(fi,r,e)}return e}import xn from"big.js";import Xs from"bn.js";import zs from"decimal.js-light";import Gs from"toformat";var Us=Gs,Xt=Us;var Pn=ae("module/fraction"),cr=Xt(xn),zt=Xt(zs),Hs={[0]:zt.ROUND_DOWN,[1]:zt.ROUND_HALF_UP,[2]:zt.ROUND_UP},Ys={[0]:xn.roundDown,[1]:xn.roundHalfUp,[2]:xn.roundUp},ne=class{constructor(e,t=new Xs(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(re(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(re(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(re(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(re(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Pn.logWithError(`${e} is not an integer.`),e<=0&&Pn.logWithError(`${e} is not positive.`),zt.set({precision:e+1,rounding:Hs[n]});let i=new zt(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)||Pn.logWithError(`${e} is not an integer.`),e<0&&Pn.logWithError(`${e} is negative.`),cr.DP=e,cr.RM=Ys[n]||1,new cr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Qs=ae("Raydium_price"),Fe=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(lr(n.decimals),lr(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Fe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Qs.logWithError("mul token not equals");let n=super.mul(t);return new Fe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var mr=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},In=mr;In.SOL=new mr(or);import Zs from"bn.js";var yi=new ne(new Zs(100)),Ye=class extends ne{toSignificant(e=5,t,n){return this.mul(yi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(yi).toFixed(e,t,n)}};import{PublicKey as Js}from"@solana/web3.js";import $s from"bn.js";function gi(r){return typeof r=="object"&&r!==null&&![Pe,le,Js,ne,$s,Fe,Ye].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?ir(r):Array.isArray(r)?r.map(e=>ft(e)):gi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var Ht=new Re(0),hi=new Re(1),ul=new Re(2),cl=new Re(3),ll=new Re(5),dr=new Re(10),ml=new Re(100),dl=new Re(1e3),pl=new Re(1e4),wi=9007199254740991;function re(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Re)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Re(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=wi||r<=-wi)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Re(String(r))):typeof r=="bigint"?new Re(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Re(0))}function lr(r){return dr.pow(re(r))}function Bn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var ta=ae("Raydium_amount"),ki=Xt(ea);function na(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")):ta.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends ne{constructor(t,n,i=!0,o){let s=new Sn(0),a=dr.pow(new Sn(t.decimals));if(i)s=re(n);else{let u=new Sn(0),c=new Sn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=na(n.toString(),t.decimals);u=re(l),c=re(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new le(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new le(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return ki.DP=this.token.decimals,new ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as ma}from"@solana/web3.js";import xi,{isBN as Ii}from"bn.js";import{bits as _l,BitStructure as vl,blob as ra,Blob as Fl,cstr as Ol,f32 as Vl,f32be as Dl,f64 as Wl,f64be as ql,greedy as Gl,Layout as ia,ns64 as Ul,ns64be as Xl,nu64 as zl,nu64be as Hl,offset as Yl,s16 as jl,s16be as Ql,s24 as Zl,s24be as Jl,s32 as oa,s32be as $l,s40 as em,s40be as tm,s48 as nm,s48be as rm,s8 as im,seq as sa,struct as om,Structure as aa,u16 as ua,u16be as sm,u24 as am,u24be as um,u32 as cm,u32be as lm,u40 as mm,u40be as dm,u48 as pm,u48be as fm,u8 as ca,UInt as la,union as bm,Union as ym,unionLayoutDiscriminator as gm,utf8 as wm}from"@solana/buffer-layout";var pr=ia,Ai=aa;var fr=la;var Ti=ca,Mt=ua;var ke=oa;var Pi=sa;var xe=ra;var bt=class extends pr{constructor(t,n,i){super(t,i);this.blob=xe(t),this.signed=n}decode(t,n=0){let i=new xi(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 xi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function O(r){return new fr(1,r)}function Me(r){return new fr(4,r)}function b(r){return new bt(8,!1,r)}function D(r){return new bt(16,!1,r)}function Bi(r){return new bt(1,!0,r)}function Ln(r){return new bt(8,!0,r)}function Si(r){return new bt(16,!0,r)}var Kn=class extends pr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(r){return new Kn(xe(32),e=>new ma(e),e=>e.toBuffer(),r)}function Ce(r){return new Kn(Ti(),da,pa,r)}function da(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function pa(r){return r?1:0}var br=class extends Ai{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new br(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:Ii(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ii(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return Pi(r,i,t)}var Cm=R([Me("mintAuthorityOption"),S("mintAuthority"),b("supply"),O("decimals"),O("isInitialized"),Me("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as lp}from"@solana/web3.js";import{MintLayout as dp,TOKEN_PROGRAM_ID as fp}from"@solana/spl-token";import{PublicKey as Qt,sendAndConfirmTransaction as hr,Transaction as Zt,TransactionMessage as Jt,VersionedTransaction as $t}from"@solana/web3.js";import Aa from"axios";var Z={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as fa,ComputeBudgetProgram as Ki,Transaction as Ni,TransactionMessage as ba,Keypair as Ri,VersionedTransaction as Ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";var Li=ae("Raydium_txUtil"),Ei=1644;function Nn(r){let e=[],t=[];return r.microLamports&&(e.push(Ki.setComputeUnitPrice({microLamports:r.microLamports})),t.push(Z.SetComputeUnitPrice)),r.units&&(e.push(Ki.setComputeUnitLimit({units:r.units})),t.push(Z.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function _t(r,e){var n,i;let t=e!=null?e:"confirmed";try{return((i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function ga(r,e){r.length<1&&Li.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Li.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ni;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ei}catch{return!1}}function pe(r,e){let[t,n]=fa.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Yt({instructions:r,payer:e,signers:t}){return ga(r,[e,...t])}function jt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ri.generate().publicKey.toString()}){let o=new ba({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ci(o).serialize()).toString("base64").length<Ei}catch{return!1}}var wa=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 Ni&&(t.recentBlockhash||(t.recentBlockhash=ya.toBase58()),t.feePayer||(t.feePayer=Ri.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ci&&(n=wa(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Mi,AddressLookupTableAccount as Rn}from"@solana/web3.js";import{PublicKey as ha}from"@solana/web3.js";import{MINT_SIZE as Qm,TOKEN_PROGRAM_ID as Zm,getTransferFeeConfig as Jm,unpackMint as $m}from"@solana/spl-token";var yr=ae("Raydium_accountInfo_util");async function et(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),s=gr(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=gr(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&yr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:g,lamports:f,owner:w,rentEpoch:y}=d;return p.length!==2&&p[1]!=="base64"&&yr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new ha(w),rentEpoch:y}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&yr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function gt(r,e,t){let n=await et(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>j(G({},i),{accountInfo:n[o]}))}async function wr({connection:r,address:e}){let t=await et(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Mi(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Rn({key:s,state:Rn.deserialize(o.data)});n[s.toString()]=a,Cn[s.toString()]=a}return n}var Cn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Rn({key:new Mi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Rn.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 En=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,this.blockhashCommitment=e.blockhashCommitment}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 Aa.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}=Nn(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!==Qt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var n;let t=new Zt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var c;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=i||{},u=o!=null?o:await _t(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),yt([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await hr(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var w;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await _t(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(m){let y=[];for(let k of s){let h=await hr(this.connection,k,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});y.push(h)}return{txIds:y,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(y,k)=>(y.recentBlockhash=f,await this.connection.sendRawTransaction(y.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let y=s.map((h,A)=>(h.recentBlockhash=f,a[A].length&&h.sign(...a[A]),h));yt(y);let k=await this.signAllTransactions(y);if(m){let h=0,A=[],B=async()=>{if(!k[h])return;let T=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:g});A.push({txId:T,status:"sent",signedTx:k[h]}),d==null||d([...A]),h++,this.connection.onSignature(T,L=>{let I=A.findIndex(v=>v.txId===T);I>-1&&(A[I].status=L.err?"error":"success"),d==null||d([...A]),L.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:A.map(T=>T.txId),signedTxs:k}}else{let h=[];for(let A=0;A<k.length;A+=1){let B=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:g});h.push(B)}return{txIds:h,signedTxs:k}}}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){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Le(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=G(G({},this.cluster==="devnet"?{}:Cn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let g of a)s[g]===void 0&&u.push(new Qt(g));let c=await wr({connection:this.connection,address:u});for(let[g,f]of Object.entries(c))s[g]=f;let l=new Jt({payerKey:this.feePayer,recentBlockhash:i?Qt.default.toBase58():await _t(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new $t(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var k;let{recentBlockHash:f,skipPreflight:w=!0,sendAndConfirm:y}=g||{};if(f&&(m.message.recentBlockhash=f),yt([m]),(k=this.owner)!=null&&k.isKeyPair){let h=await this.connection.sendTransaction(m,{skipPreflight:w});if(y){let{lastValidBlockHeight:A,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:A,signature:h},"confirmed")}return{txId:h,signedTx:m}}if(this.signAllTransactions){let h=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(h[0],{skipPreflight:w}),signedTx:h[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{};if(p&&s.forEach(w=>w.message.recentBlockhash=p),yt(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let w=[];for(let y of s){let k=await this.connection.sendTransaction(y,{skipPreflight:g}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:k},"confirmed"),w.push(k)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async w=>await this.connection.sendTransaction(w,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let y=0,k=[],h=async()=>{if(!w[y])return;let A=await this.connection.sendTransaction(w[y],{skipPreflight:g});k.push({txId:A,status:"sent",signedTx:w[y]}),d==null||d([...k]),y++,this.connection.onSignature(A,B=>{let T=k.findIndex(L=>L.txId===A);T>-1&&(k[T].status=B.err?"error":"success"),d==null||d([...k]),B.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:w}}else{let y=[];for(let k=0;k<w.length;k+=1){let h=await this.connection.sendTransaction(w[k],{skipPreflight:g});y.push(h)}return{txIds:y,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let c=e||{},{computeBudgetConfig:t}=c,n=Le(c,["computeBudgetConfig"]),i=t?Nn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((m,d)=>j(G({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(m=>{let d=[...u,m],p=t?[...i.instructions,...d]:d,f=[...new Set(d.map(w=>w.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(w=>new Qt(w));if(u.length<12&&Yt({instructions:p,payer:this.feePayer,signers:f})||Yt({instructions:d,payer:this.feePayer,signers:f}))u.push(m);else{if(u.length===0)throw Error("item ins too big");Yt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:f})?s.push(new Zt().add(...i.instructions,...u)):s.push(new Zt().add(...u)),a.push(Array.from(new Set(u.map(w=>w.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(w=>o[w]).filter(w=>w!==void 0)),u=[m]}}),u.length>0){let d=[...new Set(u.map(p=>p.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Yt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new Zt().add(...i.instructions,...u)):s.push(new Zt().add(...u)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var y;let{sequentially:d,onTxUpdate:p,recentBlockHash:g,skipPreflight:f=!0}=m||{},w=g!=null?g:await _t(this.connection,this.blockhashCommitment);if(s.forEach(async(k,h)=>{k.recentBlockhash=w,a[h].length&&k.sign(...a[h])}),yt(s),(y=this.owner)!=null&&y.isKeyPair){if(d){let k=[];for(let h of s){let A=await hr(this.connection,h,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});k.push(A)}return{txIds:k,signedTxs:s}}return{txIds:await Promise.all(s.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let k=await this.signAllTransactions(s);if(d){let h=0,A=[],B=async()=>{if(!k[h])return;let T=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:f});A.push({txId:T,status:"sent",signedTx:k[h]}),p==null||p([...A]),h++,this.connection.onSignature(T,L=>{let I=A.findIndex(v=>v.txId===T);I>-1&&(A[I].status=L.err?"error":"success"),p==null||p([...A]),L.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:A.map(T=>T.txId),signedTxs:k}}else{let h=[];for(let A=0;A<k.length;A+=1){let B=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:f});h.push(B)}return{txIds:h,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var y;let w=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=w,o=Le(w,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=G(G({},this.cluster==="devnet"?{}:Cn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let k of a)s[k]===void 0&&u.push(new Qt(k));let c=await wr({connection:this.connection,address:u});for(let[k,h]of Object.entries(c))s[k]=h;let l=t?Nn(t):{instructions:[],instructionTypes:[]},m=await _t(this.connection,this.blockhashCommitment),d=this.signers.reduce((k,h)=>j(G({},k),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(k=>{let h=[...f,k],A=t?[...l.instructions,...h]:h;if(f.length<12&&jt({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||jt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(k);else{if(f.length===0)throw Error("item ins too big");let B={};for(let T of[...new Set(a)])s[T]!==void 0&&(B[T]=s[T]);if(t&&jt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(T))}else{let T=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(T))}g.push(Array.from(new Set(f.map(T=>T.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[k]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&jt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}else{let A=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}g.push(h)}return(y=this.owner)!=null&&y.signer&&g.forEach(k=>{k.some(h=>h.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async k=>{var L;let{sequentially:h,onTxUpdate:A,recentBlockHash:B,skipPreflight:T=!0}=k||{};if(p.map(async(I,v)=>{g[v].length&&I.sign(g[v]),B&&(I.message.recentBlockhash=B)}),yt(p),(L=this.owner)!=null&&L.isKeyPair){if(h){let I=[];for(let v of p){let M=await this.connection.sendTransaction(v,{skipPreflight:T}),{lastValidBlockHeight:V,blockhash:$}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:$,lastValidBlockHeight:V,signature:M},"confirmed"),I.push(M)}return{txIds:I,signedTxs:p}}return{txIds:await Promise.all(p.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:T}))),signedTxs:p}}if(this.signAllTransactions){let I=await this.signAllTransactions(p);if(h){let v=0,M=[],V=async()=>{if(!I[v])return;let $=await this.connection.sendTransaction(I[v],{skipPreflight:T});M.push({txId:$,status:"sent",signedTx:I[v]}),A==null||A([...M]),v++,this.connection.onSignature($,ie=>{let ue=M.findIndex(Q=>Q.txId===$);ue>-1&&(M[ue].status=ie.err?"error":"success"),A==null||A([...M]),ie.err||V()},"processed"),this.connection.getSignatureStatus($)};return V(),{txIds:[],signedTxs:I}}else{let v=[];for(let M=0;M<I.length;M+=1){let V=await this.connection.sendTransaction(I[M],{skipPreflight:T});v.push(V)}return{txIds:v,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function gr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ee}from"@solana/web3.js";var _i=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vi=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Fi=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Td=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Pd=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xd=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Id=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Bd=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Sd=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Kd=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ld=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Nd=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Rd=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Cd=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ed=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Md=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),_d=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vd=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fd=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ta=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Pa=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),xa=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Mn={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ta,CREATE_CPMM_POOL_AUTH:Pa,CREATE_CPMM_POOL_FEE_ACC:xa,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Ia}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ba}from"@solana/spl-token";function _e(r,e,t){return pe([r.toBuffer(),(t!=null?t:Ba).toBuffer(),e.toBuffer()],new Ia("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var en=1e4;function ye(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=j(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new We(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===en){let u=new We(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=tn(r.mul(new We(en)),new We(en-o.transferFeeBasisPoints)),c=new We(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=tn(l.mul(new We(o.transferFeeBasisPoints)),new We(en)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=tn(r.mul(new We(o.transferFeeBasisPoints)),new We(en)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function wt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function tn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}var Oi=r=>new Pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var _n=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=Le(o,["address","programId","decimals"]);return G({chainId:101,address:Et(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var kr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),nn=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new En({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(kr(e))}logInfo(...e){this.logger.info(kr(e))}logAndCreateError(...e){let t=kr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as on,ASSOCIATED_TOKEN_PROGRAM_ID as Da}from"@solana/spl-token";import{PublicKey as je,TransactionInstruction as Ft,SystemProgram as Wa,SYSVAR_RENT_PUBKEY as Gp}from"@solana/web3.js";var Ar=R([O("instruction"),b("amountIn"),b("minAmountOut")]),Tr=R([O("instruction"),b("maxAmountIn"),b("amountOut")]),Mp=R([O("instruction"),O("nonce")]),Sa=R([O("instruction"),O("nonce"),b("startTime")]),Vi=R([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),b("swapBase2QuoteFee"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),b("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),b("lpReserve"),q(b(),3,"padding")]),_p=R([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(b(),64,"padding")]),Pr=R([O("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),xr=R([O("instruction"),b("amountIn")]);var Di=R([b("fee")]);import{PublicKey as Ka}from"@solana/web3.js";var vt=new Ka("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kt=5e4,La=R([b("x"),b("y"),b("price")]),Na=R([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),q(La,kt,"DataElement")]);function Ra(r,e){return[0,kt-2]}function Ca(r){return[0,kt-2]}function Ea(r){return[0,kt-2]}function Ma(r,e,t){let[n,i]=Ra(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=kt-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Ir(r,e,t){let[n,i,o]=Ma(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function ht(r,e,t){return e*r.multiplier/t}function Wi(r,e,t){return e*t/r.multiplier}function _a(r,e){let[t,n]=Ca(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>kt-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function va(r,e){let[t,n]=Ea(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=kt-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function qi(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=_a(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let g,f;return n?(g=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(g=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[g,f,!1,a]}}}function Fa(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=va(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let g,f;return n?(g=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(g=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[g,f,!1,a]}}}function Oa(r,e){let t=qi(r,e,0,!1);return t[3]?t[0]:0}function Gi(r,e,t,n){let i=Ir(r,e,t),o=ht(r,e,i),s=ht(r,t,i),a=ht(r,n,i),u=!0,[c,l,m,d]=qi(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Wi(r,p,i)}}function Ui(r,e,t,n){let i=Ir(r,e,t),o=ht(r,e,i),s=ht(r,t,i),a=ht(r,n,i),u=!1,[c,l,m,d]=Fa(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Wi(r,p,i)}}function Va(r){let e=Na.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Xi(r,e,t,n){let i=Oa(r,ht(r,e,Ir(r,e,t)))/r.multiplier;return n?i:1/i}var rn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(vt);e&&(this._layoutData=Va(e==null?void 0:e.data))}}};var zi=ae("Raydium_liquidity_instruction");function Hi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Pr.span);Pr.encode({instruction:3,baseAmountIn:re(i),quoteAmountIn:re(o),fixedSide:s==="base"?Ht:hi},a);let u=[P({pubkey:on,isWritable:!1}),P({pubkey:new je(e.id)}),P({pubkey:new je(t.authority),isWritable:!1}),P({pubkey:new je(t.openOrders),isWritable:!1}),P({pubkey:new je(t.targetOrders)}),P({pubkey:new je(e.lpMint.address)}),P({pubkey:new je(t.vault.A)}),P({pubkey:new je(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(P({pubkey:vt})),u.push(P({pubkey:new je(e.marketId),isWritable:!1}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:new je(t.marketEventQueue),isWritable:!1})),new Ft({programId:new je(e.programId),keys:u,data:a})}function Br(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ft(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(xr.span);xr.encode({instruction:4,amountIn:re(i)},a);let u=[P({pubkey:on,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.mintLp.address}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return s===5?u.push(P({pubkey:vt})):(u.push(P({pubkey:o.id})),u.push(P({pubkey:o.id}))),u.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks})),new Ft({programId:o.programId,keys:u,data:a})}return new Ft({programId:o.programId,keys:[]})}function Yi({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:g,userCoinVault:f,userPcVault:w,userLpVault:y,nonce:k,openTime:h,coinAmount:A,pcAmount:B,ammConfigId:T,feeDestinationId:L}){let I=R([O("instruction"),O("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),v=[{pubkey:on,isSigner:!1,isWritable:!1},{pubkey:Da,isSigner:!1,isWritable:!1},{pubkey:Wa.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:L,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0}],M=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:k,openTime:h,coinAmount:A,pcAmount:B},M),{instruction:new Ft({keys:v,programId:r,data:M}),instructionType:Z.AmmV4CreatePool}}function qa({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(Ar.span);Ar.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[P({pubkey:on,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders})];return i===4&&a.push(P({pubkey:o.targetOrders})),a.push(P({pubkey:o.vault.A}),P({pubkey:o.vault.B})),i===5&&a.push(P({pubkey:vt})),a.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1})),new Ft({programId:o.programId,keys:a,data:s})}function Ga({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(Tr.span);Tr.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[P({pubkey:on,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return i===5&&a.push(P({pubkey:vt})),a.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Ft({programId:o.programId,keys:a,data:s})}function ji(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return qa(j(G({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Ga(j(G({},a),{maxAmountIn:i,amountOut:o}),t);zi.logWithError("invalid params","params",r)}throw zi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Ae,TOKEN_2022_PROGRAM_ID as dt,ASSOCIATED_TOKEN_PROGRAM_ID as wo}from"@solana/spl-token";import{PublicKey as N,TransactionInstruction as Xe,SystemProgram as Dt,Keypair as Vr}from"@solana/web3.js";import ho from"bn.js";import Ja from"bn.js";function vn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Sr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Kr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function sn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Qi(r,e){return sn(r,e)?null:Sr(r,e)}function Zi(r,e){return sn(r,e)?null:Kr(r,e)}var rf=Buffer.from("amm_config","utf8"),Ua=Buffer.from("pool","utf8"),Xa=Buffer.from("pool_vault","utf8"),za=Buffer.from("pool_reward_vault","utf8"),Ji=Buffer.from("position","utf8"),Ha=Buffer.from("tick_array","utf8"),Ya=Buffer.from("operation","utf8"),ja=Buffer.from("pool_tick_array_bitmap_extension","utf8");function $i(r,e,t,n){return pe([Ua,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Lr(r,e,t){return pe([Xa,e.toBuffer(),t.toBuffer()],r)}function eo(r,e,t){return pe([za,e.toBuffer(),t.toBuffer()],r)}function oe(r,e,t){return pe([Ha,e.toBuffer(),vn(t)],r)}function At(r,e,t,n){return pe([Ji,e.toBuffer(),vn(t),vn(n)],r)}function Qe(r,e){return pe([Ji,e.toBuffer()],r)}function Fn(r){return pe([Buffer.from("metadata","utf8"),Ct.toBuffer(),r.toBuffer()],Ct)}function Nr(r){return pe([Ya],r)}function qe(r,e){return pe([ja,e.toBuffer()],r)}import Oe from"bn.js";var me=new Oe(0),Ze=new Oe(1),tt=new Oe(-1),ve=new Oe(1).shln(64),On=new Oe(1).shln(128),Rr=ve.sub(Ze),an=64,to=On.subn(1),Ie=-443636,Ke=-Ie,Ot=new Oe("4295048016"),Vt=new Oe("79226673521066979257578248091"),af=new Oe("4295048017"),uf=new Oe("79226673521066979257578248090"),no=16,ro="59543866431248",io="184467440737095516",oo="15793534762490258745",Vn=new Oe(10).pow(new Oe(6));var cf=new Oe("18446744073700000000");var Qa=15,J=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=_.getTickArrayStartIndexByTick(i,o),l=_.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Qa/2));for(let p=0;p<l.length;p++){let{publicKey:g}=oe(t,n,l[p]);u.push(g)}let m=(await et(e,u)).map(p=>p!==null?un.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=j(G({},g),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=_.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/J.tickCount(t)),a=n?_.searchLowBitFromStart(i,o,s-1,1,t):_.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=ge-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<ge;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=oe(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=_.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<ge;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=oe(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(_.checkIsOutOfBoundary(e)){if(e>Ke)return!1;let n=_.getTickArrayStartIndexByTick(Ie,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ge*e}};import Y from"bn.js";import{PublicKey as Ge}from"@solana/web3.js";import de from"bn.js";var Cr=14,nt=class{static maxTickInTickarrayBitmap(e){return e*ge*Tt}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(!J.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-J.tickCount(n):t+J.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ge,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Qi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Zi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-J.tickCount(n)}}}},cn=class{static getBitmapOffset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=nt.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=nt.maxTickInTickarrayBitmap(e),n=-t;if(Ke<=t)throw Error(`extensionTickBoundary check error: ${Ke}, ${t}`);if(n<=Ie)throw Error(`extensionTickBoundary check error: ${n}, ${Ie}`);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:_.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=J.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}=nt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=_.mergeTickArrayBitmap(e).shln(Tt-1-a),c=sn(512,u)?null:Sr(512,u);if(c!==null){let l=t-c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=_.mergeTickArrayBitmap(e).shrn(a),c=sn(512,u)?null:Kr(512,u);if(c!==null){let l=t+c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-J.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%nt.maxTickInTickarrayBitmap(t),i=Math.floor(n/J.tickCount(t));return e<0&&n!=0&&(i=Tt-i),i}};import Je from"bn.js";var ln=class{static getfeeGrowthInside(e,t,n){let i=new Je(0),o=new Je(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 Je(0),a=new Je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=z.wrappingSubU128(z.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=z.wrappingSubU128(z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=z.mulDivFloor(z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=z.mulDivFloor(z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=z.mulDivFloor(z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ve),u=t.tokenFeesOwedA.add(a),c=z.mulDivFloor(z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=z.wrappingSubU128(u,c.growthInsideLastX64),m=z.mulDivFloor(l,t.liquidity,ve),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=z.wrappingSubU128(u,c.growthInsideLastX64),m=z.mulDivFloor(l,t.liquidity,ve),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Je(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(z.wrappingSubU128(z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Je(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(z.wrappingSubU128(z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var w,y,k,h;let a=H.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=te.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),ye(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,f]=[ye(new Je(new K(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),ye(new Je(new K(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as so}from"@solana/spl-token";var Be=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:w}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return u.push(...g),{allTrade:d,expectedAmountOut:p.mul(tt),remainingAccounts:u,executionPrice:f,feeAmount:w}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:w}=oe(e.programId,e.id,f.nextStartIndex);a.push(w)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(tt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?cn.checkTickArrayIsInit(J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):_.checkTickArrayIsInitialized(_.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=oe(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=oe(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/J.tickCount(e.tickSpacing)),i=t?_.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):_.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=J.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=nt.nextInitializedTickArrayStartIndex(_.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=cn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ie||t>Ke)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=j(G({},m),{perSecond:z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ge(d)});if(p.tokenMint.equals(Ge.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let g=new de(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),w=z.mulDivFloor(f,p.emissionsPerSecondX64,i),y=p.rewardGrowthGlobalX64.add(w),k=z.mulDivFloor(f,p.emissionsPerSecondX64,ve),h=p.rewardTotalEmissioned.add(k);s.push(j(G({},p),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:h,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=_.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=nt.maxTickInTickarrayBitmap(e),n=-t;return t>Ke&&(t=J.getArrayStartIndex(Ke,e)+J.tickCount(e)),n<Ie&&(n=J.getArrayStartIndex(Ie,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/J.tickCount(t)*Tt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await gt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=co.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=_.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=_.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=oe(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await gt(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=un.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=j(G({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(Qe(p,d).publicKey);let l=await et(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=uo.decode(d.data),g=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===g);if(f===void 0)continue;let w=f.state,y=_._getTickPriceLegacy({poolInfo:w,tick:p.tickLower,baseIn:!0}),k=_._getTickPriceLegacy({poolInfo:w,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:A}=te.getAmountsFromLiquidity(w.sqrtPriceX64,y.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(y.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:y.price,priceUpper:k.price,amountA:h,amountB:A,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(G({},I),{pendingReward:new de(0)})),leverage:B,tokenFeeAmountA:new de(0),tokenFeeAmountB:new de(0)}];let T=await _.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),L=await _.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=L}if(o){let d=Object.values(m),p=await et(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let w=p[f];if(w===null)continue;let y=d[f].toString();g[y]=un.decode(w.data)}for(let{state:f,positionAccount:w}of e)if(!!w)for(let y of w){let k=`${f.programId.toString()}-${f.id.toString()}-${y.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${y.tickUpper}`,A=g[m[k].toString()],B=g[m[h].toString()],T=A.ticks[_.getTickOffsetInArray(y.tickLower,f.tickSpacing)],L=B.ticks[_.getTickOffsetInArray(y.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:v}=await ln.GetPositionFees(f,y,T,L),M=await ln.GetPositionRewards(f,y,T,L);y.tokenFeeAmountA=I.gte(new de(0))?I:new de(0),y.tokenFeeAmountB=v.gte(new de(0))?v:new de(0);for(let V=0;V<M.length;V++)y.rewardInfos[V].pendingReward=M[V].gte(new de(0))?M[V]:new de(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new K(0),catchLiquidityInsufficient:u=!1}){var $;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new K(0))?c=l?Ot.add(new de(1)):Vt.sub(new de(1)):c=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ye(o,m,i,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:w,executionPrice:y,feeAmount:k}=Be.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub(($=p.fee)!=null?$:me),c,u),h=ye(f,d,i,!1),A=H.sqrtPriceX64ToPrice(y,e.mintA.decimals,e.mintB.decimals),B=l?A:new K(1).div(A),T=f.mul(new de(Math.floor((1-s)*1e10))).div(new de(1e10)),L=ye(T,d,i,!1),I=l?e.currentPrice:new K(1).div(e.currentPrice),v=new K(B).sub(I).abs(),M=I,V=new Ye(new K(v).mul(10**15).toFixed(0),new K(M).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:h,minAmountOut:L,expirationTime:wt(p.expirationTime,h.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:V,fee:k,remainingAccounts:w,executionPriceX64:y}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Pe(j(G({},c),{mint:c.address,isToken2022:c.programId===so.toBase58()})),new Pe(j(G({},l),{mint:l.address,isToken2022:l.programId===so.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:w,expirationTime:y,currentPrice:k,executionPrice:h,priceImpact:A,fee:B,remainingAccounts:T,executionPriceX64:L}=Be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ge(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),I=j(G({},g),{amount:new le(m,g.amount),fee:g.fee===void 0?void 0:new le(m,g.fee)}),v=j(G({},f),{amount:new le(d,f.amount),fee:f.fee===void 0?void 0:new le(d,f.fee)}),M=j(G({},w),{amount:new le(d,w.amount),fee:w.fee===void 0?void 0:new le(d,w.fee)}),V=new Fe({baseToken:m,denominator:new de(10).pow(new de(20+m.decimals)),quoteToken:d,numerator:k.mul(new K(10**(20+d.decimals))).toFixed(0)}),$=new Fe({baseToken:m,denominator:new de(10).pow(new de(20+m.decimals)),quoteToken:d,numerator:h.mul(new K(10**(20+d.decimals))).toFixed(0)}),ie=new le(m,B);return{allTrade:p,realAmountIn:I,amountOut:v,minAmountOut:M,expirationTime:y,currentPrice:V,executionPrice:$,priceImpact:A,fee:ie,remainingAccounts:T,executionPriceX64:L}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,w;let o=e[t],s=_.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=_.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*p,((f=o.rewardApr[1])!=null?f:0)*p,((w=o.rewardApr[2])!=null?w:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Et(e.mintA.address).toString()],d=i[Et(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=H.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),w=H.getSqrtPriceX64FromTick(s),y=H.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=te.getAmountsFromLiquidityWithSlippage(f,w,y,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:B}=te.getAmountsFromLiquidityWithSlippage(f,w,y,o,!1,!1,0),T=new K(k.toString()).div(new K(10).pow(p)).mul(m.value).add(new K(h.toString()).div(new K(10).pow(g)).mul(d.value)),L=new K(A.toString()).div(new K(10).pow(p)).mul(m.value).add(new K(B.toString()).div(new K(10).pow(g)).mul(d.value)),I=new K(1).div(T.add(L)),M=new K(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),V=3600*24*365,$=e.rewardDefaultInfos.map(ie=>{var X,pt;let ue=ie.mint.decimals,Q=i[ie.mint.address];return u<((X=ie.startTime)!=null?X:0)||u>((pt=ie.endTime)!=null?pt:0)||!ie.perSecond||!Q||ue===void 0?0:new K(Q.value).mul(new K(ie.perSecond).mul(V)).div(new K(10).pow(ue)).mul(I).mul(100).toNumber()});return{feeApr:M,rewardsApr:$,apr:M+$.reduce((ie,ue)=>ie+ue,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var y,k;let l=H.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=ye(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,u,!c),f=new de(new K(g.amount.sub((k=g.fee)!=null?k:me).toString()).mul(p).toFixed(0)),w;if(l.lte(m))w=t?te.getLiquidityFromTokenAmountA(m,d,f,!a):new de(0);else if(l.lte(d)){let h=te.getLiquidityFromTokenAmountA(l,d,f,!a),A=te.getLiquidityFromTokenAmountB(m,l,f);w=t?h:A}else w=t?new de(0):te.getLiquidityFromTokenAmountB(m,d,f);return Be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:w,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var w,y,k,h;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=te.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new K(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),ye(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,f]=[ye(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),ye(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Ge(u.id));(await et(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=ao.decode(u.data))});let s=t.map(u=>qe(new Ge(u.programId),new Ge(u.id)).publicKey),a=await Be.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>j(G({},u),{[c.id]:j(G({},n[c.id]),{id:new Ge(c.id),version:6,programId:new Ge(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:j(G({},c.config),{id:new Ge(c.config.id),fundOwner:""}),currentPrice:new K(c.price),exBitmapInfo:a[qe(new Ge(c.programId),new Ge(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var z=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(Ze)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(Ze)).div(n)}static x64ToDecimal(e,t){return new K(e.toString()).div(K.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new Y(e.mul(K.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(On).sub(t).mod(On)}};function we(r,e){return Er(r.mul(e),64,256)}function Za(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Er(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return z.x64ToDecimal(e).pow(2).mul(K.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return z.decimalToX64(e.mul(K.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(an);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?z.mulDivCeil(s,e,a):z.mulDivRoundingUp(s,Ze,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(an);if(i)return e.add(o.div(t));{let s=z.mulDivRoundingUp(o,Ze,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<Ie||e>Ke)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new Y("18445821805675395072"):new Y("18446744073709551616");return(t&2)!=0&&(n=we(n,new Y("18444899583751176192"))),(t&4)!=0&&(n=we(n,new Y("18443055278223355904"))),(t&8)!=0&&(n=we(n,new Y("18439367220385607680"))),(t&16)!=0&&(n=we(n,new Y("18431993317065453568"))),(t&32)!=0&&(n=we(n,new Y("18417254355718170624"))),(t&64)!=0&&(n=we(n,new Y("18387811781193609216"))),(t&128)!=0&&(n=we(n,new Y("18329067761203558400"))),(t&256)!=0&&(n=we(n,new Y("18212142134806163456"))),(t&512)!=0&&(n=we(n,new Y("17980523815641700352"))),(t&1024)!=0&&(n=we(n,new Y("17526086738831433728"))),(t&2048)!=0&&(n=we(n,new Y("16651378430235570176"))),(t&4096)!=0&&(n=we(n,new Y("15030750278694412288"))),(t&8192)!=0&&(n=we(n,new Y("12247334978884435968"))),(t&16384)!=0&&(n=we(n,new Y("8131365268886854656"))),(t&32768)!=0&&(n=we(n,new Y("3584323654725218816"))),(t&65536)!=0&&(n=we(n,new Y("696457651848324352"))),(t&131072)!=0&&(n=we(n,new Y("26294789957507116"))),(t&262144)!=0&&(n=we(n,new Y("37481735321082"))),e>0&&(n=to.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Vt)||e.lt(Ot))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Y(t-64),i=Za(n,32,128),o=new Y("8000000000000000","hex"),s=0,a=new Y(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Y(0))&&s<no;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new Y(ro)),d=Er(m.sub(new Y(io)),64,128).toNumber(),p=Er(m.add(new Y(oo)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},xt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=xt.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},te=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(an),s=t.sub(e);return i?z.mulDivRoundingUp(z.mulDivCeil(o,s,t),Ze,e):z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?z.mulDivCeil(n,t.sub(e),ve):z.mulDivFloor(n,t.sub(e),ve)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?z.mulDivRoundingUp(a,Ze,Rr):a.shrn(an)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),z.mulDivFloor(n,Rr,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return te.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=te.getLiquidityFromTokenAmountA(e,n,i,!1),a=te.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return te.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:te.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new Y(0)};if(e.lt(n)){let s=te.getTokenAmountAFromLiquidity(e,n,i,o),a=te.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new Y(0),amountB:te.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=te.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new Y(new K(u.toString()).mul(l).toFixed(0)),d=new Y(new K(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var k,h,A,B;let c=H.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=te.getAmountsFromLiquidity(c,l,m,i,s),[g,f]=[ye(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),ye(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[w,y]=[ye(new Y(new K(p.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),ye(new Y(new K(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,u)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:w,amountSlippageB:y,expirationTime:wt(g.expirationTime,f.expirationTime)}}},Pt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f=!1){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(g||(g=s?Ot.add(Ze):Vt.sub(Ze)),s){if(g.lt(Ot))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(Vt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let w=d.gt(me),y={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+J.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new Y(0)},k=p,h=n[p],A=0,B=!s&&h.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(me)&&!y.sqrtPriceX64.eq(g);){A>10;let T={};T.sqrtPriceStartX64=y.sqrtPriceX64;let L=_.nextInitTick(h,y.tick,l,s,B),I=L||null,v=null;if(!(I!=null&&I.liquidityGross.gtn(0))){let V=Be.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},k,s);if(!V.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:y.amountSpecifiedRemaining,amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts};throw Error("swapCompute LiquidityInsufficient")}k=V.nextStartIndex;let{publicKey:$}=oe(e,t,k);v=$,h=n[k];try{I=_.firstInitializedTick(h,s)}catch{throw Error("not found next tick info")}}T.tickNext=I.tick,T.initialized=I.liquidityGross.gtn(0),p!==k&&v&&(y.accounts.push(v),p=k),T.tickNext<Ie?T.tickNext=Ie:T.tickNext>Ke&&(T.tickNext=Ke),T.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(T.tickNext);let M;if(s&&T.sqrtPriceNextX64.lt(g)||!s&&T.sqrtPriceNextX64.gt(g)?M=g:M=T.sqrtPriceNextX64,[y.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Pt.swapStepCompute(y.sqrtPriceX64,M,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(T.feeAmount),w?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),y.amountCalculated=y.amountCalculated.sub(T.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(T.amountOut),y.amountCalculated=y.amountCalculated.add(T.amountIn.add(T.feeAmount))),y.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let V=I.liquidityNet;s&&(V=V.mul(tt)),y.liquidity=te.addDelta(y.liquidity,V)}B=T.tickNext!=y.tick&&!s&&h.startTickIndex===T.tickNext,y.tick=s?T.tickNext-1:T.tickNext}else if(y.sqrtPriceX64!=T.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(y.sqrtPriceX64);B=V!=y.tick&&!s&&h.startTickIndex===V,y.tick=V}++A}try{let{nextStartIndex:T,isExist:L}=J.nextInitializedTickArray(y.tick,l,s,i,o);L&&p!==T&&(y.accounts.push(oe(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:me,amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new Y(0),amountIn:new Y(0),amountOut:new Y(0),feeAmount:new Y(0)},a=e.gte(t),u=i.gte(me);if(u){let l=z.mulDivFloor(i,Vn.sub(new Y(o.toString())),Vn);s.amountIn=a?te.getTokenAmountAFromLiquidity(t,e,n,!0):te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?te.getTokenAmountBFromLiquidity(t,e,n,!1):te.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(tt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=te.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=te.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:te.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:te.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(tt))&&(s.amountOut=i.mul(tt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=z.mulDivCeil(s.amountIn,new Y(o),Vn.sub(new Y(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ge=60,Tt=512,_=class{static getTickArrayAddressByTick(e,t,n,i){let o=_.getTickArrayStartIndexByTick(n,i),{publicKey:s}=oe(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=_.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ge)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=J.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)*J.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ge,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ge,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*ge:e+t*ge}static mergeTickArrayBitmap(e){let t=new Ja(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*ge));return[..._.searchLowBitFromStart(e,t,s-1,o,n),..._.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return _.searchHightBitFromStart(e,t,0,Tt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=_.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=oe(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>_.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>_.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ie||e>Ke}static nextInitTick(e,t,n,i,o){if(J.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<ge;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ge-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ge;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new K(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new K(1).div(t),o=xt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new K(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new K(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new K(1).div(t),o=xt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new K(1).div(a)}}};var gb=R([xe(8),O("bump"),Mt("index"),S(""),Me("protocolFeeRate"),Me("tradeFeeRate"),Mt("tickSpacing"),q(b(),8,"")]),$a=R([Me("blockTimestamp"),D("sqrtPriceX64"),D("cumulativeTimePriceX64"),q(D(),1,"")]),Mr=R([xe(8),Ce("initialized"),S("poolId"),q($a,1e3,"observations"),q(D(),5,"")]),eu=R([O("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),D("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),D("rewardGrowthGlobalX64")]),ao=R([xe(8),O("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),O("mintDecimalsA"),O("mintDecimalsB"),Mt("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),ke("tickCurrent"),Mt("observationIndex"),Mt("observationUpdateDuration"),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),D("swapInAmountTokenA"),D("swapOutAmountTokenB"),D("swapInAmountTokenB"),D("swapOutAmountTokenA"),O("status"),q(O(),7,""),q(eu,3,"rewardInfos"),q(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),q(b(),15*4-3,"padding")]),tu=R([D("growthInsideLastX64"),b("rewardAmountOwed")]),uo=R([xe(8),O("bump"),S("nftMint"),S("poolId"),ke("tickLower"),ke("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),q(tu,3,"rewardInfos"),q(b(),8,"")]),wb=R([xe(8),O("bump"),S("poolId"),ke("tickLowerIndex"),ke("tickUpperIndex"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),q(D(),3,"rewardGrowthInside"),q(b(),8,"")]),nu=R([ke("tick"),Si("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),q(D(),3,"rewardGrowthsOutsideX64"),q(Me(),13,"")]),un=R([xe(8),S("poolId"),ke("startTickIndex"),q(nu,ge,"ticks"),O("initializedTickCount"),q(O(),115,"")]),hb=R([xe(329),q(S(),100,"whitelistMints")]),co=R([xe(8),S("poolId"),q(q(b(),8),Cr,"positiveTickArrayBitmap"),q(q(b(),8),Cr,"negativeTickArrayBitmap")]);import{PublicKey as au,Keypair as uu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cu}from"@solana/spl-token";import Db from"bn.js";var lo=R([S("mint"),S("owner"),b("amount"),Me("delegateOption"),S("delegate"),O("state"),Me("isNativeOption"),b("isNative"),b("delegatedAmount"),Me("closeAuthorityOption"),S("closeAuthority")]);function ru(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function _r(r,...e){if(!ru(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 vr(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 mo(r,e){_r(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Wn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Ue=(r,e)=>r<<32-e|r>>>e;var Ib=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function iu(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Fr(r){return typeof r=="string"&&(r=iu(r)),_r(r),r}var Dn=class{clone(){return this._cloneInto()}},Bb={}.toString;function po(r){let e=n=>r().update(Fr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ou(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var fo=(r,e,t)=>r&e^~r&t,bo=(r,e,t)=>r&e^r&t^e&t,qn=class extends Dn{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=Wn(this.buffer)}update(e){vr(this);let{view:t,buffer:n,blockLen:i}=this;e=Fr(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=Wn(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){vr(this),mo(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;ou(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Wn(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var su=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]),lt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),mt=new Uint32Array(64),Or=class extends qn{constructor(){super(64,32,8,!1),this.A=lt[0]|0,this.B=lt[1]|0,this.C=lt[2]|0,this.D=lt[3]|0,this.E=lt[4]|0,this.F=lt[5]|0,this.G=lt[6]|0,this.H=lt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)mt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=mt[m-15],p=mt[m-2],g=Ue(d,7)^Ue(d,18)^d>>>3,f=Ue(p,17)^Ue(p,19)^p>>>10;mt[m]=f+mt[m-7]+g+mt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=Ue(a,6)^Ue(a,11)^Ue(a,25),p=l+d+fo(a,u,c)+su[m]+mt[m]|0,f=(Ue(n,2)^Ue(n,13)^Ue(n,22))+bo(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){mt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var yo=po(()=>new Or);var Ub=ae("Raydium_Util");function go({fromPublicKey:r,programId:e=cu}){let t=uu.generate().publicKey.toBase58().slice(0,32);return{publicKey:lu(r,t,e),seed:t}}function lu(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=yo(n);return new au(i)}var ko=ae("Raydium_Clmm"),ze={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]},Gn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g){let f=R([D("sqrtPriceX64"),b("startTime")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],y=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},y);let k=Buffer.from([...ze.createPool,...y]);return new Xe({keys:w,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=go({fromPublicKey:i,programId:n}),[d,p]=[new N(o.address),new N(s.address)],g=[Dt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Mr.span),space:Mr.span,programId:n})],{publicKey:f}=$i(n,a,d,p),{publicKey:w}=Lr(n,f,d),{publicKey:y}=Lr(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,w,new N(o.programId||Ae),p,y,new N(s.programId||Ae),qe(n,f).publicKey,u,c)),{signers:[],instructions:g,instructionTypes:[Z.CreateAccount,Z.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:w,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k,h,A,B,T,L,I,v,M){let V=R([ke("tickLowerIndex"),ke("tickUpperIndex"),ke("tickArrayLowerStartIndex"),ke("tickArrayUpperStartIndex"),D("liquidity"),b("amountMaxA"),b("amountMaxB"),Ce("withMetadata"),O("optionBaseFlag"),Ce("baseFlag")]),$=[...M?[{pubkey:M,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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:wo,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...$],ue=Buffer.alloc(V.span);V.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:L,amountMaxB:I,withMetadata:v==="create",baseFlag:!1,optionBaseFlag:0},ue);let Q=Buffer.from([...ze.openPosition,...ue]);return new Xe({keys:ie,programId:e,data:Q})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new N(e.programId),new N(e.id)],g;if(l)g=new N((await l(1))[0]);else{let I=Vr.generate();m.push(I),g=I.publicKey}let f=_.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=_.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=oe(d,p,f),{publicKey:k}=oe(d,p,w),{publicKey:h}=_e(n.wallet,g,Ae),{publicKey:A}=Fn(g),{publicKey:B}=Qe(d,g),{publicKey:T}=At(d,p,i,o),L=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,h,A,T,y,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,f,w,s,a,u,c);return{signers:m,instructions:[L],instructionTypes:[Z.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new N(e.programId),new N(e.id)],g;if(l)g=new N((await l(1))[0]);else{let I=Vr.generate();m.push(I),g=I.publicKey}let f=_.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=_.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=oe(d,p,f),{publicKey:k}=oe(d,p,w),{publicKey:h}=_e(n.wallet,g,Ae),{publicKey:A}=Fn(g),{publicKey:B}=Qe(d,g),{publicKey:T}=At(d,p,i,o),L=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,h,A,T,y,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,f,w,c,s,a,u,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,w])?qe(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:T},instructions:[L],signers:m,instructionTypes:[Z.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k,h,A,B,T,L,I,v,M){let V=R([ke("tickLowerIndex"),ke("tickUpperIndex"),ke("tickArrayLowerStartIndex"),ke("tickArrayUpperStartIndex"),D("liquidity"),b("amountMaxA"),b("amountMaxB"),Ce("withMetadata"),O("optionBaseFlag"),Ce("baseFlag")]),$=[...M?[{pubkey:M,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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:wo,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...$],ue=Buffer.alloc(V.span);V.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:B,liquidity:new ho(0),amountMaxA:L==="MintA"?I:v,amountMaxB:L==="MintA"?v:I,withMetadata:T==="create",baseFlag:L==="MintA",optionBaseFlag:1},ue);let Q=Buffer.from([...ze.openPosition,...ue]);return new Xe({keys:ie,programId:e,data:Q})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new N((await l(1))[0]);else{let I=Vr.generate();d.push(I),m=I.publicKey}let[p,g]=[new N(e.programId),new N(e.id)],f=_.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=_.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=oe(p,g,f),{publicKey:k}=oe(p,g,w),{publicKey:h}=_e(n.wallet,m,Ae),{publicKey:A}=Fn(m),{publicKey:B}=Qe(p,m),{publicKey:T}=At(p,g,i,o),L=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,h,A,T,y,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),i,o,f,w,s,a,u,c,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,w])?qe(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:y,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:T},instructions:[L],signers:d,instructionTypes:[Z.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),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:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...ze.closePosition,...u]);return new Xe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new N(e.programId),{publicKey:s}=_e(n.wallet,i.nftMint,Ae),{publicKey:a}=Qe(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[Z.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k){let h=R([D("liquidity"),b("amountMaxA"),b("amountMaxB"),O("optionBaseFlag"),Ce("baseFlag")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:w,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},T);let L=Buffer.from([...ze.increaseLiquidity,...T]);return new Xe({keys:B,programId:e,data:L})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new N(e.programId),new N(e.id)],l=_.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=_.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(u,c,l),{publicKey:p}=oe(u,c,m),{publicKey:g}=_e(i.wallet,n.nftMint,Ae),{publicKey:f}=Qe(u,n.nftMint),{publicKey:w}=At(u,c,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(u,i.wallet,g,f,c,w,d,p,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?qe(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:w},signers:[],instructions:[y],instructionTypes:[Z.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new N(e.programId),new N(e.id)],l=_.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=_.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(u,c,l),{publicKey:p}=oe(u,c,m),{publicKey:g}=_e(i.wallet,n.nftMint,Ae),{publicKey:f}=Qe(u,n.nftMint),{publicKey:w}=At(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:w},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,g,f,c,w,d,p,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?qe(u,c).publicKey:void 0)],signers:[],instructionTypes:[Z.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k){let h=R([D("liquidity"),b("amountMaxA"),b("amountMaxB"),O("optionBaseFlag"),Ce("baseFlag")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(h.span);h.encode({liquidity:new ho(0),amountMaxA:f==="MintA"?w:y,amountMaxB:f==="MintA"?y:w,baseFlag:f==="MintA",optionBaseFlag:1},T);let L=Buffer.from([...ze.increaseLiquidity,...T]);return new Xe({keys:B,programId:e,data:L})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k,h){let A=R([D("liquidity"),b("amountMinA"),b("amountMinB")]),B=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(v=>[{pubkey:v.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:v.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:v.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:Tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...B],L=Buffer.alloc(A.span);A.encode({liquidity:w,amountMinA:y,amountMinB:k},L);let I=Buffer.from([...ze.decreaseLiquidity,...L]);return new Xe({keys:T,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new N(e.programId),new N(e.id)],m=_.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=_.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=oe(c,l,m),{publicKey:g}=oe(c,l,d),{publicKey:f}=_e(i.wallet,n.nftMint,u),{publicKey:w}=Qe(c,n.nftMint),{publicKey:y}=At(c,l,n.tickLower,n.tickUpper),k=[];for(let A=0;A<e.rewardDefaultInfos.length;A++)k.push({poolRewardVault:new N(t.rewardInfos[A].vault),ownerRewardVault:i.rewardAccounts[A],rewardMint:new N(e.rewardDefaultInfos[A].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,w,l,y,p,g,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),k,o,s,a,Be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?qe(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:w,protocolPosition:y},signers:[],instructions:h,instructionTypes:[Z.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y){let k=R([b("amount"),b("otherAmountThreshold"),D("sqrtPriceLimitX64"),Ce("isBaseInput")]),h=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.map(L=>({pubkey:L,isSigner:!1,isWritable:!0}))],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:Tn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],B=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:w},B);let T=Buffer.from([...ze.swap,...B]);return new Xe({keys:A,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new N(e.programId),new N(e.id)],[d,p]=[new N(t.vault.A),new N(t.vault.B)],[g,f]=[new N(e.mintA.address),new N(e.mintB.address)],w=e.mintA.address===o.toString(),y=[this.swapInstruction(l,i.wallet,m,new N(e.config.id),w?i.tokenAccountA:i.tokenAccountB,w?i.tokenAccountB:i.tokenAccountA,w?d:p,w?p:d,w?g:f,w?f:g,c,n,s,a,u,!0,qe(l,m).publicKey)];return{signers:[],instructions:y,instructionTypes:[Z.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([b("openTime"),b("endTime"),D("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:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:d},f);let w=Buffer.from([...ze.initReward,...f]);return new Xe({keys:g,programId:e,data:w})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a=eo(o,s,i.mint).publicKey,u=Nr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new N(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[Z.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([O("rewardIndex"),D("emissionsPerSecondX64"),b("openTime"),b("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:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:re(l),endTime:re(m)},f);let w=Buffer.from([...ze.setRewardEmissions,...f]);return new Xe({keys:g,programId:e,data:w})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new N(t.rewardInfos[d].vault),c=new N(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&ko.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Nr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new N(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[Z.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([O("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:Tn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...ze.collectReward,...l]);return new Xe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new N(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&ko.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[Z.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new N(e.programId),new N(e.id)],[m,d]=[new N(t.vault.A),new N(t.vault.B)],[p,g]=[new N(e.mintA.address),new N(e.mintB.address)],f=e.mintA.address===i.toString(),w=[this.swapInstruction(c,n.wallet,l,new N(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,u,m,o,s,a,!1)];return{signers:[],instructions:w,instructionTypes:[Z.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as pu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fu}from"@solana/spl-token";import{PublicKey as mu}from"@solana/web3.js";import Ao from"bn.js";var To=new Ao(25),Po=new Ao(1e4);var du=ae("Raydium_liquidity_serum");function xo({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=mu.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw du.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import By from"bn.js";function Un({programId:r}){let{publicKey:e}=pe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function It({name:r,programId:e,marketId:t}){let{publicKey:n}=pe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function bu({programId:r,marketId:e}){let{publicKey:t}=pe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function yu({programId:r}){return pe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Io({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=It({name:"amm_associated_seed",programId:a,marketId:t}),l=It({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=yu({programId:a}),p=It({name:"coin_vault_associated_seed",programId:a,marketId:t}),g=It({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=It({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),w=bu({programId:a,marketId:t}),y=It({name:"target_associated_seed",programId:a,marketId:t}),k=It({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=xo({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:g,lpVault:f,openOrders:w,targetOrders:y,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:pu.default,configId:Un({programId:a})}}var Dr={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Bo=r=>{let e={},t=fu.toBase58();return Object.keys(r).map(n=>{let i=r[n],[o,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:_n({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:_n({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new K(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new K(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new K(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:Dr,week:Dr,month:Dr,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:Un({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:_n({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())})}}),e};import{PublicKey as So}from"@solana/web3.js";var My=new So("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_y=new So("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Ko={3:qr,5:Lo,6:No};var Xn={"Standard SPL":0,"Option tokens":1},Wr={[_i.toString()]:3,[vi.toString()]:5,[Fi.toString()]:6,[Mn.FarmV3.toString()]:3,[Mn.FarmV5.toString()]:5,[Mn.FarmV6.toString()]:6};var Gr=R([O("instruction")]),ku=R([O("instruction")]),Au=R([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),D("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),b("rewardType"),q(b(),15,"padding")]),Tu=R([b("state"),b("nonce"),S("lpVault"),S("rewardVault"),S(),S(),b(),b(),b("totalReward"),D("perShareReward"),b("lastSlot"),b("perSlotReward")]),Pu=R([b("state"),b("nonce"),S("lpVault"),S("rewardVaultA"),b("totalRewardA"),D("perShareRewardA"),b("perSlotRewardA"),O("option"),S("rewardVaultB"),xe(7),b("totalRewardB"),D("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),S()]),xu=R([b(),b("state"),b("nonce"),b("validRewardTokenNum"),D("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(Au,5,"rewardInfos"),S("creator"),S(),q(b(),32,"padding")]),gu=new Proxy(Tu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(G({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),wu=new Proxy(Pu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(G({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),hu=new Proxy(xu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(G({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return j(G({},o),{rewardType:((s=Object.entries(Xn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Iu=R([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),Bu=R([O("instruction"),b("nonce"),q(Iu,5,"rewardTimeInfo")]),Su=R([O("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),Ku=R([O("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),qy=R([b("state"),S("id"),S("owner"),b("deposited"),q(b(),1,"rewardDebts")]),qr=R([b("state"),S("id"),S("owner"),b("deposited"),q(D(),1,"rewardDebts"),b(""),b("voteLockedBalance"),q(b(),15)]),Gy=R([b("state"),S("id"),S("owner"),b("deposited"),q(b(),2,"rewardDebts")]),Lo=R([b("state"),S("id"),S("owner"),b("deposited"),q(D(),2,"rewardDebts"),q(b(),17)]),No=R([b(),b("state"),S("id"),S("owner"),b("deposited"),q(D(),5,"rewardDebts"),q(b(),16)]),Bt=R([O("instruction"),b("amount")]),Lu=R([S("mint"),S("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),Bi("digitShift"),q(O(),7,"reserved1"),q(b(),7,"reserved2")]),Nu=R([xe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(O(),32,"reserved1"),q(Lu,4,"votingMints"),Ln("timeOffset"),O("bump"),q(O(),7,"reserved2"),q(b(),11,"reserved3")]),Ru=R([Ln("startTime"),Ln("endTime"),O("kind"),q(O(),15,"reserved")]),Cu=R([q(Ru,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Ce("isUsed"),Ce("allowClawback"),O("votingMintConfigIdx"),q(O(),29,"reserved")]),Eu=R([xe(8),S("voterAuthority"),S("registrar"),q(Cu,32,"deposits"),O("voterBump"),O("voterWweightRecordBump"),q(O(),94,"reserved")]);import jy from"bn.js";var Mu=ae("Raydium.farm.util");function Wt({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=pe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}function Ro(r){let e=Ko[r];return e||Mu.logWithError("invalid version",r),e}import{PublicKey as Se,SystemProgram as _u,SYSVAR_RENT_PUBKEY as vu,SYSVAR_CLOCK_PUBKEY as Co,TransactionInstruction as zn}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Ag,TOKEN_PROGRAM_ID as Ur,ASSOCIATED_TOKEN_PROGRAM_ID as Tg}from"@solana/spl-token";import xg from"bn.js";var Fu=ae("Raydium_farm_instruction"),vg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Eo(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Fu.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Gr.span);Gr.encode({instruction:s},a);let u=[P({pubkey:t}),P({pubkey:n}),P({pubkey:o,isWritable:!1}),P({pubkey:_u.programId,isWritable:!1}),P({pubkey:vu,isWritable:!1})];return{instruction:new zn({programId:i,keys:u,data:a}),instructionType:Z.FarmV3CreateLedger}}function Mo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Se(e.programId),new Se(e.id)],c=Wt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:re(s)},l);let m=[P({pubkey:Ur,isWritable:!1}),P({pubkey:u}),P({pubkey:new Se(t.authority),isWritable:!1}),P({pubkey:new Se(t.lpVault)}),P({pubkey:c}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(P({pubkey:new Se(t.rewardInfos[d].vault)})),m.push(P({pubkey:i[d]}));return new zn({programId:a,keys:m,data:l})}function _o(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Se(e.programId),new Se(e.id)],l=Wt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:re(s)},m);let d=[P({pubkey:c}),P({pubkey:new Se(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new Se(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new Se(t.rewardInfos[0].vault)}),P({pubkey:Co,isWritable:!1}),P({pubkey:Ur,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(P({pubkey:i[p]})),d.push(P({pubkey:new Se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(P({pubkey:p}));return new zn({programId:u,keys:d,data:m})}function vo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Se(e.programId),new Se(e.id)],l=Wt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:re(s)},m);let d=[P({pubkey:c}),P({pubkey:new Se(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new Se(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new Se(t.rewardInfos[0].vault)}),P({pubkey:Co,isWritable:!1}),P({pubkey:Ur,isWritable:!1})];if(a)for(let p of a)d.push(P({pubkey:p}));return new zn({programId:u,keys:d,data:m})}import Ee from"bn.js";var Xr=class extends nn{constructor(t){super(t);this.stableLayout=new rn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Ee(new K(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Oi(t[o?"mintB":"mintA"]),[u,c]=[new Ee(new K(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ee(new K(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ee(new K(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,K.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Ht;s.isZero()||(d=m==="base"?Bn(s.mul(c),u):Bn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Bn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ye(new Ee(1)).add(i).mul(d).quotient,w=new le(a,d),y=new le(a,f);return this.logDebug("anotherAmount:",w.toFixed(),"maxAnotherAmount:",y.toFixed()),{anotherAmount:w,maxAnotherAmount:y,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:i,amountInA:o,amountInB:s,fixedSide:a,config:u,txVersion:c,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",s),(o.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[g,f]=[o.token,s.token],w=await m.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),y=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!w&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let k=await m.getCreatedTokenAccount({mint:new fe(n.lpMint.address)}),h=[g,f],A=[w,y],B=[o.raw,s.raw],T=o.token.mint.toBase58()===n.mintA.address?"base":"quote",L="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",a),T==="quote"?(h.reverse(),A.reverse(),B.reverse(),L=a==="a"?"quote":"base"):T==="base"&&(L=a==="a"?"base":"quote");let[I,v]=h,[M,V]=A,[$,ie]=B,ue=i!=null?i:await this.getAmmPoolKeys(n.id),Q=this.createTxBuilder(),St=await m.handleTokenAccount({side:"in",amount:$,mint:I.mint,tokenAccount:M,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:X}=St,pt=Le(St,["tokenAccount"]);Q.addInstruction(pt);let Kt=await m.handleTokenAccount({side:"in",amount:ie,mint:v.mint,tokenAccount:V,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:mn}=Kt,dn=Le(Kt,["tokenAccount"]);Q.addInstruction(dn);let pn=await m.handleTokenAccount({side:"out",amount:0,mint:new fe(n.lpMint.address),tokenAccount:k,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:qt}=pn,Yn=Le(pn,["tokenAccount"]);return Q.addInstruction(Yn),Q.addInstruction({instructions:[Hi({poolInfo:n,poolKeys:ue,userKeys:{baseTokenAccount:X,quoteTokenAccount:mn,lpTokenAccount:qt,owner:this.scope.ownerPubKey},baseAmountIn:$,quoteAmountIn:ie,fixedSide:L})],instructionTypes:[n.pooltype.includes("StablePool")?Z.AmmV5AddLiquidity:Z.AmmV4AddLiquidity],lookupTableAddress:ue.lookupTableAccount?[ue.lookupTableAccount]:[]}),Q.addCustomComputeBudget(l),c===0&&await Q.buildV0(),Q.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,amountIn:o,config:s,txVersion:a,computeBudgetConfig:u}=t,c=i!=null?i:await this.getAmmPoolKeys(n.id),[l,m,d]=[new fe(n.mintA.address),new fe(n.mintB.address),new fe(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:p}=this.scope,g=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});g||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),w=await p.getCreatedTokenAccount({mint:m}),y=this.createTxBuilder(),{bypassAssociatedCheck:k,checkCreateATAOwner:h}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),I=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:k,checkCreateATAOwner:h}),{tokenAccount:A}=I,B=Le(I,["tokenAccount"]);y.addInstruction(B);let v=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:w,bypassAssociatedCheck:k,checkCreateATAOwner:h}),{tokenAccount:T}=v,L=Le(v,["tokenAccount"]);return y.addInstruction(L),y.addInstruction({instructions:[Br({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:g,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?Z.AmmV5RemoveLiquidity:Z.AmmV4RemoveLiquidity]}),y.addCustomComputeBudget(u),a===0?await y.buildV0():y.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Hn,checkCreateATAOwner:p=!0,getEphemeralSigners:g,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let w=this.createTxBuilder();w.addCustomComputeBudget(c);let y={};for(let X of this.scope.account.tokenAccountRawInfos)(y[X.accountInfo.mint.toString()]===void 0||_e(this.scope.ownerPubKey,X.accountInfo.mint,Hn).publicKey.equals(X.pubkey))&&(y[X.accountInfo.mint.toString()]=X.pubkey);let k=y[t.lpMint.address];if(k===void 0)throw Error("find lp account error in trade accounts");let h=i.add(a!=null?a:new Ee(0)),A=t.mintA.address===Pe.WSOL.mint.toString(),B=t.mintB.address===Pe.WSOL.mint.toString(),{account:T,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Hn,mint:new fe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(L||{}),T===void 0)throw new Error("base token account not found");let{account:I,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Hn,mint:new fe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(v||{}),I===void 0)throw new Error("quote token account not found");if(y[t.mintA.address]=T,y[t.mintB.address]=I,s!==void 0&&!(a!=null&&a.isZero())){let X=Wr[s.programId],pt=Wt({programId:new fe(s.programId),poolId:new fe(s.id),owner:this.scope.ownerPubKey,version:X}),mn,dn=await this.scope.connection.getAccountInfo(pt);if(dn&&(mn=Ro(X).decode(dn.data)),X!==6&&!mn){let{instruction:rt,instructionType:jn}=Eo({id:new fe(s.id),programId:new fe(s.programId),version:X,ledger:pt,owner:this.scope.ownerPubKey});w.addInstruction({instructions:[rt],instructionTypes:[jn]})}let qt=[];for(let rt of s.rewardInfos){let jn=rt.mint.address===Pe.WSOL.mint.toString();if(y[rt.mint.address])qt.push(y[rt.mint.address]);else{let{account:zr,instructionParams:Hr}=await this.scope.account.getOrCreateTokenAccount({mint:new fe(rt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!jn,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});zr||this.logAndCreateError("farm reward account not found:",rt.mint.address),Hr&&w.addInstruction(Hr),qt.push(zr)}}let Yn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],St={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Yn,lpAccount:k,rewardAccounts:qt},Kt=Wr[s.programId],pn=Kt===6?Mo(St):Kt===5?_o(St):vo(St),Oo={3:Z.FarmV3Withdraw,5:Z.FarmV5Withdraw,6:Z.FarmV6Withdraw};w.addInstruction({instructions:[pn],instructionTypes:[Oo[Kt]]})}let M=await this.getAmmPoolKeys(t.id),V=Br({poolInfo:t,poolKeys:M,userKeys:{lpTokenAccount:k,baseTokenAccount:T,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:h});w.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?Z.AmmV5RemoveLiquidity:Z.AmmV4RemoveLiquidity],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]});let[$,ie]=t.mintA.address===n.mintA.address?[T,I]:[I,T],ue=await this.scope.clmm.getClmmPoolKeys(t.id),Q=await Gn.openPositionFromBaseInstructions(j(G({poolInfo:n,poolKeys:ue,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:$,tokenAccountB:ie},withMetadata:"create"},o),{base:u,getEphemeralSigners:g}));return w.addInstruction({instructions:[...Q.instructions],signers:Q.signers,instructionTypes:[...Q.instructionTypes],lookupTableAddress:ue.lookupTableAccount?[ue.lookupTableAccount]:[]}),f===0?w.sizeCheckBuildV0():w.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:g,computeBudgetConfig:f}){var $;let w=c.feePayer||(($=this.scope.owner)==null?void 0:$.publicKey),y=c.useSOLBalance&&i.mint.equals(Fo),k=c.useSOLBalance&&o.mint.equals(Fo),h=this.createTxBuilder(),{account:A,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:y?{payer:w,amount:s}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:l,checkCreateATAOwner:m});h.addInstruction(B||{});let{account:T,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:w,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(L||{}),A===void 0||T===void 0)throw Error("you don't has some token account");let I=Io({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),v={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:g},{instruction:M,instructionType:V}=Yi(j(G({},v),{userWallet:this.scope.ownerPubKey,userCoinVault:A,userPcVault:T,userLpVault:_e(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[M],instructionTypes:[V]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:v}})}async getCreatePoolFee({programId:t}){let n=Un({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Di.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){let[a,u]=[i.toString(),o.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,g]=m,f=t.version===4,w;if(f)w=new K(g.toString()).div(p.toString());else{let M=Xi(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?w=new K(1e6).div(M*1e6):w=new K(M*1e6).div(1e6)}let y=n,k=new Ee(0),h=new Ee(0);if(!y.isZero())if(f){h=tn(y.mul(To),Po);let M=y.sub(h),V=p.add(M);k=g.mul(M).div(V)}else{h=y.mul(new Ee(2)).div(new Ee(1e4));let M=y.sub(h);d==="quote"?k=new Ee(Gi(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),M.toNumber())):k=new Ee(Ui(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),M.toNumber()))}let A=new Ee(new K(k.toString()).mul(1-s).toFixed(0)),B=k,T=A,L=new K(k.toString()).div(new K(y.sub(h).toString()).toFixed(0));!y.isZero()&&!k.isZero()&&(L=new K(k.toString()).div(y.sub(h).toString()));let I=w.sub(L).div(w).mul(100);return{amountOut:B,minAmountOut:T,currentPrice:w,executionPrice:L,priceImpact:I,fee:h}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:o,inputMint:s,fixedSide:a,txVersion:u,computeBudgetConfig:c}){let l=this.createTxBuilder(),[m,d]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new fe(m.address),programId:new fe(m.programId),associatedOnly:!1}),g=await this.scope.account.getCreatedTokenAccount({mint:new fe(d.address),programId:new fe(d.programId),associatedOnly:!1}),B=await this.scope.account.handleTokenAccount({side:"in",amount:i,mint:new fe(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:f}=B,w=Le(B,["tokenAccount"]);l.addInstruction(w);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new fe(d.address),tokenAccount:g,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,k=Le(T,["tokenAccount"]);l.addInstruction(k);let h=n||await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),l.addInstruction({instructions:[ji({version:A,poolKeys:h,userKeys:{tokenAccountIn:f,tokenAccountOut:y,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:a})],instructionTypes:[A===4?Z.AmmV4SwapBaseIn:Z.AmmV5SwapBaseIn]}),l.addCustomComputeBudget(c),l.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await gt(this.scope.connection,t.map(l=>({pubkey:new fe(l)})),n),o={},s=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=Vi.decode(m.accountInfo.data);o[String(t[l])]=j(G({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},u=await gt(this.scope.connection,s.map(l=>({pubkey:new fe(l)})),n);for(let l=0;l<s.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new Ee(Ou.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(o)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=j(G({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new K(p.toString()).div(new K(10).pow(m.quoteDecimal.toString())).div(new K(d.toString()).div(new K(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=Bo({[t]:n}),o=i[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:o,poolKeys:s[0]}}};export{Xr as default};
1
+ var Vo=Object.defineProperty,Do=Object.defineProperties;var Wo=Object.getOwnPropertyDescriptors;var yn=Object.getOwnPropertySymbols;var jr=Object.prototype.hasOwnProperty,Qr=Object.prototype.propertyIsEnumerable;var Yr=(r,e,t)=>e in r?Vo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))jr.call(e,t)&&Yr(r,t,e[t]);if(yn)for(var t of yn(e))Qr.call(e,t)&&Yr(r,t,e[t]);return r},j=(r,e)=>Do(r,Wo(e));var ve=(r,e)=>{var t={};for(var n in r)jr.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&yn)for(var n of yn(r))e.indexOf(n)<0&&Qr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Se}from"@solana/web3.js";import{AccountLayout as Ou,NATIVE_MINT as Fo,TOKEN_PROGRAM_ID as Gt}from"@solana/spl-token";import ea from"big.js";import Ln from"bn.js";import Ne from"bn.js";var Lt=9e15,at=1e9,Zn="0123456789abcdef",wn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",hn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Jn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Lt,maxE:Lt,crypto:!1},ei,$e,U=!0,An="[DecimalError] ",st=An+"Invalid argument: ",ti=An+"Precision limit exceeded",ni=An+"crypto unavailable",ri="[object Decimal]",Ae=Math.floor,fe=Math.pow,qo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Go=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Uo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ii=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,W=7,Xo=9007199254740991,zo=wn.length-1,$n=hn.length-1,x={toStringTag:ri};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),F(r)};x.ceil=function(){return F(new this.constructor(this),this.e+1,2)};x.clampedTo=x.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(st+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};x.cosine=x.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+W,n.rounding=1,t=Ho(n,ci(n,t)),n.precision=r,n.rounding=e,F($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(U=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),r=Ae((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=se(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(F(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")&&(F(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ae(this.e/W))*W,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return se(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return F(se(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return F(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Pn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Nt(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return F(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=Nt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Pn(5,r)),i=Nt(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,F(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,se(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ve(t,i,o):new t(0):new t(NaN):e.isZero()?Ve(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ve(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?F(new o(i),r,e,!0):(o.precision=t=n-i.e,i=se(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=Ve(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};x.inverseTangent=x.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=$n)return s=Ve(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=$n)return s=Ve(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/W+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/W),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),U=!0,F(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&Ae(this.e/W)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(U=!1,a=m+p,s=ot(c,a),n=e?kn(l,a+10):ot(r,a),u=se(s,n,a,1),Xt(u.d,i=m,d))do if(a+=10,s=ot(c,a),n=e?kn(l,a+10):ot(r,a),u=se(s,n,a,1),!o){+we(u.d).slice(i+1,i+15)+1==1e14&&(u=F(u,m+1,0));break}while(Xt(u.d,i+=10,d));return U=!0,F(u,m,d)};x.minus=x.sub=function(r){var e,t,n,i,o,s,a,u,c,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(c=p.d,d=r.d,a=g.precision,u=g.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new g(p);else return new g(u===3?-0:0);return U?F(r,a,u):r}if(t=Ae(r.e/W),l=Ae(p.e/W),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/W),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=De-1;--c[i],c[n]+=De}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Tn(c,t),U?F(r,a,u):r):new g(u===3?-0:0)};x.modulo=x.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=se(t,r.abs(),0,3,1),e.s*=r.s):e=se(t,r,0,n.modulo,1),e=e.times(r),U=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return er(this)};x.naturalLogarithm=x.ln=function(){return ot(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,F(r)};x.plus=x.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),U?F(r,a,u):r;if(o=Ae(m.e/W),n=Ae(r.e/W),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/W),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/De|0,c[i]%=De;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Tn(c,n),U?F(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(st+r);return t.d?(e=oi(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return F(new e(r),r.e+1,e.rounding)};x.sine=x.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+W,n.rounding=1,t=jo(n,ci(n,t)),n.precision=r,n.rounding=e,F($e>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(se(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&&(F(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(n,u+1,1),r=!n.times(n).eq(s));break}return U=!0,F(n,u,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=se(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,F($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ae(l.e/W)+Ae(r.e/W),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%De|0,e=a/De|0;o[i]=(o[i]+e)%De|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Tn(o,t),U?F(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return nr(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Le(r,0,at),e===void 0?e=n.rounding:Le(e,0,8),F(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=He(n,!0):(Le(r,0,at),e===void 0?e=i.rounding:Le(e,0,8),n=F(new i(n),r+1,e),t=He(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=He(i):(Le(r,0,at),e===void 0?e=o.rounding:Le(e,0,8),n=F(new o(i),r+i.e+1,e),t=He(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=oi(g)-p.e-1,s=o%W,e.d[0]=fe(10,s<0?W+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(st+a);r=a.gt(e)?o>0?e:c:a}for(U=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*W*2;m=se(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=se(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=se(c,n,o,1).minus(p).abs().cmp(se(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,U=!0,d};x.toHexadecimal=x.toHex=function(r,e){return nr(this,16,r,e)};x.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Le(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]?(U=!1,t=se(t,r,0,e,1).times(r),U=!0,F(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return nr(this,8,r,e)};x.toPower=x.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return F(a,n,o);if(e=Ae(r.e/W),e>=r.d.length-1&&(t=c<0?-c:c)<=Xo)return i=si(u,a,t,n),r.s<0?new u(1).div(i):F(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=fe(+a,c),e=t==0||!isFinite(t)?Ae(c*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(U=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=er(r.times(ot(a,n+t)),n),i.d&&(i=F(i,n+5,1),Xt(i.d,n,o)&&(e=n+10,i=F(er(r.times(ot(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=F(i,n+1,0)))),i.s=s,U=!0,u.rounding=o,F(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=He(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Le(r,1,at),e===void 0?e=i.rounding:Le(e,0,8),n=F(new i(n),r,e),t=He(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Le(r,1,at),e===void 0?e=n.rounding:Le(e,0,8)),F(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=He(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return F(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=He(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function we(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=W-n.length,t&&(o+=it(t)),o+=n;s=r[e],n=s+"",t=W-n.length,t&&(o+=it(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Le(r,e,t){if(r!==~~r||r<e||r>t)throw Error(st+r)}function Xt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=W,i=0):(i=Math.ceil((e+1)/W),e%=W),o=fe(10,W-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==fe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==fe(10,e-3)-1,s}function gn(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]+=Zn.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 Ho(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Pn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Nt(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 se=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,g,f,w,y,k,h,A,B,T,K,I,v,M,V,$,ie=n.constructor,ue=n.s==i.s?1:-1,Q=n.d,X=i.d;if(!Q||!Q[0]||!X||!X[0])return new ie(!n.s||!i.s||(Q?X&&Q[0]==X[0]:!X)?NaN:Q&&Q[0]==0||!X?ue*0:ue/0);for(u?(p=1,l=n.e-i.e):(u=De,p=W,l=Ae(n.e/p)-Ae(i.e/p)),V=X.length,v=Q.length,y=new ie(ue),k=y.d=[],m=0;X[m]==(Q[m]||0);m++);if(X[m]>(Q[m]||0)&&l--,o==null?(T=o=ie.precision,s=ie.rounding):a?T=o+(n.e-i.e)+1:T=o,T<0)k.push(1),g=!0;else{if(T=T/p+2|0,m=0,V==1){for(d=0,X=X[0],T++;(m<v||d)&&T--;m++)K=d*u+(Q[m]||0),k[m]=K/X|0,d=K%X|0;g=d||m<v}else{for(d=u/(X[0]+1)|0,d>1&&(X=r(X,d,u),Q=r(Q,d,u),V=X.length,v=Q.length),I=V,h=Q.slice(0,V),A=h.length;A<V;)h[A++]=0;$=X.slice(),$.unshift(0),M=X[0],X[1]>=u/2&&++M;do d=0,c=e(X,h,V,A),c<0?(B=h[0],V!=A&&(B=B*u+(h[1]||0)),d=B/M|0,d>1?(d>=u&&(d=u-1),f=r(X,d,u),w=f.length,A=h.length,c=e(f,h,w,A),c==1&&(d--,t(f,V<w?$:X,w,u))):(d==0&&(c=d=1),f=X.slice()),w=f.length,w<A&&f.unshift(0),t(h,f,A,u),c==-1&&(A=h.length,c=e(X,h,V,A),c<1&&(d++,t(h,V<A?$:X,A,u))),A=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[A++]=Q[I]||0:(h=[Q[I]],A=1);while((I++<v||h[0]!==void 0)&&T--);g=h[0]!==void 0}k[0]||k.shift()}if(p==1)y.e=l,ei=g;else{for(m=1,d=k[0];d>=10;d/=10)m++;y.e=m+l*p-1,F(y,a?o+y.e+1:o,s,g)}return y}}();function F(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=W,s=e,l=m[d=0],u=l/fe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/W),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=W,s=o-W+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=W,s=o-W+i,u=s<0?0:l/fe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=fe(10,(W-e%W)%W),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,W-o),m[d]=s>0?(l/fe(10,i-s)%fe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==De&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=De)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return U&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function He(r,e,t){if(!r.isFinite())return ui(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)+it(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+it(-i-1)+o,t&&(n=t-s)>0&&(o+=it(n))):i>=s?(o+=it(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+it(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=it(n))),o}function Tn(r,e){var t=r[0];for(e*=W;t>=10;t/=10)e++;return e}function kn(r,e,t){if(e>zo)throw U=!0,t&&(r.precision=t),Error(ti);return F(new r(wn),e,1,!0)}function Ve(r,e,t){if(e>$n)throw Error(ti);return F(new r(hn),e,t,!0)}function oi(r){var e=r.length-1,t=e*W+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function it(r){for(var e="";r--;)e+="0";return e}function si(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/W+4);for(U=!1;;){if(t%2&&(o=o.times(e),Jr(o.d,s)&&(i=!0)),t=Ae(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Jr(e.d,s)}return U=!0,o}function Zr(r){return r.d[r.d.length-1]&1}function ai(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 er(r,e){var t,n,i,o,s,a,u,c=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?(U=!1,u=g):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=F(o.times(r),u,1),t=t.times(++l),a=s.plus(se(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(i=m;i--;)s=F(s.times(s),u,1);if(e==null)if(c<3&&Xt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return F(s,d.precision=g,p,U=!0);else return d.precision=g,s}s=a}}function ot(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,g=10,f=r,w=f.d,y=f.constructor,k=y.rounding,h=y.precision;if(f.s<0||!w||!w[0]||!f.e&&w[0]==1&&w.length==1)return new y(w&&!w[0]?-1/0:f.s!=1?NaN:w?0:f);if(e==null?(U=!1,l=h):l=e,y.precision=l+=g,t=we(w),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 c=kn(y,l+2,h).times(o+""),f=ot(new y(n+"."+t.slice(1)),l-g).plus(c),y.precision=h,e==null?F(f,h,k,U=!0):f;for(m=f,u=s=f=se(f.minus(1),f.plus(1),l,1),d=F(f.times(f),l,1),i=3;;){if(s=F(s.times(d),l,1),c=u.plus(se(s,new y(i),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(kn(y,l+2,h).times(o+""))),u=se(u,new y(p),l,1),e==null)if(Xt(u.d,l-g,k,a))y.precision=l+=g,c=s=f=se(m.minus(1),m.plus(1),l,1),d=F(f.times(f),l,1),i=a=1;else return F(u,y.precision=h,k,U=!0);else return y.precision=h,u;u=c,i+=2}}function ui(r){return String(r.s*r.s/0)}function tr(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%W,t<0&&(n+=W),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=W;n<i;)r.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),U&&(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 Yo(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ii.test(e))return tr(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Go.test(e))t=16,e=e.toLowerCase();else if(qo.test(e))t=2;else if(Uo.test(e))t=8;else throw Error(st+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=si(n,new n(t),o,o*2)),c=gn(e,t,De),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Tn(c,l),r.d=c,U=!1,s&&(r=se(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?fe(2,u):zt.pow(2,u))),U=!0,r)}function jo(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Nt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Pn(5,t)),e=Nt(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 Nt(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/W);for(U=!1,u=t.times(t),a=new r(n);;){if(s=se(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=se(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return U=!0,s.d.length=m+1,s}function Pn(r,e){for(var t=r;--e;)t*=r;return t}function ci(r,e){var t,n=e.s<0,i=Ve(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Zr(t)?n?2:3:n?4:1,e;$e=Zr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function nr(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Le(t,1,at),n===void 0?n=p.rounding:Le(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ui(r);else{for(l=He(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=gn(He(d),10,i),d.e=d.d.length),m=gn(l,10,i),o=u=m.length;m[--u]==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=se(r,d,t,n,0,i),m=r.d,o=r.e,c=ei),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Zn.charAt(m[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=gn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Zn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Jr(r,e){if(r.length>e)return r.length=e,!0}function Qo(r){return new this(r).abs()}function Zo(r){return new this(r).acos()}function Jo(r){return new this(r).acosh()}function $o(r,e){return new this(r).plus(e)}function es(r){return new this(r).asin()}function ts(r){return new this(r).asinh()}function ns(r){return new this(r).atan()}function rs(r){return new this(r).atanh()}function is(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=Ve(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ve(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ve(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(se(r,e,o,1)),e=Ve(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(se(r,e,o,1)),t}function os(r){return new this(r).cbrt()}function ss(r){return F(r=new this(r),r.e+1,2)}function as(r,e,t){return new this(r).clamp(e,t)}function us(r){if(!r||typeof r!="object")throw Error(An+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,at,"rounding",0,8,"toExpNeg",-Lt,0,"toExpPos",0,Lt,"maxE",0,Lt,"minE",-Lt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Jn[t]),(n=r[t])!==void 0)if(Ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(st+t+": "+n);if(t="crypto",i&&(this[t]=Jn[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(ni);else this[t]=!1;else throw Error(st+t+": "+n);return this}function cs(r){return new this(r).cos()}function ls(r){return new this(r).cosh()}function li(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,$r(o)){c.s=o.s,U?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;U?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return tr(c,o.toString())}else if(u!=="string")throw Error(st+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ii.test(o)?tr(c,o):Yo(c,o)}if(i.prototype=x,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=us,i.clone=li,i.isDecimal=$r,i.abs=Qo,i.acos=Zo,i.acosh=Jo,i.add=$o,i.asin=es,i.asinh=ts,i.atan=ns,i.atanh=rs,i.atan2=is,i.cbrt=os,i.ceil=ss,i.clamp=as,i.cos=cs,i.cosh=ls,i.div=ms,i.exp=ds,i.floor=ps,i.hypot=fs,i.ln=bs,i.log=ys,i.log10=ws,i.log2=gs,i.max=hs,i.min=ks,i.mod=As,i.mul=Ts,i.pow=Ps,i.random=xs,i.round=Is,i.sign=Bs,i.sin=Ss,i.sinh=Ks,i.sqrt=Ls,i.sub=Ns,i.sum=Rs,i.tan=Cs,i.tanh=Es,i.trunc=Ms,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 ms(r,e){return new this(r).div(e)}function ds(r){return new this(r).exp()}function ps(r){return F(r=new this(r),r.e+1,3)}function fs(){var r,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function $r(r){return r instanceof zt||r&&r.toStringTag===ri||!1}function bs(r){return new this(r).ln()}function ys(r,e){return new this(r).log(e)}function gs(r){return new this(r).log(2)}function ws(r){return new this(r).log(10)}function hs(){return ai(this,arguments,"lt")}function ks(){return ai(this,arguments,"gt")}function As(r,e){return new this(r).mod(e)}function Ts(r,e){return new this(r).mul(e)}function Ps(r,e){return new this(r).pow(e)}function xs(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Le(r,1,at),n=Math.ceil(r/W),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(ni);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=W,n&&r&&(i=fe(10,W-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=W)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function Is(r){return F(r=new this(r),r.e+1,this.rounding)}function Bs(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Ss(r){return new this(r).sin()}function Ks(r){return new this(r).sinh()}function Ls(r){return new this(r).sqrt()}function Ns(r,e){return new this(r).sub(e)}function Rs(){var r=0,e=arguments,t=new this(e[r]);for(U=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return U=!0,F(t,this.precision,this.rounding)}function Cs(r){return new this(r).tan()}function Es(r){return new this(r).tanh()}function Ms(r){return F(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var zt=x.constructor=li(Jn);wn=new zt(wn);hn=new zt(hn);var L=zt;import{PublicKey as sr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _s}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as mi,SYSVAR_RENT_PUBKEY as vs}from"@solana/web3.js";function P({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Fs=[P({pubkey:_s,isWritable:!1}),P({pubkey:mi.programId,isWritable:!1}),P({pubkey:vs,isWritable:!1})];function rr({publicKey:r,transformSol:e}){let t=ir(r.toString());if(t instanceof ce)return e&&t.equals(Ct)?Rt:t;if(e&&t.toString()===Ct.toBase58())return Rt;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ir(r){try{return new ce(r)}catch{return r}}var xn=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Uu=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new ce("SysvarRent111111111111111111111111111111111"),Xu=new ce("SysvarC1ock11111111111111111111111111111111"),Et=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Os=new ce("Sysvar1nstructions1111111111111111111111111"),zu=mi.programId,Hu=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Yu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ju=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Qu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Zu=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ju=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$u=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ec=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),tc=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),nc=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),rc=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Rt=new ce("So11111111111111111111111111111111111111112"),Ct=ce.default;function Mt(r){return rr({publicKey:r,transformSol:!0})}import{PublicKey as Vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as di}from"@solana/spl-token";var or={chainId:101,address:Vs.default.toBase58(),programId:di.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ct={chainId:101,address:"So11111111111111111111111111111111111111112",programId:di.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 ar=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ct.toBase58()||e instanceof sr&&Ct.equals(e)){this.decimals=ct.decimals,this.symbol=ct.symbol,this.name=ct.name,this.mint=new sr(ct.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?sr.default:rr({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=ar;Te.WSOL=new ar(j(G({},ct),{mint:ct.address}));import{get as pi,set as Ds}from"lodash";import bi from"dayjs";import Ws from"dayjs/plugin/utc";bi.extend(Ws);var ur=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 bi().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}},fi={},qs={};function ae(r){let e=pi(fi,r);if(!e){let t=pi(qs,r);e=new ur({name:r,logLevel:t}),Ds(fi,r,e)}return e}import Bn from"big.js";import Xs from"bn.js";import zs from"decimal.js-light";import Gs from"toformat";var Us=Gs,Ht=Us;var In=ae("module/fraction"),cr=Ht(Bn),Yt=Ht(zs),Hs={[0]:Yt.ROUND_DOWN,[1]:Yt.ROUND_HALF_UP,[2]:Yt.ROUND_UP},Ys={[0]:Bn.roundDown,[1]:Bn.roundHalfUp,[2]:Bn.roundUp},ne=class{constructor(e,t=new Xs(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(re(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(re(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(re(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(re(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||In.logWithError(`${e} is not an integer.`),e<=0&&In.logWithError(`${e} is not positive.`),Yt.set({precision:e+1,rounding:Hs[n]});let i=new Yt(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)||In.logWithError(`${e} is not an integer.`),e<0&&In.logWithError(`${e} is negative.`),cr.DP=e,cr.RM=Ys[n]||1,new cr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Qs=ae("Raydium_price"),Fe=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(lr(n.decimals),lr(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Fe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Qs.logWithError("mul token not equals");let n=super.mul(t);return new Fe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var mr=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Sn=mr;Sn.SOL=new mr(or);import Zs from"bn.js";var yi=new ne(new Zs(100)),Ye=class extends ne{toSignificant(e=5,t,n){return this.mul(yi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(yi).toFixed(e,t,n)}};import{PublicKey as Js}from"@solana/web3.js";import $s from"bn.js";function gi(r){return typeof r=="object"&&r!==null&&![Te,le,Js,ne,$s,Fe,Ye].some(e=>typeof e=="object"&&r instanceof e)}function ft(r){return typeof r=="string"?ir(r):Array.isArray(r)?r.map(e=>ft(e)):gi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ft(t)])):r}var jt=new Ne(0),hi=new Ne(1),ul=new Ne(2),cl=new Ne(3),ll=new Ne(5),dr=new Ne(10),ml=new Ne(100),dl=new Ne(1e3),pl=new Ne(1e4),wi=9007199254740991;function re(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ne)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ne(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=wi||r<=-wi)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ne(String(r))):typeof r=="bigint"?new Ne(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ne(0))}function lr(r){return dr.pow(re(r))}function Kn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var ta=ae("Raydium_amount"),ki=Ht(ea);function na(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")):ta.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var le=class extends ne{constructor(t,n,i=!0,o){let s=new Ln(0),a=dr.pow(new Ln(t.decimals));if(i)s=re(n);else{let u=new Ln(0),c=new Ln(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=na(n.toString(),t.decimals);u=re(l),c=re(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new le(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new le(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return ki.DP=this.token.decimals,new ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as ma}from"@solana/web3.js";import xi,{isBN as Ii}from"bn.js";import{bits as _l,BitStructure as vl,blob as ra,Blob as Fl,cstr as Ol,f32 as Vl,f32be as Dl,f64 as Wl,f64be as ql,greedy as Gl,Layout as ia,ns64 as Ul,ns64be as Xl,nu64 as zl,nu64be as Hl,offset as Yl,s16 as jl,s16be as Ql,s24 as Zl,s24be as Jl,s32 as oa,s32be as $l,s40 as em,s40be as tm,s48 as nm,s48be as rm,s8 as im,seq as sa,struct as om,Structure as aa,u16 as ua,u16be as sm,u24 as am,u24be as um,u32 as cm,u32be as lm,u40 as mm,u40be as dm,u48 as pm,u48be as fm,u8 as ca,UInt as la,union as bm,Union as ym,unionLayoutDiscriminator as gm,utf8 as wm}from"@solana/buffer-layout";var pr=ia,Ai=aa;var fr=la;var Ti=ca,_t=ua;var he=oa;var Pi=sa;var Pe=ra;var bt=class extends pr{constructor(t,n,i){super(t,i);this.blob=Pe(t),this.signed=n}decode(t,n=0){let i=new xi(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 xi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function O(r){return new fr(1,r)}function Ee(r){return new fr(4,r)}function b(r){return new bt(8,!1,r)}function D(r){return new bt(16,!1,r)}function Bi(r){return new bt(1,!0,r)}function Rn(r){return new bt(8,!0,r)}function Si(r){return new bt(16,!0,r)}var Nn=class extends pr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(r){return new Nn(Pe(32),e=>new ma(e),e=>e.toBuffer(),r)}function Re(r){return new Nn(Ti(),da,pa,r)}function da(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function pa(r){return r?1:0}var br=class extends Ai{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new br(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:Ii(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ii(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return Pi(r,i,t)}var Cm=R([Ee("mintAuthorityOption"),S("mintAuthority"),b("supply"),O("decimals"),O("isInitialized"),Ee("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as lp}from"@solana/web3.js";import{MintLayout as dp,TOKEN_PROGRAM_ID as fp}from"@solana/spl-token";import{PublicKey as Jt,sendAndConfirmTransaction as hr,Transaction as $t,TransactionMessage as en,VersionedTransaction as tn}from"@solana/web3.js";import Aa from"axios";var Z={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as fa,ComputeBudgetProgram as Ki,Transaction as Ni,TransactionMessage as ba,Keypair as Ri,VersionedTransaction as Ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";var Li=ae("Raydium_txUtil"),Ei=1644;function Cn(r){let e=[],t=[];return r.microLamports&&(e.push(Ki.setComputeUnitPrice({microLamports:r.microLamports})),t.push(Z.SetComputeUnitPrice)),r.units&&(e.push(Ki.setComputeUnitLimit({units:r.units})),t.push(Z.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function vt(r,e){var n,i;let t=e!=null?e:"confirmed";try{return((i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function ga(r,e){r.length<1&&Li.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Li.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ni;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ei}catch{return!1}}function pe(r,e){let[t,n]=fa.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Qt({instructions:r,payer:e,signers:t}){return ga(r,[e,...t])}function Zt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ri.generate().publicKey.toString()}){let o=new ba({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ci(o).serialize()).toString("base64").length<Ei}catch{return!1}}var wa=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 Ni&&(t.recentBlockhash||(t.recentBlockhash=ya.toBase58()),t.feePayer||(t.feePayer=Ri.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ci&&(n=wa(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Mi,AddressLookupTableAccount as En}from"@solana/web3.js";import{PublicKey as ha}from"@solana/web3.js";import{MINT_SIZE as Qm,TOKEN_PROGRAM_ID as Zm,getTransferFeeConfig as Jm,unpackMint as $m}from"@solana/spl-token";var yr=ae("Raydium_accountInfo_util");async function et(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),s=gr(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=gr(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&yr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:g,lamports:f,owner:w,rentEpoch:y}=d;return p.length!==2&&p[1]!=="base64"&&yr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new ha(w),rentEpoch:y}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&yr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function gt(r,e,t){let n=await et(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>j(G({},i),{accountInfo:n[o]}))}async function wr({connection:r,address:e}){let t=await et(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Mi(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new En({key:s,state:En.deserialize(o.data)});n[s.toString()]=a,Mn[s.toString()]=a}return n}var Mn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new En({key:new Mi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:En.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 _n=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,this.blockhashCommitment=e.blockhashCommitment}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 Aa.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}=Cn(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!==Jt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var n;let t=new $t;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var c;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=i||{},u=o!=null?o:await vt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),yt([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await hr(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var w;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await vt(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(m){let y=[];for(let k of s){let h=await hr(this.connection,k,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});y.push(h)}return{txIds:y,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(y,k)=>(y.recentBlockhash=f,await this.connection.sendRawTransaction(y.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let y=s.map((h,A)=>(h.recentBlockhash=f,a[A].length&&h.sign(...a[A]),h));yt(y);let k=await this.signAllTransactions(y);if(m){let h=0,A=[],B=async()=>{if(!k[h])return;let T=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:g});A.push({txId:T,status:"sent",signedTx:k[h]}),d==null||d([...A]),h++,this.connection.onSignature(T,K=>{let I=A.findIndex(v=>v.txId===T);I>-1&&(A[I].status=K.err?"error":"success"),d==null||d([...A]),K.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:A.map(T=>T.txId),signedTxs:k}}else{let h=[];for(let A=0;A<k.length;A+=1){let B=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:g});h.push(B)}return{txIds:h,signedTxs:k}}}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){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=ve(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=G(G({},this.cluster==="devnet"?{}:Mn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let g of a)s[g]===void 0&&u.push(new Jt(g));let c=await wr({connection:this.connection,address:u});for(let[g,f]of Object.entries(c))s[g]=f;let l=new en({payerKey:this.feePayer,recentBlockhash:i?Jt.default.toBase58():await vt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new tn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var k;let{recentBlockHash:f,skipPreflight:w=!0,sendAndConfirm:y}=g||{};if(f&&(m.message.recentBlockhash=f),yt([m]),(k=this.owner)!=null&&k.isKeyPair){let h=await this.connection.sendTransaction(m,{skipPreflight:w});if(y){let{lastValidBlockHeight:A,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:A,signature:h},"confirmed")}return{txId:h,signedTx:m}}if(this.signAllTransactions){let h=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(h[0],{skipPreflight:w}),signedTx:h[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{};if(p&&s.forEach(w=>w.message.recentBlockhash=p),yt(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let w=[];for(let y of s){let k=await this.connection.sendTransaction(y,{skipPreflight:g}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:k},"confirmed"),w.push(k)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async w=>await this.connection.sendTransaction(w,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let y=0,k=[],h=async()=>{if(!w[y])return;let A=await this.connection.sendTransaction(w[y],{skipPreflight:g});k.push({txId:A,status:"sent",signedTx:w[y]}),d==null||d([...k]),y++,this.connection.onSignature(A,B=>{let T=k.findIndex(K=>K.txId===A);T>-1&&(k[T].status=B.err?"error":"success"),d==null||d([...k]),B.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:w}}else{let y=[];for(let k=0;k<w.length;k+=1){let h=await this.connection.sendTransaction(w[k],{skipPreflight:g});y.push(h)}return{txIds:y,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let c=e||{},{computeBudgetConfig:t}=c,n=ve(c,["computeBudgetConfig"]),i=t?Cn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((m,d)=>j(G({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(m=>{let d=[...u,m],p=t?[...i.instructions,...d]:d,f=[...new Set(d.map(w=>w.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(w=>new Jt(w));if(u.length<12&&Qt({instructions:p,payer:this.feePayer,signers:f})||Qt({instructions:d,payer:this.feePayer,signers:f}))u.push(m);else{if(u.length===0)throw Error("item ins too big");Qt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:f})?s.push(new $t().add(...i.instructions,...u)):s.push(new $t().add(...u)),a.push(Array.from(new Set(u.map(w=>w.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(w=>o[w]).filter(w=>w!==void 0)),u=[m]}}),u.length>0){let d=[...new Set(u.map(p=>p.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Qt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new $t().add(...i.instructions,...u)):s.push(new $t().add(...u)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var y;let{sequentially:d,onTxUpdate:p,recentBlockHash:g,skipPreflight:f=!0}=m||{},w=g!=null?g:await vt(this.connection,this.blockhashCommitment);if(s.forEach(async(k,h)=>{k.recentBlockhash=w,a[h].length&&k.sign(...a[h])}),yt(s),(y=this.owner)!=null&&y.isKeyPair){if(d){let k=[];for(let h of s){let A=await hr(this.connection,h,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});k.push(A)}return{txIds:k,signedTxs:s}}return{txIds:await Promise.all(s.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let k=await this.signAllTransactions(s);if(d){let h=0,A=[],B=async()=>{if(!k[h])return;let T=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:f});A.push({txId:T,status:"sent",signedTx:k[h]}),p==null||p([...A]),h++,this.connection.onSignature(T,K=>{let I=A.findIndex(v=>v.txId===T);I>-1&&(A[I].status=K.err?"error":"success"),p==null||p([...A]),K.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:A.map(T=>T.txId),signedTxs:k}}else{let h=[];for(let A=0;A<k.length;A+=1){let B=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:f});h.push(B)}return{txIds:h,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var y;let w=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=w,o=ve(w,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=G(G({},this.cluster==="devnet"?{}:Mn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let k of a)s[k]===void 0&&u.push(new Jt(k));let c=await wr({connection:this.connection,address:u});for(let[k,h]of Object.entries(c))s[k]=h;let l=t?Cn(t):{instructions:[],instructionTypes:[]},m=await vt(this.connection,this.blockhashCommitment),d=this.signers.reduce((k,h)=>j(G({},k),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(k=>{let h=[...f,k],A=t?[...l.instructions,...h]:h;if(f.length<12&&Zt({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Zt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(k);else{if(f.length===0)throw Error("item ins too big");let B={};for(let T of[...new Set(a)])s[T]!==void 0&&(B[T]=s[T]);if(t&&Zt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new en({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new tn(T))}else{let T=new en({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new tn(T))}g.push(Array.from(new Set(f.map(T=>T.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[k]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Zt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new en({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new tn(A))}else{let A=new en({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new tn(A))}g.push(h)}return(y=this.owner)!=null&&y.signer&&g.forEach(k=>{k.some(h=>h.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async k=>{var K;let{sequentially:h,onTxUpdate:A,recentBlockHash:B,skipPreflight:T=!0}=k||{};if(p.map(async(I,v)=>{g[v].length&&I.sign(g[v]),B&&(I.message.recentBlockhash=B)}),yt(p),(K=this.owner)!=null&&K.isKeyPair){if(h){let I=[];for(let v of p){let M=await this.connection.sendTransaction(v,{skipPreflight:T}),{lastValidBlockHeight:V,blockhash:$}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:$,lastValidBlockHeight:V,signature:M},"confirmed"),I.push(M)}return{txIds:I,signedTxs:p}}return{txIds:await Promise.all(p.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:T}))),signedTxs:p}}if(this.signAllTransactions){let I=await this.signAllTransactions(p);if(h){let v=0,M=[],V=async()=>{if(!I[v])return;let $=await this.connection.sendTransaction(I[v],{skipPreflight:T});M.push({txId:$,status:"sent",signedTx:I[v]}),A==null||A([...M]),v++,this.connection.onSignature($,ie=>{let ue=M.findIndex(Q=>Q.txId===$);ue>-1&&(M[ue].status=ie.err?"error":"success"),A==null||A([...M]),ie.err||V()},"processed"),this.connection.getSignatureStatus($)};return V(),{txIds:[],signedTxs:I}}else{let v=[];for(let M=0;M<I.length;M+=1){let V=await this.connection.sendTransaction(I[M],{skipPreflight:T});v.push(V)}return{txIds:v,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function gr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ee}from"@solana/web3.js";var _i=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vi=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Fi=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Td=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Pd=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xd=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Id=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Bd=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Sd=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Kd=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ld=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Nd=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Rd=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Cd=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ed=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Md=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),_d=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vd=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fd=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ta=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Pa=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),xa=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var vn={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ta,CREATE_CPMM_POOL_AUTH:Pa,CREATE_CPMM_POOL_FEE_ACC:xa,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Ia}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ba}from"@solana/spl-token";function Me(r,e,t){return pe([r.toBuffer(),(t!=null?t:Ba).toBuffer(),e.toBuffer()],new Ia("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var nn=1e4;function be(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=j(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new We(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===nn){let u=new We(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=rn(r.mul(new We(nn)),new We(nn-o.transferFeeBasisPoints)),c=new We(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=rn(l.mul(new We(o.transferFeeBasisPoints)),new We(nn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=rn(r.mul(new We(o.transferFeeBasisPoints)),new We(nn)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function wt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function rn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}var Oi=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var Fn=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=ve(o,["address","programId","decimals"]);return G({chainId:101,address:Mt(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var kr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),on=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new _n({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(kr(e))}logInfo(...e){this.logger.info(kr(e))}logAndCreateError(...e){let t=kr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as an,ASSOCIATED_TOKEN_PROGRAM_ID as Da}from"@solana/spl-token";import{PublicKey as je,TransactionInstruction as Ot,SystemProgram as Wa,SYSVAR_RENT_PUBKEY as Gp}from"@solana/web3.js";var Ar=R([O("instruction"),b("amountIn"),b("minAmountOut")]),Tr=R([O("instruction"),b("maxAmountIn"),b("amountOut")]),Mp=R([O("instruction"),O("nonce")]),Sa=R([O("instruction"),O("nonce"),b("startTime")]),Vi=R([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),b("swapBase2QuoteFee"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),b("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),b("lpReserve"),q(b(),3,"padding")]),_p=R([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(b(),64,"padding")]),Pr=R([O("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),xr=R([O("instruction"),b("amountIn")]);var Di=R([b("fee")]);import{PublicKey as Ka}from"@solana/web3.js";var Ft=new Ka("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kt=5e4,La=R([b("x"),b("y"),b("price")]),Na=R([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),q(La,kt,"DataElement")]);function Ra(r,e){return[0,kt-2]}function Ca(r){return[0,kt-2]}function Ea(r){return[0,kt-2]}function Ma(r,e,t){let[n,i]=Ra(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=kt-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Ir(r,e,t){let[n,i,o]=Ma(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function ht(r,e,t){return e*r.multiplier/t}function Wi(r,e,t){return e*t/r.multiplier}function _a(r,e){let[t,n]=Ca(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>kt-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function va(r,e){let[t,n]=Ea(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=kt-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function qi(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=_a(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let g,f;return n?(g=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(g=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[g,f,!1,a]}}}function Fa(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=va(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let g,f;return n?(g=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(g=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[g,f,!1,a]}}}function Oa(r,e){let t=qi(r,e,0,!1);return t[3]?t[0]:0}function Gi(r,e,t,n){let i=Ir(r,e,t),o=ht(r,e,i),s=ht(r,t,i),a=ht(r,n,i),u=!0,[c,l,m,d]=qi(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Wi(r,p,i)}}function Ui(r,e,t,n){let i=Ir(r,e,t),o=ht(r,e,i),s=ht(r,t,i),a=ht(r,n,i),u=!1,[c,l,m,d]=Fa(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Wi(r,p,i)}}function Va(r){let e=Na.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Xi(r,e,t,n){let i=Oa(r,ht(r,e,Ir(r,e,t)))/r.multiplier;return n?i:1/i}var sn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Ft);e&&(this._layoutData=Va(e==null?void 0:e.data))}}};var zi=ae("Raydium_liquidity_instruction");function Hi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Pr.span);Pr.encode({instruction:3,baseAmountIn:re(i),quoteAmountIn:re(o),fixedSide:s==="base"?jt:hi},a);let u=[P({pubkey:an,isWritable:!1}),P({pubkey:new je(e.id)}),P({pubkey:new je(t.authority),isWritable:!1}),P({pubkey:new je(t.openOrders),isWritable:!1}),P({pubkey:new je(t.targetOrders)}),P({pubkey:new je(e.lpMint.address)}),P({pubkey:new je(t.vault.A)}),P({pubkey:new je(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(P({pubkey:Ft})),u.push(P({pubkey:new je(e.marketId),isWritable:!1}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:new je(t.marketEventQueue),isWritable:!1})),new Ot({programId:new je(e.programId),keys:u,data:a})}function Br(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ft(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(xr.span);xr.encode({instruction:4,amountIn:re(i)},a);let u=[P({pubkey:an,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.mintLp.address}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return s===5?u.push(P({pubkey:Ft})):(u.push(P({pubkey:o.id})),u.push(P({pubkey:o.id}))),u.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks})),new Ot({programId:o.programId,keys:u,data:a})}return new Ot({programId:o.programId,keys:[]})}function Yi({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:g,userCoinVault:f,userPcVault:w,userLpVault:y,nonce:k,openTime:h,coinAmount:A,pcAmount:B,ammConfigId:T,feeDestinationId:K}){let I=R([O("instruction"),O("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),v=[{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Da,isSigner:!1,isWritable:!1},{pubkey:Wa.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:K,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0}],M=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:k,openTime:h,coinAmount:A,pcAmount:B},M),{instruction:new Ot({keys:v,programId:r,data:M}),instructionType:Z.AmmV4CreatePool}}function qa({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ft(r),s=Buffer.alloc(Ar.span);Ar.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[P({pubkey:an,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders})];return i===4&&a.push(P({pubkey:o.targetOrders})),a.push(P({pubkey:o.vault.A}),P({pubkey:o.vault.B})),i===5&&a.push(P({pubkey:Ft})),a.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1})),new Ot({programId:o.programId,keys:a,data:s})}function Ga({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ft(r),s=Buffer.alloc(Tr.span);Tr.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[P({pubkey:an,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return i===5&&a.push(P({pubkey:Ft})),a.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Ot({programId:o.programId,keys:a,data:s})}function ji(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return qa(j(G({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Ga(j(G({},a),{maxAmountIn:i,amountOut:o}),t);zi.logWithError("invalid params","params",r)}throw zi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as ke,TOKEN_2022_PROGRAM_ID as dt,ASSOCIATED_TOKEN_PROGRAM_ID as wo}from"@solana/spl-token";import{PublicKey as N,TransactionInstruction as Xe,SystemProgram as Wt,Keypair as Vr}from"@solana/web3.js";import ho from"bn.js";import Ja from"bn.js";function On(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Sr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Kr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function un(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Qi(r,e){return un(r,e)?null:Sr(r,e)}function Zi(r,e){return un(r,e)?null:Kr(r,e)}var rf=Buffer.from("amm_config","utf8"),Ua=Buffer.from("pool","utf8"),Xa=Buffer.from("pool_vault","utf8"),za=Buffer.from("pool_reward_vault","utf8"),Ji=Buffer.from("position","utf8"),Ha=Buffer.from("tick_array","utf8"),Ya=Buffer.from("operation","utf8"),ja=Buffer.from("pool_tick_array_bitmap_extension","utf8");function $i(r,e,t,n){return pe([Ua,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Lr(r,e,t){return pe([Xa,e.toBuffer(),t.toBuffer()],r)}function eo(r,e,t){return pe([za,e.toBuffer(),t.toBuffer()],r)}function oe(r,e,t){return pe([Ha,e.toBuffer(),On(t)],r)}function At(r,e,t,n){return pe([Ji,e.toBuffer(),On(t),On(n)],r)}function Qe(r,e){return pe([Ji,e.toBuffer()],r)}function Vn(r){return pe([Buffer.from("metadata","utf8"),Et.toBuffer(),r.toBuffer()],Et)}function Nr(r){return pe([Ya],r)}function qe(r,e){return pe([ja,e.toBuffer()],r)}import Oe from"bn.js";var me=new Oe(0),Ze=new Oe(1),tt=new Oe(-1),_e=new Oe(1).shln(64),Dn=new Oe(1).shln(128),Rr=_e.sub(Ze),cn=64,to=Dn.subn(1),xe=-443636,Ke=-xe,Vt=new Oe("4295048016"),Dt=new Oe("79226673521066979257578248091"),af=new Oe("4295048017"),uf=new Oe("79226673521066979257578248090"),no=16,ro="59543866431248",io="184467440737095516",oo="15793534762490258745",Wn=new Oe(10).pow(new Oe(6));var cf=new Oe("18446744073700000000");var Qa=15,J=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=_.getTickArrayStartIndexByTick(i,o),l=_.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Qa/2));for(let p=0;p<l.length;p++){let{publicKey:g}=oe(t,n,l[p]);u.push(g)}let m=(await et(e,u)).map(p=>p!==null?ln.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=j(G({},g),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=_.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/J.tickCount(t)),a=n?_.searchLowBitFromStart(i,o,s-1,1,t):_.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=ye-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<ye;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=oe(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=_.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<ye;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=oe(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(_.checkIsOutOfBoundary(e)){if(e>Ke)return!1;let n=_.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ye*e}};import Y from"bn.js";import{PublicKey as Ge}from"@solana/web3.js";import de from"bn.js";var Cr=14,nt=class{static maxTickInTickarrayBitmap(e){return e*ye*Tt}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(!J.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-J.tickCount(n):t+J.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ye,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Qi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Zi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-J.tickCount(n)}}}},mn=class{static getBitmapOffset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=nt.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=nt.maxTickInTickarrayBitmap(e),n=-t;if(Ke<=t)throw Error(`extensionTickBoundary check error: ${Ke}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:_.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=J.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}=nt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=_.mergeTickArrayBitmap(e).shln(Tt-1-a),c=un(512,u)?null:Sr(512,u);if(c!==null){let l=t-c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=_.mergeTickArrayBitmap(e).shrn(a),c=un(512,u)?null:Kr(512,u);if(c!==null){let l=t+c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-J.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%nt.maxTickInTickarrayBitmap(t),i=Math.floor(n/J.tickCount(t));return e<0&&n!=0&&(i=Tt-i),i}};import Je from"bn.js";var dn=class{static getfeeGrowthInside(e,t,n){let i=new Je(0),o=new Je(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 Je(0),a=new Je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=z.wrappingSubU128(z.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=z.wrappingSubU128(z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=z.mulDivFloor(z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=z.mulDivFloor(z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=z.mulDivFloor(z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=z.mulDivFloor(z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=z.wrappingSubU128(u,c.growthInsideLastX64),m=z.mulDivFloor(l,t.liquidity,_e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=z.wrappingSubU128(u,c.growthInsideLastX64),m=z.mulDivFloor(l,t.liquidity,_e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Je(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(z.wrappingSubU128(z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Je(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(z.wrappingSubU128(z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var w,y,k,h;let a=H.priceToSqrtPriceX64(new L(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=te.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[be(m.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),be(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,f]=[be(new Je(new L(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),be(new Je(new L(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as so}from"@solana/spl-token";var Ie=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:w}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return u.push(...g),{allTrade:d,expectedAmountOut:p.mul(tt),remainingAccounts:u,executionPrice:f,feeAmount:w}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:w}=oe(e.programId,e.id,f.nextStartIndex);a.push(w)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(tt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ie.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?mn.checkTickArrayIsInit(J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):_.checkTickArrayIsInitialized(_.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=oe(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=oe(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/J.tickCount(e.tickSpacing)),i=t?_.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):_.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=J.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=nt.nextInitializedTickArrayStartIndex(_.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=mn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Ke)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=j(G({},m),{perSecond:z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ge(d)});if(p.tokenMint.equals(Ge.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let g=new de(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),w=z.mulDivFloor(f,p.emissionsPerSecondX64,i),y=p.rewardGrowthGlobalX64.add(w),k=z.mulDivFloor(f,p.emissionsPerSecondX64,_e),h=p.rewardTotalEmissioned.add(k);s.push(j(G({},p),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:h,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=_.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=nt.maxTickInTickarrayBitmap(e),n=-t;return t>Ke&&(t=J.getArrayStartIndex(Ke,e)+J.tickCount(e)),n<xe&&(n=J.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/J.tickCount(t)*Tt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await gt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=co.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=_.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=_.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=oe(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await gt(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=ln.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=j(G({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(Qe(p,d).publicKey);let l=await et(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=uo.decode(d.data),g=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===g);if(f===void 0)continue;let w=f.state,y=_._getTickPriceLegacy({poolInfo:w,tick:p.tickLower,baseIn:!0}),k=_._getTickPriceLegacy({poolInfo:w,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:A}=te.getAmountsFromLiquidity(w.sqrtPriceX64,y.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(y.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:y.price,priceUpper:k.price,amountA:h,amountB:A,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(G({},I),{pendingReward:new de(0)})),leverage:B,tokenFeeAmountA:new de(0),tokenFeeAmountB:new de(0)}];let T=await _.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),K=await _.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=K}if(o){let d=Object.values(m),p=await et(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let w=p[f];if(w===null)continue;let y=d[f].toString();g[y]=ln.decode(w.data)}for(let{state:f,positionAccount:w}of e)if(!!w)for(let y of w){let k=`${f.programId.toString()}-${f.id.toString()}-${y.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${y.tickUpper}`,A=g[m[k].toString()],B=g[m[h].toString()],T=A.ticks[_.getTickOffsetInArray(y.tickLower,f.tickSpacing)],K=B.ticks[_.getTickOffsetInArray(y.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:v}=await dn.GetPositionFees(f,y,T,K),M=await dn.GetPositionRewards(f,y,T,K);y.tokenFeeAmountA=I.gte(new de(0))?I:new de(0),y.tokenFeeAmountB=v.gte(new de(0))?v:new de(0);for(let V=0;V<M.length;V++)y.rewardInfos[V].pendingReward=M[V].gte(new de(0))?M[V]:new de(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new L(0),catchLiquidityInsufficient:u=!1}){var $;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new L(0))?c=l?Vt.add(new de(1)):Dt.sub(new de(1)):c=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=be(o,m,i,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:w,executionPrice:y,feeAmount:k}=Ie.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub(($=p.fee)!=null?$:me),c,u),h=be(f,d,i,!1),A=H.sqrtPriceX64ToPrice(y,e.mintA.decimals,e.mintB.decimals),B=l?A:new L(1).div(A),T=f.mul(new de(Math.floor((1-s)*1e10))).div(new de(1e10)),K=be(T,d,i,!1),I=l?e.currentPrice:new L(1).div(e.currentPrice),v=new L(B).sub(I).abs(),M=I,V=new Ye(new L(v).mul(10**15).toFixed(0),new L(M).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:h,minAmountOut:K,expirationTime:wt(p.expirationTime,h.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:V,fee:k,remainingAccounts:w,executionPriceX64:y}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Te(j(G({},c),{mint:c.address,isToken2022:c.programId===so.toBase58()})),new Te(j(G({},l),{mint:l.address,isToken2022:l.programId===so.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:w,expirationTime:y,currentPrice:k,executionPrice:h,priceImpact:A,fee:B,remainingAccounts:T,executionPriceX64:K}=Ie.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ge(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),I=j(G({},g),{amount:new le(m,g.amount),fee:g.fee===void 0?void 0:new le(m,g.fee)}),v=j(G({},f),{amount:new le(d,f.amount),fee:f.fee===void 0?void 0:new le(d,f.fee)}),M=j(G({},w),{amount:new le(d,w.amount),fee:w.fee===void 0?void 0:new le(d,w.fee)}),V=new Fe({baseToken:m,denominator:new de(10).pow(new de(20+m.decimals)),quoteToken:d,numerator:k.mul(new L(10**(20+d.decimals))).toFixed(0)}),$=new Fe({baseToken:m,denominator:new de(10).pow(new de(20+m.decimals)),quoteToken:d,numerator:h.mul(new L(10**(20+d.decimals))).toFixed(0)}),ie=new le(m,B);return{allTrade:p,realAmountIn:I,amountOut:v,minAmountOut:M,expirationTime:y,currentPrice:V,executionPrice:$,priceImpact:A,fee:ie,remainingAccounts:T,executionPriceX64:K}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,w;let o=e[t],s=_.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=_.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*p,((f=o.rewardApr[1])!=null?f:0)*p,((w=o.rewardApr[2])!=null?w:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Mt(e.mintA.address).toString()],d=i[Mt(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=H.priceToSqrtPriceX64(new L(e.price),e.mintA.decimals,e.mintB.decimals),w=H.getSqrtPriceX64FromTick(s),y=H.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=te.getAmountsFromLiquidityWithSlippage(f,w,y,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:B}=te.getAmountsFromLiquidityWithSlippage(f,w,y,o,!1,!1,0),T=new L(k.toString()).div(new L(10).pow(p)).mul(m.value).add(new L(h.toString()).div(new L(10).pow(g)).mul(d.value)),K=new L(A.toString()).div(new L(10).pow(p)).mul(m.value).add(new L(B.toString()).div(new L(10).pow(g)).mul(d.value)),I=new L(1).div(T.add(K)),M=new L(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),V=3600*24*365,$=e.rewardDefaultInfos.map(ie=>{var X,pt;let ue=ie.mint.decimals,Q=i[ie.mint.address];return u<((X=ie.startTime)!=null?X:0)||u>((pt=ie.endTime)!=null?pt:0)||!ie.perSecond||!Q||ue===void 0?0:new L(Q.value).mul(new L(ie.perSecond).mul(V)).div(new L(10).pow(ue)).mul(I).mul(100).toNumber()});return{feeApr:M,rewardsApr:$,apr:M+$.reduce((ie,ue)=>ie+ue,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var y,k;let l=H.priceToSqrtPriceX64(new L(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=be(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,u,!c),f=new de(new L(g.amount.sub((k=g.fee)!=null?k:me).toString()).mul(p).toFixed(0)),w;if(l.lte(m))w=t?te.getLiquidityFromTokenAmountA(m,d,f,!a):new de(0);else if(l.lte(d)){let h=te.getLiquidityFromTokenAmountA(l,d,f,!a),A=te.getLiquidityFromTokenAmountB(m,l,f);w=t?h:A}else w=t?new de(0):te.getLiquidityFromTokenAmountB(m,d,f);return Ie.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:w,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var w,y,k,h;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=te.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new L(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[be(m.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),be(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,f]=[be(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),be(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Ge(u.id));(await et(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=ao.decode(u.data))});let s=t.map(u=>qe(new Ge(u.programId),new Ge(u.id)).publicKey),a=await Ie.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>j(G({},u),{[c.id]:j(G({},n[c.id]),{id:new Ge(c.id),version:6,programId:new Ge(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:j(G({},c.config),{id:new Ge(c.config.id),fundOwner:""}),currentPrice:new L(c.price),exBitmapInfo:a[qe(new Ge(c.programId),new Ge(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var z=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(Ze)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(Ze)).div(n)}static x64ToDecimal(e,t){return new L(e.toString()).div(L.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new Y(e.mul(L.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Dn).sub(t).mod(Dn)}};function ge(r,e){return Er(r.mul(e),64,256)}function Za(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Er(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return z.x64ToDecimal(e).pow(2).mul(L.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return z.decimalToX64(e.mul(L.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(cn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?z.mulDivCeil(s,e,a):z.mulDivRoundingUp(s,Ze,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(cn);if(i)return e.add(o.div(t));{let s=z.mulDivRoundingUp(o,Ze,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<xe||e>Ke)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new Y("18445821805675395072"):new Y("18446744073709551616");return(t&2)!=0&&(n=ge(n,new Y("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new Y("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new Y("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new Y("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new Y("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new Y("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new Y("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new Y("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new Y("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new Y("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new Y("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new Y("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new Y("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new Y("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new Y("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new Y("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new Y("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new Y("37481735321082"))),e>0&&(n=to.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Dt)||e.lt(Vt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Y(t-64),i=Za(n,32,128),o=new Y("8000000000000000","hex"),s=0,a=new Y(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Y(0))&&s<no;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new Y(ro)),d=Er(m.sub(new Y(io)),64,128).toNumber(),p=Er(m.add(new Y(oo)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},xt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=xt.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},te=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(cn),s=t.sub(e);return i?z.mulDivRoundingUp(z.mulDivCeil(o,s,t),Ze,e):z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?z.mulDivCeil(n,t.sub(e),_e):z.mulDivFloor(n,t.sub(e),_e)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?z.mulDivRoundingUp(a,Ze,Rr):a.shrn(cn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),z.mulDivFloor(n,Rr,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return te.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=te.getLiquidityFromTokenAmountA(e,n,i,!1),a=te.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return te.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:te.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new Y(0)};if(e.lt(n)){let s=te.getTokenAmountAFromLiquidity(e,n,i,o),a=te.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new Y(0),amountB:te.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=te.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new Y(new L(u.toString()).mul(l).toFixed(0)),d=new Y(new L(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var k,h,A,B;let c=H.priceToSqrtPriceX64(new L(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=te.getAmountsFromLiquidity(c,l,m,i,s),[g,f]=[be(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),be(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[w,y]=[be(new Y(new L(p.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),be(new Y(new L(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,u)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:w,amountSlippageB:y,expirationTime:wt(g.expirationTime,f.expirationTime)}}},Pt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f=!1){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(g||(g=s?Vt.add(Ze):Dt.sub(Ze)),s){if(g.lt(Vt))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(Dt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let w=d.gt(me),y={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+J.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new Y(0)},k=p,h=n[p],A=0,B=!s&&h.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(me)&&!y.sqrtPriceX64.eq(g);){A>10;let T={};T.sqrtPriceStartX64=y.sqrtPriceX64;let K=_.nextInitTick(h,y.tick,l,s,B),I=K||null,v=null;if(!(I!=null&&I.liquidityGross.gtn(0))){let V=Ie.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},k,s);if(!V.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:y.amountSpecifiedRemaining,amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts};throw Error("swapCompute LiquidityInsufficient")}k=V.nextStartIndex;let{publicKey:$}=oe(e,t,k);v=$,h=n[k];try{I=_.firstInitializedTick(h,s)}catch{throw Error("not found next tick info")}}T.tickNext=I.tick,T.initialized=I.liquidityGross.gtn(0),p!==k&&v&&(y.accounts.push(v),p=k),T.tickNext<xe?T.tickNext=xe:T.tickNext>Ke&&(T.tickNext=Ke),T.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(T.tickNext);let M;if(s&&T.sqrtPriceNextX64.lt(g)||!s&&T.sqrtPriceNextX64.gt(g)?M=g:M=T.sqrtPriceNextX64,[y.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Pt.swapStepCompute(y.sqrtPriceX64,M,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(T.feeAmount),w?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),y.amountCalculated=y.amountCalculated.sub(T.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(T.amountOut),y.amountCalculated=y.amountCalculated.add(T.amountIn.add(T.feeAmount))),y.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let V=I.liquidityNet;s&&(V=V.mul(tt)),y.liquidity=te.addDelta(y.liquidity,V)}B=T.tickNext!=y.tick&&!s&&h.startTickIndex===T.tickNext,y.tick=s?T.tickNext-1:T.tickNext}else if(y.sqrtPriceX64!=T.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(y.sqrtPriceX64);B=V!=y.tick&&!s&&h.startTickIndex===V,y.tick=V}++A}try{let{nextStartIndex:T,isExist:K}=J.nextInitializedTickArray(y.tick,l,s,i,o);K&&p!==T&&(y.accounts.push(oe(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:me,amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new Y(0),amountIn:new Y(0),amountOut:new Y(0),feeAmount:new Y(0)},a=e.gte(t),u=i.gte(me);if(u){let l=z.mulDivFloor(i,Wn.sub(new Y(o.toString())),Wn);s.amountIn=a?te.getTokenAmountAFromLiquidity(t,e,n,!0):te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?te.getTokenAmountBFromLiquidity(t,e,n,!1):te.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(tt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=te.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=te.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:te.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:te.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(tt))&&(s.amountOut=i.mul(tt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=z.mulDivCeil(s.amountIn,new Y(o),Wn.sub(new Y(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ye=60,Tt=512,_=class{static getTickArrayAddressByTick(e,t,n,i){let o=_.getTickArrayStartIndexByTick(n,i),{publicKey:s}=oe(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=_.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ye)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=J.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)*J.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ye,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ye,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*ye:e+t*ye}static mergeTickArrayBitmap(e){let t=new Ja(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*ye));return[..._.searchLowBitFromStart(e,t,s-1,o,n),..._.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return _.searchHightBitFromStart(e,t,0,Tt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=_.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=oe(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>_.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>_.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Ke}static nextInitTick(e,t,n,i,o){if(J.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<ye;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ye-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ye;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new L(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new L(1).div(t),o=xt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new L(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new L(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new L(1).div(t),o=xt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new L(1).div(a)}}};var gb=R([Pe(8),O("bump"),_t("index"),S(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),_t("tickSpacing"),q(b(),8,"")]),$a=R([Ee("blockTimestamp"),D("sqrtPriceX64"),D("cumulativeTimePriceX64"),q(D(),1,"")]),Mr=R([Pe(8),Re("initialized"),S("poolId"),q($a,1e3,"observations"),q(D(),5,"")]),eu=R([O("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),D("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),D("rewardGrowthGlobalX64")]),ao=R([Pe(8),O("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),O("mintDecimalsA"),O("mintDecimalsB"),_t("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),he("tickCurrent"),_t("observationIndex"),_t("observationUpdateDuration"),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),D("swapInAmountTokenA"),D("swapOutAmountTokenB"),D("swapInAmountTokenB"),D("swapOutAmountTokenA"),O("status"),q(O(),7,""),q(eu,3,"rewardInfos"),q(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),q(b(),15*4-3,"padding")]),tu=R([D("growthInsideLastX64"),b("rewardAmountOwed")]),uo=R([Pe(8),O("bump"),S("nftMint"),S("poolId"),he("tickLower"),he("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),q(tu,3,"rewardInfos"),q(b(),8,"")]),wb=R([Pe(8),O("bump"),S("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),q(D(),3,"rewardGrowthInside"),q(b(),8,"")]),nu=R([he("tick"),Si("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),q(D(),3,"rewardGrowthsOutsideX64"),q(Ee(),13,"")]),ln=R([Pe(8),S("poolId"),he("startTickIndex"),q(nu,ye,"ticks"),O("initializedTickCount"),q(O(),115,"")]),hb=R([Pe(329),q(S(),100,"whitelistMints")]),co=R([Pe(8),S("poolId"),q(q(b(),8),Cr,"positiveTickArrayBitmap"),q(q(b(),8),Cr,"negativeTickArrayBitmap")]);import{PublicKey as au,Keypair as uu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cu}from"@solana/spl-token";import Db from"bn.js";var lo=R([S("mint"),S("owner"),b("amount"),Ee("delegateOption"),S("delegate"),O("state"),Ee("isNativeOption"),b("isNative"),b("delegatedAmount"),Ee("closeAuthorityOption"),S("closeAuthority")]);function ru(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function _r(r,...e){if(!ru(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 vr(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 mo(r,e){_r(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Gn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Ue=(r,e)=>r<<32-e|r>>>e;var Ib=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function iu(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Fr(r){return typeof r=="string"&&(r=iu(r)),_r(r),r}var qn=class{clone(){return this._cloneInto()}},Bb={}.toString;function po(r){let e=n=>r().update(Fr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ou(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var fo=(r,e,t)=>r&e^~r&t,bo=(r,e,t)=>r&e^r&t^e&t,Un=class extends qn{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=Gn(this.buffer)}update(e){vr(this);let{view:t,buffer:n,blockLen:i}=this;e=Fr(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=Gn(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){vr(this),mo(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;ou(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Gn(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var su=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]),lt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),mt=new Uint32Array(64),Or=class extends Un{constructor(){super(64,32,8,!1),this.A=lt[0]|0,this.B=lt[1]|0,this.C=lt[2]|0,this.D=lt[3]|0,this.E=lt[4]|0,this.F=lt[5]|0,this.G=lt[6]|0,this.H=lt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)mt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=mt[m-15],p=mt[m-2],g=Ue(d,7)^Ue(d,18)^d>>>3,f=Ue(p,17)^Ue(p,19)^p>>>10;mt[m]=f+mt[m-7]+g+mt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=Ue(a,6)^Ue(a,11)^Ue(a,25),p=l+d+fo(a,u,c)+su[m]+mt[m]|0,f=(Ue(n,2)^Ue(n,13)^Ue(n,22))+bo(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){mt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var yo=po(()=>new Or);var Ub=ae("Raydium_Util");function go({fromPublicKey:r,programId:e=cu}){let t=uu.generate().publicKey.toBase58().slice(0,32);return{publicKey:lu(r,t,e),seed:t}}function lu(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=yo(n);return new au(i)}var ko=ae("Raydium_Clmm"),ze={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]},Xn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g){let f=R([D("sqrtPriceX64"),b("startTime")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Wt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],y=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},y);let k=Buffer.from([...ze.createPool,...y]);return new Xe({keys:w,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=go({fromPublicKey:i,programId:n}),[d,p]=[new N(o.address),new N(s.address)],g=[Wt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Mr.span),space:Mr.span,programId:n})],{publicKey:f}=$i(n,a,d,p),{publicKey:w}=Lr(n,f,d),{publicKey:y}=Lr(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,w,new N(o.programId||ke),p,y,new N(s.programId||ke),qe(n,f).publicKey,u,c)),{signers:[],instructions:g,instructionTypes:[Z.CreateAccount,Z.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:w,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k,h,A,B,T,K,I,v,M){let V=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),D("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),O("optionBaseFlag"),Re("baseFlag")]),$=[...M?[{pubkey:M,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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:Wt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:wo,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...$],ue=Buffer.alloc(V.span);V.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:K,amountMaxB:I,withMetadata:v==="create",baseFlag:!1,optionBaseFlag:0},ue);let Q=Buffer.from([...ze.openPosition,...ue]);return new Xe({keys:ie,programId:e,data:Q})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new N(e.programId),new N(e.id)],g;if(l)g=new N((await l(1))[0]);else{let I=Vr.generate();m.push(I),g=I.publicKey}let f=_.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=_.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=oe(d,p,f),{publicKey:k}=oe(d,p,w),{publicKey:h}=Me(n.wallet,g,ke),{publicKey:A}=Vn(g),{publicKey:B}=Qe(d,g),{publicKey:T}=At(d,p,i,o),K=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,h,A,T,y,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,f,w,s,a,u,c);return{signers:m,instructions:[K],instructionTypes:[Z.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new N(e.programId),new N(e.id)],g;if(l)g=new N((await l(1))[0]);else{let I=Vr.generate();m.push(I),g=I.publicKey}let f=_.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=_.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=oe(d,p,f),{publicKey:k}=oe(d,p,w),{publicKey:h}=Me(n.wallet,g,ke),{publicKey:A}=Vn(g),{publicKey:B}=Qe(d,g),{publicKey:T}=At(d,p,i,o),K=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,h,A,T,y,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,f,w,c,s,a,u,Ie.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,w])?qe(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:T},instructions:[K],signers:m,instructionTypes:[Z.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k,h,A,B,T,K,I,v,M){let V=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),D("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),O("optionBaseFlag"),Re("baseFlag")]),$=[...M?[{pubkey:M,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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:Wt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:wo,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...$],ue=Buffer.alloc(V.span);V.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:B,liquidity:new ho(0),amountMaxA:K==="MintA"?I:v,amountMaxB:K==="MintA"?v:I,withMetadata:T==="create",baseFlag:K==="MintA",optionBaseFlag:1},ue);let Q=Buffer.from([...ze.openPosition,...ue]);return new Xe({keys:ie,programId:e,data:Q})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new N((await l(1))[0]);else{let I=Vr.generate();d.push(I),m=I.publicKey}let[p,g]=[new N(e.programId),new N(e.id)],f=_.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=_.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=oe(p,g,f),{publicKey:k}=oe(p,g,w),{publicKey:h}=Me(n.wallet,m,ke),{publicKey:A}=Vn(m),{publicKey:B}=Qe(p,m),{publicKey:T}=At(p,g,i,o),K=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,h,A,T,y,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),i,o,f,w,s,a,u,c,Ie.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,w])?qe(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:y,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:T},instructions:[K],signers:d,instructionTypes:[Z.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),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:Wt.programId,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...ze.closePosition,...u]);return new Xe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new N(e.programId),{publicKey:s}=Me(n.wallet,i.nftMint,ke),{publicKey:a}=Qe(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[Z.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k){let h=R([D("liquidity"),b("amountMaxA"),b("amountMaxB"),O("optionBaseFlag"),Re("baseFlag")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:w,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},T);let K=Buffer.from([...ze.increaseLiquidity,...T]);return new Xe({keys:B,programId:e,data:K})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new N(e.programId),new N(e.id)],l=_.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=_.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(u,c,l),{publicKey:p}=oe(u,c,m),{publicKey:g}=Me(i.wallet,n.nftMint,ke),{publicKey:f}=Qe(u,n.nftMint),{publicKey:w}=At(u,c,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(u,i.wallet,g,f,c,w,d,p,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,Ie.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?qe(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:w},signers:[],instructions:[y],instructionTypes:[Z.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new N(e.programId),new N(e.id)],l=_.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=_.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(u,c,l),{publicKey:p}=oe(u,c,m),{publicKey:g}=Me(i.wallet,n.nftMint,ke),{publicKey:f}=Qe(u,n.nftMint),{publicKey:w}=At(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:w},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,g,f,c,w,d,p,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,Ie.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?qe(u,c).publicKey:void 0)],signers:[],instructionTypes:[Z.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k){let h=R([D("liquidity"),b("amountMaxA"),b("amountMaxB"),O("optionBaseFlag"),Re("baseFlag")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(h.span);h.encode({liquidity:new ho(0),amountMaxA:f==="MintA"?w:y,amountMaxB:f==="MintA"?y:w,baseFlag:f==="MintA",optionBaseFlag:1},T);let K=Buffer.from([...ze.increaseLiquidity,...T]);return new Xe({keys:B,programId:e,data:K})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y,k,h){let A=R([D("liquidity"),b("amountMinA"),b("amountMinB")]),B=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(v=>[{pubkey:v.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:v.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:v.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...B],K=Buffer.alloc(A.span);A.encode({liquidity:w,amountMinA:y,amountMinB:k},K);let I=Buffer.from([...ze.decreaseLiquidity,...K]);return new Xe({keys:T,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new N(e.programId),new N(e.id)],m=_.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=_.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=oe(c,l,m),{publicKey:g}=oe(c,l,d),{publicKey:f}=Me(i.wallet,n.nftMint,u),{publicKey:w}=Qe(c,n.nftMint),{publicKey:y}=At(c,l,n.tickLower,n.tickUpper),k=[];for(let A=0;A<e.rewardDefaultInfos.length;A++)k.push({poolRewardVault:new N(t.rewardInfos[A].vault),ownerRewardVault:i.rewardAccounts[A],rewardMint:new N(e.rewardDefaultInfos[A].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,w,l,y,p,g,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),k,o,s,a,Ie.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?qe(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:w,protocolPosition:y},signers:[],instructions:h,instructionTypes:[Z.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,y){let k=R([b("amount"),b("otherAmountThreshold"),D("sqrtPriceLimitX64"),Re("isBaseInput")]),h=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.map(K=>({pubkey:K,isSigner:!1,isWritable:!0}))],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],B=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:w},B);let T=Buffer.from([...ze.swap,...B]);return new Xe({keys:A,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new N(e.programId),new N(e.id)],[d,p]=[new N(t.vault.A),new N(t.vault.B)],[g,f]=[new N(e.mintA.address),new N(e.mintB.address)],w=e.mintA.address===o.toString(),y=[this.swapInstruction(l,i.wallet,m,new N(e.config.id),w?i.tokenAccountA:i.tokenAccountB,w?i.tokenAccountB:i.tokenAccountA,w?d:p,w?p:d,w?g:f,w?f:g,c,n,s,a,u,!0,qe(l,m).publicKey)];return{signers:[],instructions:y,instructionTypes:[Z.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([b("openTime"),b("endTime"),D("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:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Wt.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:d},f);let w=Buffer.from([...ze.initReward,...f]);return new Xe({keys:g,programId:e,data:w})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a=eo(o,s,i.mint).publicKey,u=Nr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new N(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[Z.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([O("rewardIndex"),D("emissionsPerSecondX64"),b("openTime"),b("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:ke,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:re(l),endTime:re(m)},f);let w=Buffer.from([...ze.setRewardEmissions,...f]);return new Xe({keys:g,programId:e,data:w})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new N(t.rewardInfos[d].vault),c=new N(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&ko.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Nr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new N(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[Z.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([O("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...ze.collectReward,...l]);return new Xe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new N(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&ko.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[Z.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new N(e.programId),new N(e.id)],[m,d]=[new N(t.vault.A),new N(t.vault.B)],[p,g]=[new N(e.mintA.address),new N(e.mintB.address)],f=e.mintA.address===i.toString(),w=[this.swapInstruction(c,n.wallet,l,new N(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,u,m,o,s,a,!1)];return{signers:[],instructions:w,instructionTypes:[Z.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as pu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fu}from"@solana/spl-token";import{PublicKey as mu}from"@solana/web3.js";import Ao from"bn.js";var To=new Ao(25),Po=new Ao(1e4);var du=ae("Raydium_liquidity_serum");function xo({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=mu.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw du.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import By from"bn.js";function zn({programId:r}){let{publicKey:e}=pe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function It({name:r,programId:e,marketId:t}){let{publicKey:n}=pe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function bu({programId:r,marketId:e}){let{publicKey:t}=pe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function yu({programId:r}){return pe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Io({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=It({name:"amm_associated_seed",programId:a,marketId:t}),l=It({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=yu({programId:a}),p=It({name:"coin_vault_associated_seed",programId:a,marketId:t}),g=It({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=It({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),w=bu({programId:a,marketId:t}),y=It({name:"target_associated_seed",programId:a,marketId:t}),k=It({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=xo({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:g,lpVault:f,openOrders:w,targetOrders:y,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:pu.default,configId:zn({programId:a})}}var Dr={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Bo=r=>{let e={},t=fu.toBase58();return Object.keys(r).map(n=>{let i=r[n],[o,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:Fn({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:Fn({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new L(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new L(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new L(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:Dr,week:Dr,month:Dr,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:zn({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:Fn({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())})}}),e};import{PublicKey as So}from"@solana/web3.js";var My=new So("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_y=new So("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Ko={3:qr,5:Lo,6:No};var Hn={"Standard SPL":0,"Option tokens":1},Wr={[_i.toString()]:3,[vi.toString()]:5,[Fi.toString()]:6,[vn.FarmV3.toString()]:3,[vn.FarmV5.toString()]:5,[vn.FarmV6.toString()]:6};var Gr=R([O("instruction")]),ku=R([O("instruction")]),Au=R([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),D("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),b("rewardType"),q(b(),15,"padding")]),Tu=R([b("state"),b("nonce"),S("lpVault"),S("rewardVault"),S(),S(),b(),b(),b("totalReward"),D("perShareReward"),b("lastSlot"),b("perSlotReward")]),Pu=R([b("state"),b("nonce"),S("lpVault"),S("rewardVaultA"),b("totalRewardA"),D("perShareRewardA"),b("perSlotRewardA"),O("option"),S("rewardVaultB"),Pe(7),b("totalRewardB"),D("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),S()]),xu=R([b(),b("state"),b("nonce"),b("validRewardTokenNum"),D("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(Au,5,"rewardInfos"),S("creator"),S(),q(b(),32,"padding")]),gu=new Proxy(Tu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(G({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),wu=new Proxy(Pu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(G({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),hu=new Proxy(xu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return j(G({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return j(G({},o),{rewardType:((s=Object.entries(Hn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Iu=R([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),Bu=R([O("instruction"),b("nonce"),q(Iu,5,"rewardTimeInfo")]),Su=R([O("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),Ku=R([O("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),qy=R([b("state"),S("id"),S("owner"),b("deposited"),q(b(),1,"rewardDebts")]),qr=R([b("state"),S("id"),S("owner"),b("deposited"),q(D(),1,"rewardDebts"),b(""),b("voteLockedBalance"),q(b(),15)]),Gy=R([b("state"),S("id"),S("owner"),b("deposited"),q(b(),2,"rewardDebts")]),Lo=R([b("state"),S("id"),S("owner"),b("deposited"),q(D(),2,"rewardDebts"),q(b(),17)]),No=R([b(),b("state"),S("id"),S("owner"),b("deposited"),q(D(),5,"rewardDebts"),q(b(),16)]),Bt=R([O("instruction"),b("amount")]),Lu=R([S("mint"),S("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),Bi("digitShift"),q(O(),7,"reserved1"),q(b(),7,"reserved2")]),Nu=R([Pe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(O(),32,"reserved1"),q(Lu,4,"votingMints"),Rn("timeOffset"),O("bump"),q(O(),7,"reserved2"),q(b(),11,"reserved3")]),Ru=R([Rn("startTime"),Rn("endTime"),O("kind"),q(O(),15,"reserved")]),Cu=R([q(Ru,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Re("isUsed"),Re("allowClawback"),O("votingMintConfigIdx"),q(O(),29,"reserved")]),Eu=R([Pe(8),S("voterAuthority"),S("registrar"),q(Cu,32,"deposits"),O("voterBump"),O("voterWweightRecordBump"),q(O(),94,"reserved")]);import jy from"bn.js";var Mu=ae("Raydium.farm.util");function qt({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=pe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}function Ro(r){let e=Ko[r];return e||Mu.logWithError("invalid version",r),e}import{PublicKey as Be,SystemProgram as _u,SYSVAR_RENT_PUBKEY as vu,SYSVAR_CLOCK_PUBKEY as Co,TransactionInstruction as Yn}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Ag,TOKEN_PROGRAM_ID as Ur,ASSOCIATED_TOKEN_PROGRAM_ID as Tg}from"@solana/spl-token";import xg from"bn.js";var Fu=ae("Raydium_farm_instruction"),vg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Eo(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Fu.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Gr.span);Gr.encode({instruction:s},a);let u=[P({pubkey:t}),P({pubkey:n}),P({pubkey:o,isWritable:!1}),P({pubkey:_u.programId,isWritable:!1}),P({pubkey:vu,isWritable:!1})];return{instruction:new Yn({programId:i,keys:u,data:a}),instructionType:Z.FarmV3CreateLedger}}function Mo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Be(e.programId),new Be(e.id)],c=qt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Bt.span);Bt.encode({instruction:2,amount:re(s)},l);let m=[P({pubkey:Ur,isWritable:!1}),P({pubkey:u}),P({pubkey:new Be(t.authority),isWritable:!1}),P({pubkey:new Be(t.lpVault)}),P({pubkey:c}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(P({pubkey:new Be(t.rewardInfos[d].vault)})),m.push(P({pubkey:i[d]}));return new Yn({programId:a,keys:m,data:l})}function _o(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Be(e.programId),new Be(e.id)],l=qt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:12,amount:re(s)},m);let d=[P({pubkey:c}),P({pubkey:new Be(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new Be(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new Be(t.rewardInfos[0].vault)}),P({pubkey:Co,isWritable:!1}),P({pubkey:Ur,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(P({pubkey:i[p]})),d.push(P({pubkey:new Be(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(P({pubkey:p}));return new Yn({programId:u,keys:d,data:m})}function vo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Be(e.programId),new Be(e.id)],l=qt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Bt.span);Bt.encode({instruction:11,amount:re(s)},m);let d=[P({pubkey:c}),P({pubkey:new Be(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:o,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new Be(t.lpVault)}),P({pubkey:i[0]}),P({pubkey:new Be(t.rewardInfos[0].vault)}),P({pubkey:Co,isWritable:!1}),P({pubkey:Ur,isWritable:!1})];if(a)for(let p of a)d.push(P({pubkey:p}));return new Yn({programId:u,keys:d,data:m})}import Ce from"bn.js";var Xr=class extends on{constructor(t){super(t);this.stableLayout=new sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Ce(new L(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Oi(t[o?"mintB":"mintA"]),[u,c]=[new Ce(new L(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ce(new L(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ce(new L(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,L.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=jt;s.isZero()||(d=m==="base"?Kn(s.mul(c),u):Kn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Kn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ye(new Ce(1)).add(i).mul(d).quotient,w=new le(a,d),y=new le(a,f);return this.logDebug("anotherAmount:",w.toFixed(),"maxAnotherAmount:",y.toFixed()),{anotherAmount:w,maxAnotherAmount:y,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:i,amountInA:o,amountInB:s,fixedSide:a,config:u,txVersion:c,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",s),(o.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[g,f]=[o.token,s.token],w=await m.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),y=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!w&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let k=await m.getCreatedTokenAccount({mint:new Se(n.lpMint.address)}),h=[g,f],A=[w,y],B=[o.raw,s.raw],T=o.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",a),T==="quote"?(h.reverse(),A.reverse(),B.reverse(),K=a==="a"?"quote":"base"):T==="base"&&(K=a==="a"?"base":"quote");let[I,v]=h,[M,V]=A,[$,ie]=B,ue=i!=null?i:await this.getAmmPoolKeys(n.id),Q=this.createTxBuilder(),St=await m.handleTokenAccount({side:"in",amount:$,mint:I.mint,tokenAccount:M,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:X}=St,pt=ve(St,["tokenAccount"]);Q.addInstruction(pt);let Kt=await m.handleTokenAccount({side:"in",amount:ie,mint:v.mint,tokenAccount:V,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:pn}=Kt,fn=ve(Kt,["tokenAccount"]);Q.addInstruction(fn);let bn=await m.handleTokenAccount({side:"out",amount:0,mint:new Se(n.lpMint.address),tokenAccount:k,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:Ut}=bn,jn=ve(bn,["tokenAccount"]);return Q.addInstruction(jn),Q.addInstruction({instructions:[Hi({poolInfo:n,poolKeys:ue,userKeys:{baseTokenAccount:X,quoteTokenAccount:pn,lpTokenAccount:Ut,owner:this.scope.ownerPubKey},baseAmountIn:$,quoteAmountIn:ie,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?Z.AmmV5AddLiquidity:Z.AmmV4AddLiquidity],lookupTableAddress:ue.lookupTableAccount?[ue.lookupTableAccount]:[]}),Q.addCustomComputeBudget(l),c===0&&await Q.buildV0(),Q.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,amountIn:o,config:s,txVersion:a,computeBudgetConfig:u}=t,c=i!=null?i:await this.getAmmPoolKeys(n.id),[l,m,d]=[new Se(n.mintA.address),new Se(n.mintB.address),new Se(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:p}=this.scope,g=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});g||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),w=await p.getCreatedTokenAccount({mint:m}),y=this.createTxBuilder(),{bypassAssociatedCheck:k,checkCreateATAOwner:h}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),I=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:k,checkCreateATAOwner:h}),{tokenAccount:A}=I,B=ve(I,["tokenAccount"]);y.addInstruction(B);let v=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:w,bypassAssociatedCheck:k,checkCreateATAOwner:h}),{tokenAccount:T}=v,K=ve(v,["tokenAccount"]);return y.addInstruction(K),y.addInstruction({instructions:[Br({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:g,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?Z.AmmV5RemoveLiquidity:Z.AmmV4RemoveLiquidity]}),y.addCustomComputeBudget(u),a===0?await y.buildV0():y.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Gt,checkCreateATAOwner:p=!0,getEphemeralSigners:g,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let w=this.createTxBuilder();w.addCustomComputeBudget(c);let y={};for(let X of this.scope.account.tokenAccountRawInfos)(y[X.accountInfo.mint.toString()]===void 0||Me(this.scope.ownerPubKey,X.accountInfo.mint,Gt).publicKey.equals(X.pubkey))&&(y[X.accountInfo.mint.toString()]=X.pubkey);let k=y[t.lpMint.address];if(k===void 0)throw Error("find lp account error in trade accounts");let h=i.add(a!=null?a:new Ce(0)),A=t.mintA.address===Te.WSOL.mint.toString(),B=t.mintB.address===Te.WSOL.mint.toString(),{account:T,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Gt,mint:new Se(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(K||{}),T===void 0)throw new Error("base token account not found");let{account:I,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Gt,mint:new Se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(v||{}),I===void 0)throw new Error("quote token account not found");if(y[t.mintA.address]=T,y[t.mintB.address]=I,s!==void 0&&!(a!=null&&a.isZero())){let X=Wr[s.programId],pt=qt({programId:new Se(s.programId),poolId:new Se(s.id),owner:this.scope.ownerPubKey,version:X}),pn,fn=await this.scope.connection.getAccountInfo(pt);if(fn&&(pn=Ro(X).decode(fn.data)),X!==6&&!pn){let{instruction:rt,instructionType:Qn}=Eo({id:new Se(s.id),programId:new Se(s.programId),version:X,ledger:pt,owner:this.scope.ownerPubKey});w.addInstruction({instructions:[rt],instructionTypes:[Qn]})}let Ut=[];for(let rt of s.rewardInfos){let Qn=rt.mint.address===Te.WSOL.mint.toString();if(y[rt.mint.address])Ut.push(y[rt.mint.address]);else{let{account:zr,instructionParams:Hr}=await this.scope.account.getOrCreateTokenAccount({mint:new Se(rt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Qn,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});zr||this.logAndCreateError("farm reward account not found:",rt.mint.address),Hr&&w.addInstruction(Hr),Ut.push(zr)}}let jn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],St={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:jn,lpAccount:k,rewardAccounts:Ut},Kt=Wr[s.programId],bn=Kt===6?Mo(St):Kt===5?_o(St):vo(St),Oo={3:Z.FarmV3Withdraw,5:Z.FarmV5Withdraw,6:Z.FarmV6Withdraw};w.addInstruction({instructions:[bn],instructionTypes:[Oo[Kt]]})}let M=await this.getAmmPoolKeys(t.id),V=Br({poolInfo:t,poolKeys:M,userKeys:{lpTokenAccount:k,baseTokenAccount:T,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:h});w.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?Z.AmmV5RemoveLiquidity:Z.AmmV4RemoveLiquidity],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]});let[$,ie]=t.mintA.address===n.mintA.address?[T,I]:[I,T],ue=await this.scope.clmm.getClmmPoolKeys(t.id),Q=await Xn.openPositionFromBaseInstructions(j(G({poolInfo:n,poolKeys:ue,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:$,tokenAccountB:ie},withMetadata:"create"},o),{base:u,getEphemeralSigners:g}));return w.addInstruction({instructions:[...Q.instructions],signers:Q.signers,instructionTypes:[...Q.instructionTypes],lookupTableAddress:ue.lookupTableAccount?[ue.lookupTableAccount]:[]}),f===0?w.sizeCheckBuildV0():w.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:g,computeBudgetConfig:f}){var $;let w=c.feePayer||(($=this.scope.owner)==null?void 0:$.publicKey),y=c.useSOLBalance&&i.mint.equals(Fo),k=c.useSOLBalance&&o.mint.equals(Fo),h=this.createTxBuilder(),{account:A,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:y?{payer:w,amount:s}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:l,checkCreateATAOwner:m});h.addInstruction(B||{});let{account:T,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:w,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(K||{}),A===void 0||T===void 0)throw Error("you don't has some token account");let I=Io({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),v={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:g},{instruction:M,instructionType:V}=Yi(j(G({},v),{userWallet:this.scope.ownerPubKey,userCoinVault:A,userPcVault:T,userLpVault:Me(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[M],instructionTypes:[V]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:v}})}async getCreatePoolFee({programId:t}){let n=zn({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Di.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){let[a,u]=[i.toString(),o.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,g]=m,f=t.version===4,w;if(f)w=new L(g.toString()).div(p.toString());else{let M=Xi(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?w=new L(1e6).div(M*1e6):w=new L(M*1e6).div(1e6)}let y=n,k=new Ce(0),h=new Ce(0);if(!y.isZero())if(f){h=rn(y.mul(To),Po);let M=y.sub(h),V=p.add(M);k=g.mul(M).div(V)}else{h=y.mul(new Ce(2)).div(new Ce(1e4));let M=y.sub(h);d==="quote"?k=new Ce(Gi(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),M.toNumber())):k=new Ce(Ui(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),M.toNumber()))}let A=new Ce(new L(k.toString()).mul(1-s).toFixed(0)),B=k,T=A,K=new L(k.toString()).div(new L(y.sub(h).toString()).toFixed(0));!y.isZero()&&!k.isZero()&&(K=new L(k.toString()).div(y.sub(h).toString()));let I=w.sub(K).div(w).mul(100);return{amountOut:B,minAmountOut:T,currentPrice:w,executionPrice:K,priceImpact:I,fee:h}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:o,inputMint:s,fixedSide:a,txVersion:u,config:c,computeBudgetConfig:l}){let m=this.createTxBuilder(),{associatedOnly:d=!1,inputUseSolBalance:p=!0,outputUseSolBalance:g=!0}=c||{},[f,w]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],y=p&&f.address===Rt.toBase58(),k=g&&w.address===Rt.toBase58(),{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Gt,mint:new Se(f.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:d});m.addInstruction(A||{}),h||this.logAndCreateError("input token account not found",f.address);let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Gt,mint:new Se(w.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:d});if(m.addInstruction(T||{}),B===void 0)throw new Error("output token account not found");let K=n||await this.getAmmPoolKeys(t.id),I=4;return t.pooltype.includes("StablePool")&&(I=5),m.addInstruction({instructions:[ji({version:I,poolKeys:K,userKeys:{tokenAccountIn:h,tokenAccountOut:B,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:a})],instructionTypes:[I===4?Z.AmmV4SwapBaseIn:Z.AmmV5SwapBaseIn]}),m.addCustomComputeBudget(l),m.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await gt(this.scope.connection,t.map(l=>({pubkey:new Se(l)})),n),o={},s=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=Vi.decode(m.accountInfo.data);o[String(t[l])]=j(G({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},u=await gt(this.scope.connection,s.map(l=>({pubkey:new Se(l)})),n);for(let l=0;l<s.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new Ce(Ou.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(o)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=j(G({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new L(p.toString()).div(new L(10).pow(m.quoteDecimal.toString())).div(new L(d.toString()).div(new L(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=Bo({[t]:n}),o=i[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:o,poolKeys:s[0]}}};export{Xr as default};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=liquidity.mjs.map