@raydium-io/raydium-sdk-v2 0.1.7-alpha → 0.1.8-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 (110) 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/layout.d.ts +1 -1
  26. package/lib/raydium/account/types.d.ts +1 -1
  27. package/lib/raydium/account/util.d.ts +1 -1
  28. package/lib/raydium/clmm/clmm.d.ts +3 -3
  29. package/lib/raydium/clmm/index.d.ts +3 -3
  30. package/lib/raydium/clmm/instrument.d.ts +2 -2
  31. package/lib/raydium/clmm/layout.d.ts +3 -3
  32. package/lib/raydium/clmm/type.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  38. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  39. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  40. package/lib/raydium/cpmm/index.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/index.js +1 -1
  60. package/lib/raydium/liquidity/index.js.map +1 -1
  61. package/lib/raydium/liquidity/index.mjs +1 -1
  62. package/lib/raydium/liquidity/index.mjs.map +1 -1
  63. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  64. package/lib/raydium/liquidity/instruction.js +1 -1
  65. package/lib/raydium/liquidity/instruction.js.map +1 -1
  66. package/lib/raydium/liquidity/instruction.mjs +1 -1
  67. package/lib/raydium/liquidity/instruction.mjs.map +1 -1
  68. package/lib/raydium/liquidity/layout.d.ts +2 -2
  69. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  70. package/lib/raydium/liquidity/liquidity.js +1 -1
  71. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  72. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  73. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  74. package/lib/raydium/liquidity/type.d.ts +1 -1
  75. package/lib/raydium/liquidity/utils.d.ts +1 -1
  76. package/lib/raydium/liquidity/utils.js.map +1 -1
  77. package/lib/raydium/liquidity/utils.mjs.map +1 -1
  78. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  79. package/lib/raydium/marketV2/index.d.ts +3 -3
  80. package/lib/raydium/moduleBase.d.ts +3 -3
  81. package/lib/raydium/raydium.d.ts +3 -3
  82. package/lib/raydium/raydium.js +1 -1
  83. package/lib/raydium/raydium.js.map +1 -1
  84. package/lib/raydium/raydium.mjs +1 -1
  85. package/lib/raydium/raydium.mjs.map +1 -1
  86. package/lib/raydium/token/constant.d.ts +1 -1
  87. package/lib/raydium/token/index.d.ts +1 -1
  88. package/lib/raydium/token/token.d.ts +3 -3
  89. package/lib/raydium/token/type.d.ts +1 -1
  90. package/lib/raydium/token/utils.d.ts +1 -1
  91. package/lib/raydium/tradeV2/index.d.ts +2 -2
  92. package/lib/raydium/tradeV2/index.js +1 -1
  93. package/lib/raydium/tradeV2/index.js.map +1 -1
  94. package/lib/raydium/tradeV2/index.mjs +1 -1
  95. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  96. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  97. package/lib/raydium/tradeV2/instrument.js +1 -1
  98. package/lib/raydium/tradeV2/instrument.js.map +1 -1
  99. package/lib/raydium/tradeV2/instrument.mjs +1 -1
  100. package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
  101. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  102. package/lib/raydium/tradeV2/type.d.ts +2 -2
  103. package/lib/raydium/type.d.ts +1 -1
  104. package/lib/raydium/utils1216/index.d.ts +3 -3
  105. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  106. package/lib/{raydium-6c4df6ad.d.ts → raydium-916014c1.d.ts} +3 -3
  107. package/lib/{type-68b778f2.d.ts → type-389634c9.d.ts} +1 -1
  108. package/lib/{type-bdbaf9b2.d.ts → type-9fe71e3c.d.ts} +7 -7
  109. package/package.json +1 -1
  110. package/src/raydium/liquidity/instruction.ts +1 -1
@@ -1,3 +1,3 @@
1
- var er=Object.defineProperty,tr=Object.defineProperties;var nr=Object.getOwnPropertyDescriptors;var Qn=Object.getOwnPropertySymbols;var ir=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable;var Yn=(i,e,t)=>e in i?er(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Y=(i,e)=>{for(var t in e||(e={}))ir.call(e,t)&&Yn(i,t,e[t]);if(Qn)for(var t of Qn(e))rr.call(e,t)&&Yn(i,t,e[t]);return i},te=(i,e)=>tr(i,nr(e));import{TOKEN_PROGRAM_ID as Xn,TOKEN_2022_PROGRAM_ID as Gn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Hn,SystemProgram as $i}from"@solana/web3.js";import Un from"bn.js";import{PublicKey as kp}from"@solana/web3.js";var bt=9e15,it=1e9,tn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",nn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},$n,ze,M=!0,Vt="[DecimalError] ",nt=Vt+"Invalid argument: ",ei=Vt+"Precision limit exceeded",ti=Vt+"crypto unavailable",ni="[object Decimal]",we=Math.floor,ce=Math.pow,or=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ar=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ii=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,K=7,ur=9007199254740991,cr=Ft.length-1,rn=Wt.length-1,w={toStringTag:ni};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),I(i)};w.ceil=function(){return I(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(nt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=lr(n,ui(n,t)),n.precision=i,n.rounding=e,I(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=J(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(I(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,I(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/K))*K,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return J(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return I(J(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return I(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/_t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=yt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return I(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=yt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/_t(5,i)),r=yt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,I(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,J(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ee(t,r,o):new t(0):new t(NaN):e.isZero()?Ee(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Ee(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?I(new o(r),i,e,!0):(o.precision=t=n-r.e,r=J(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Ee(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=rn)return s=Ee(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=rn)return s=Ee(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/K+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/K),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),M=!0,I(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/K)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(M=!1,a=m+d,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),Pt(u.d,r=m,p))do if(a+=10,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=I(u,m+1,0));break}while(Pt(u.d,r+=10,p));return M=!0,I(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return M?I(i,a,u):i}if(t=we(i.e/K),l=we(d.e/K),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/K),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=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Oe-1;--c[r],c[n]+=Oe}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),M?I(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?I(new n(t),n.precision,n.rounding):(M=!1,n.modulo==9?(e=J(t,i.abs(),0,3,1),e.s*=i.s):e=J(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return on(this)};w.naturalLogarithm=w.ln=function(){return tt(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,I(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),M?I(i,a,u):i;if(o=we(m.e/K),n=we(i.e/K),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/K),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Oe|0,c[r]%=Oe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),M?I(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(nt+i);return t.d?(e=ri(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return I(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=dr(n,ui(n,t)),n.precision=i,n.rounding=e,I(ze>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((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(J(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(n,u+1,1),i=!n.times(n).eq(s));break}return M=!0,I(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=J(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,I(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/K)+we(i.e/K),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%Oe|0,e=a/Oe|0;o[r]=(o[r]+e)%Oe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Dt(o,t),M?I(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return an(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,it),e===void 0?e=n.rounding:xe(e,0,8),I(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,it),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,it),e===void 0?e=o.rounding:xe(e,0,8),n=I(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ri(b)-d.e-1,s=o%K,e.d[0]=ce(10,s<0?K+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(nt+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*K*2;m=J(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=J(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=J(c,n,o,1).minus(d).abs().cmp(J(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,M=!0,p};w.toHexadecimal=w.toHex=function(i,e){return an(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:xe(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(M=!1,t=J(t,i,0,e,1).times(i),M=!0,I(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return an(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return I(a,n,o);if(e=we(i.e/K),e>=i.d.length-1&&(t=c<0?-c:c)<=ur)return r=oi(u,a,t,n),i.s<0?new u(1).div(r):I(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(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):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=on(i.times(tt(a,n+t)),n),r.d&&(r=I(r,n+5,1),Pt(r.d,n,o)&&(e=n+10,r=I(on(i.times(tt(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=I(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,I(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,it),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,it),e===void 0?e=n.rounding:xe(e,0,8)),I(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return I(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=K-n.length,t&&(o+=et(t)),o+=n;s=i[e],n=s+"",t=K-n.length,t&&(o+=et(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(nt+i)}function Pt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=K,r=0):(r=Math.ceil((e+1)/K),e%=K),o=ce(10,K-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==ce(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==ce(10,e-3)-1,s}function Ot(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=tn.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function lr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/_t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=yt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var J=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,p,d,b,f,y,k,A,h,x,P,L,O,_,ee,X,j,Me,pe=n.constructor,Te=n.s==r.s?1:-1,ie=n.d,Q=r.d;if(!ie||!ie[0]||!Q||!Q[0])return new pe(!n.s||!r.s||(ie?Q&&ie[0]==Q[0]:!Q)?NaN:ie&&ie[0]==0||!Q?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Oe,d=K,l=we(n.e/d)-we(r.e/d)),j=Q.length,ee=ie.length,k=new pe(Te),A=k.d=[],m=0;Q[m]==(ie[m]||0);m++);if(Q[m]>(ie[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)A.push(1),b=!0;else{if(L=L/d+2|0,m=0,j==1){for(p=0,Q=Q[0],L++;(m<ee||p)&&L--;m++)O=p*u+(ie[m]||0),A[m]=O/Q|0,p=O%Q|0;b=p||m<ee}else{for(p=u/(Q[0]+1)|0,p>1&&(Q=i(Q,p,u),ie=i(ie,p,u),j=Q.length,ee=ie.length),_=j,h=ie.slice(0,j),x=h.length;x<j;)h[x++]=0;Me=Q.slice(),Me.unshift(0),X=Q[0],Q[1]>=u/2&&++X;do p=0,c=e(Q,h,j,x),c<0?(P=h[0],j!=x&&(P=P*u+(h[1]||0)),p=P/X|0,p>1?(p>=u&&(p=u-1),f=i(Q,p,u),y=f.length,x=h.length,c=e(f,h,y,x),c==1&&(p--,t(f,j<y?Me:Q,y,u))):(p==0&&(c=p=1),f=Q.slice()),y=f.length,y<x&&f.unshift(0),t(h,f,x,u),c==-1&&(x=h.length,c=e(Q,h,j,x),c<1&&(p++,t(h,j<x?Me:Q,x,u))),x=h.length):c===0&&(p++,h=[0]),A[m++]=p,c&&h[0]?h[x++]=ie[_]||0:(h=[ie[_]],x=1);while((_++<ee||h[0]!==void 0)&&L--);b=h[0]!==void 0}A[0]||A.shift()}if(d==1)k.e=l,$n=b;else{for(m=1,p=A[0];p>=10;p/=10)m++;k.e=m+l*d-1,I(k,a?o+k.e+1:o,s,b)}return k}}();function I(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=K,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/K),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=K,s=o-K+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=K,s=o-K+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(K-e%K)%K),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,K-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Oe&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Oe)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return ai(i);var n,r=i.e,o=fe(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+et(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+et(-r-1)+o,t&&(n=t-s)>0&&(o+=et(n))):r>=s?(o+=et(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+et(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=et(n))),o}function Dt(i,e){var t=i[0];for(e*=K;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>cr)throw M=!0,t&&(i.precision=t),Error(ei);return I(new i(Ft),e,1,!0)}function Ee(i,e,t){if(e>rn)throw Error(ei);return I(new i(Wt),e,t,!0)}function ri(i){var e=i.length-1,t=e*K+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function et(i){for(var e="";i--;)e+="0";return e}function oi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/K+4);for(M=!1;;){if(t%2&&(o=o.times(e),jn(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),jn(e.d,s)}return M=!0,o}function Zn(i){return i.d[i.d.length-1]&1}function si(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function on(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=I(o.times(i),u,1),t=t.times(++l),a=s.plus(J(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=I(s.times(s),u,1);if(e==null)if(c<3&&Pt(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return I(s,p.precision=b,d,M=!0);else return p.precision=b,s}s=a}}function tt(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,y=f.d,k=f.constructor,A=k.rounding,h=k.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new k(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(M=!1,l=h):l=e,k.precision=l+=b,t=fe(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,h).times(o+""),f=tt(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=h,e==null?I(f,h,A,M=!0):f;for(m=f,u=s=f=J(f.minus(1),f.plus(1),l,1),p=I(f.times(f),l,1),r=3;;){if(s=I(s.times(p),l,1),c=u.plus(J(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,h).times(o+""))),u=J(u,new k(d),l,1),e==null)if(Pt(u.d,l-b,A,a))k.precision=l+=b,c=s=f=J(m.minus(1),m.plus(1),l,1),p=I(f.times(f),l,1),r=a=1;else return I(u,k.precision=h,A,M=!0);else return k.precision=h,u;u=c,r+=2}}function ai(i){return String(i.s*i.s/0)}function sn(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%K,t<0&&(n+=K),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=K;n<r;)i.d.push(+e.slice(n,n+=K));e=e.slice(n),n=K-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function mr(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ii.test(e))return sn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(sr.test(e))t=16,e=e.toLowerCase();else if(or.test(e))t=2;else if(ar.test(e))t=8;else throw Error(nt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=oi(n,new n(t),o,o*2)),c=Ot(e,t,Oe),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,M=!1,s&&(i=J(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),M=!0,i)}function dr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/K);for(M=!1,u=t.times(t),a=new i(n);;){if(s=J(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=J(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return M=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function ui(i,e){var t,n=e.s<0,r=Ee(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=Zn(t)?n?2:3:n?4:1,e;ze=Zn(t)?n?1:4:n?3:2}return e.minus(r).abs()}function an(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,it),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=ai(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Ot(_e(p),10,r),p.e=p.d.length),m=Ot(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=J(i,p,t,n,0,r),m=i.d,o=i.e,c=$n),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=tn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Ot(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=tn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function jn(i,e){if(i.length>e)return i.length=e,!0}function pr(i){return new this(i).abs()}function fr(i){return new this(i).acos()}function br(i){return new this(i).acosh()}function yr(i,e){return new this(i).plus(e)}function gr(i){return new this(i).asin()}function wr(i){return new this(i).asinh()}function kr(i){return new this(i).atan()}function hr(i){return new this(i).atanh()}function Ar(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Ee(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Ee(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Ee(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(J(i,e,o,1)),e=Ee(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(J(i,e,o,1)),t}function Pr(i){return new this(i).cbrt()}function Tr(i){return I(i=new this(i),i.e+1,2)}function xr(i,e,t){return new this(i).clamp(e,t)}function Br(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=nn[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(nt+t+": "+n);if(t="crypto",r&&(this[t]=nn[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ti);else this[t]=!1;else throw Error(nt+t+": "+n);return this}function Ir(i){return new this(i).cos()}function Sr(i){return new this(i).cosh()}function ci(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Jn(o)){c.s=o.s,M?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;M?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return sn(c,o.toString())}else if(u!=="string")throw Error(nt+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)?sn(c,o):mr(c,o)}if(r.prototype=w,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Br,r.clone=ci,r.isDecimal=Jn,r.abs=pr,r.acos=fr,r.acosh=br,r.add=yr,r.asin=gr,r.asinh=wr,r.atan=kr,r.atanh=hr,r.atan2=Ar,r.cbrt=Pr,r.ceil=Tr,r.clamp=xr,r.cos=Ir,r.cosh=Sr,r.div=Cr,r.exp=Kr,r.floor=Nr,r.hypot=Lr,r.ln=Rr,r.log=Mr,r.log10=Or,r.log2=Er,r.max=Fr,r.min=Wr,r.mod=vr,r.mul=Vr,r.pow=Dr,r.random=_r,r.round=qr,r.sign=Gr,r.sin=Ur,r.sinh=Xr,r.sqrt=Hr,r.sub=zr,r.sum=Qr,r.tan=Yr,r.tanh=Zr,r.trunc=jr,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function Cr(i,e){return new this(i).div(e)}function Kr(i){return new this(i).exp()}function Nr(i){return I(i=new this(i),i.e+1,3)}function Lr(){var i,e,t=new this(0);for(M=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function Jn(i){return i instanceof Tt||i&&i.toStringTag===ni||!1}function Rr(i){return new this(i).ln()}function Mr(i,e){return new this(i).log(e)}function Er(i){return new this(i).log(2)}function Or(i){return new this(i).log(10)}function Fr(){return si(this,arguments,"lt")}function Wr(){return si(this,arguments,"gt")}function vr(i,e){return new this(i).mod(e)}function Vr(i,e){return new this(i).mul(e)}function Dr(i,e){return new this(i).pow(e)}function _r(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,it),n=Math.ceil(i/K),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(ti);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=K,n&&i&&(r=ce(10,K-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=K)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<K&&(t-=K-n)}return s.e=t,s.d=a,s}function qr(i){return I(i=new this(i),i.e+1,this.rounding)}function Gr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Ur(i){return new this(i).sin()}function Xr(i){return new this(i).sinh()}function Hr(i){return new this(i).sqrt()}function zr(i,e){return new this(i).sub(e)}function Qr(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,I(t,this.precision,this.rounding)}function Yr(i){return new this(i).tan()}function Zr(i){return new this(i).tanh()}function jr(i){return I(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=ci(nn);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{get as li,set as Jr}from"lodash";import di from"dayjs";import $r from"dayjs/plugin/utc";di.extend($r);var un=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 di().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}},mi={},eo={};function ae(i){let e=li(mi,i);if(!e){let t=li(eo,i);e=new un({name:i,logLevel:t}),Jr(mi,i,e)}return e}import{PublicKey as wo}from"@solana/web3.js";import ko from"bn.js";import bo from"big.js";import Xt from"bn.js";import Be from"bn.js";import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as to}from"@solana/spl-token";import{PublicKey as ne,SystemProgram as pi,SYSVAR_RENT_PUBKEY as no}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ns=[V({pubkey:to,isWritable:!1}),V({pubkey:pi.programId,isWritable:!1}),V({pubkey:no,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof ne)return e&&t.equals(xt)?cn:t;if(e&&t.toString()===xt.toBase58())return cn;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new ne(i)}catch{return i}}var gt=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ls=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new ne("SysvarRent111111111111111111111111111111111"),Rs=new ne("SysvarC1ock11111111111111111111111111111111"),kt=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ms=new ne("Sysvar1nstructions1111111111111111111111111"),Es=pi.programId,Os=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Fs=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ws=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),vs=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vs=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ds=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_s=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),qs=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Gs=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Us=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Xs=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),cn=new ne("So11111111111111111111111111111111111111112"),xt=ne.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as io}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";var bi={chainId:101,address:io.default.toBase58(),programId:fi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:fi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new pn(ut.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(te(Y({},ut),{mint:ut.address}));import Gt from"big.js";import so from"bn.js";import ao from"decimal.js-light";import ro from"toformat";var oo=ro,Bt=oo;var qt=ae("module/fraction"),bn=Bt(Gt),It=Bt(ao),uo={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},co={[0]:Gt.roundDown,[1]:Gt.roundHalfUp,[2]:Gt.roundUp},z=class{constructor(e,t=new so(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(re(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(re(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(re(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(re(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<=0&&qt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:uo[n]});let r=new It(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<0&&qt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=co[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var mo=ae("Raydium_price"),Ce=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(yn(n.decimals),yn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&mo.logWithError("mul token not equals");let n=super.mul(t);return new Ce({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ut=gn;Ut.SOL=new gn(bi);import po from"bn.js";var yi=new z(new po(100)),rt=class extends z{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)}};var gi=new Be(0),fo=new Be(1),_a=new Be(2),qa=new Be(3),Ga=new Be(5),wn=new Be(10),Ua=new Be(100),Xa=new Be(1e3),Ha=new Be(1e4),wi=9007199254740991;function re(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=wi||i<=-wi)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return wn.pow(re(i))}var yo=ae("Raydium_amount"),hi=Bt(bo);function go(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):yo.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new Xt(0),a=wn.pow(new Xt(t.decimals));if(r)s=re(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=go(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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return hi.DP=this.token.decimals,new hi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ki(i){return typeof i=="object"&&i!==null&&![qe,be,wo,z,ko,Ce,rt].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):ki(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as rc,sendAndConfirmTransaction as oc,Transaction as ac,TransactionMessage as cc,VersionedTransaction as lc}from"@solana/web3.js";import dc from"axios";var oe={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 ho,ComputeBudgetProgram as Au,Transaction as Tu,TransactionMessage as Bu,Keypair as Iu,VersionedTransaction as Cu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nu}from"@solana/spl-token";var Mu=ae("Raydium_txUtil");function Ke(i,e){let[t,n]=ho.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as Po,AddressLookupTableAccount as Ai}from"@solana/web3.js";import{PublicKey as Ao}from"@solana/web3.js";import{getTransferFeeConfig as Du,unpackMint as _u}from"@solana/spl-token";var kn=ae("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Y({batchRequest:!1},t),o=hn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=hn(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:y}=m;return p.length!==2&&p[1]!=="base64"&&kn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new Ao(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function An(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>te(Y({},r),{accountInfo:n[o]}))}var To={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Ai({key:new Po("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Ai.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"))})};function hn(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as H}from"@solana/web3.js";var Pc=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Tc=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xc=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Bc=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ic=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Sc=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Cc=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Kc=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nc=new H("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Lc=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Rc=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Mc=new H("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ec=new H("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Oc=new H("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fc=new H("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Wc=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vc=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Vc=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Bo=new H("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Io=new H("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),So=new H("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Dc={SERUM_MARKET:H.default,OPENBOOK_MARKET:new H("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.default,FarmV3:new H("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new H("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Bo,CREATE_CPMM_POOL_AUTH:Io,CREATE_CPMM_POOL_FEE_ACC:So,FEE_DESTINATION_ID:new H("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Co}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ko}from"@solana/spl-token";function Ge(i,e,t){return Ke([i.toBuffer(),(t!=null?t:Ko).toBuffer(),e.toBuffer()],new Co("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=te(Y({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Fe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Pn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Pn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Pn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Pn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import Ue from"bn.js";var ue=new Ue(0),Ie=new Ue(1),Qe=new Ue(-1),Se=new Ue(1).shln(64),Ht=new Ue(1).shln(128),Tn=Se.sub(Ie),Ct=64,Pi=Ht.subn(1),he=-443636,Pe=-he,Ye=new Ue("4295048016"),Ze=new Ue("79226673521066979257578248091"),Ti=16,xi="59543866431248",Bi="184467440737095516",Ii="15793534762490258745",zt=new Ue(10).pow(new Ue(6));var gl=new Ue("18446744073700000000");import D from"bn.js";function Qt(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function xn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Bn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Kt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Si(i,e){return Kt(i,e)?null:xn(i,e)}function Ci(i,e){return Kt(i,e)?null:Bn(i,e)}var Tl=Buffer.from("amm_config","utf8"),No=Buffer.from("pool","utf8"),Lo=Buffer.from("pool_vault","utf8"),Ro=Buffer.from("pool_reward_vault","utf8"),Ki=Buffer.from("position","utf8"),Mo=Buffer.from("tick_array","utf8"),Eo=Buffer.from("operation","utf8"),Oo=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ni(i,e,t,n){return Ke([No,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function In(i,e,t){return Ke([Lo,e.toBuffer(),t.toBuffer()],i)}function Li(i,e,t){return Ke([Ro,e.toBuffer(),t.toBuffer()],i)}function Z(i,e,t){return Ke([Mo,e.toBuffer(),Qt(t)],i)}function mt(i,e,t,n){return Ke([Ki,e.toBuffer(),Qt(t),Qt(n)],i)}function We(i,e){return Ke([Ki,e.toBuffer()],i)}function Yt(i){return Ke([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function Zt(i){return Ke([Eo],i)}function Ne(i,e){return Ke([Oo,e.toBuffer()],i)}import{PublicKey as $e}from"@solana/web3.js";import se from"bn.js";import $o from"bn.js";import{PublicKey as Uo}from"@solana/web3.js";import Oi,{isBN as Fi}from"bn.js";import{bits as Il,BitStructure as Sl,blob as Fo,Blob as Cl,cstr as Kl,f32 as Nl,f32be as Ll,f64 as Rl,f64be as Ml,greedy as El,Layout as Wo,ns64 as Ol,ns64be as Fl,nu64 as Wl,nu64be as vl,offset as Vl,s16 as Dl,s16be as _l,s24 as ql,s24be as Gl,s32 as vo,s32be as Ul,s40 as Xl,s40be as Hl,s48 as zl,s48be as Ql,s8 as Yl,seq as Vo,struct as Zl,Structure as Do,u16 as _o,u16be as jl,u24 as Jl,u24be as $l,u32 as em,u32be as tm,u40 as nm,u40be as im,u48 as rm,u48be as om,u8 as qo,UInt as Go,union as sm,Union as am,unionLayoutDiscriminator as um,utf8 as cm}from"@solana/buffer-layout";var Sn=Wo,Ri=Do;var Cn=Go;var Mi=qo,ht=_o;var ye=vo;var Ei=Vo;var Le=Fo;var Nt=class extends Sn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new Oi(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Oi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Cn(1,i)}function je(i){return new Cn(4,i)}function g(i){return new Nt(8,!1,i)}function E(i){return new Nt(16,!1,i)}function Wi(i){return new Nt(16,!0,i)}var jt=class extends Sn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function R(i){return new jt(Le(32),e=>new Uo(e),e=>e.toBuffer(),i)}function Xe(i){return new jt(Mi(),Xo,Ho,i)}function Xo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Ho(i){return i?1:0}var Kn=class extends Ri{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new Kn(i,e,t)}function $(i,e,t){let n,r=typeof e=="number"?e:Fi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Fi(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 Ei(i,r,t)}var Nn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Si(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Ci(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;if(Pe<=t)throw Error(`extensionTickBoundary check error: ${Pe}, ${t}`);if(n<=he)throw Error(`extensionTickBoundary check error: ${n}, ${he}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:B.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=B.mergeTickArrayBitmap(e).shln(dt-1-a),c=Kt(512,u)?null:xn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=B.mergeTickArrayBitmap(e).shrn(a),c=Kt(512,u)?null:Bn(512,u);if(c!==null){let l=t+c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Nm=F([Le(8),q("bump"),ht("index"),R(""),je("protocolFeeRate"),je("tradeFeeRate"),ht("tickSpacing"),$(g(),8,"")]),zo=F([je("blockTimestamp"),E("sqrtPriceX64"),E("cumulativeTimePriceX64"),$(E(),1,"")]),Ln=F([Le(8),Xe("initialized"),R("poolId"),$(zo,1e3,"observations"),$(E(),5,"")]),Qo=F([q("rewardState"),g("openTime"),g("endTime"),g("lastUpdateTime"),E("emissionsPerSecondX64"),g("rewardTotalEmissioned"),g("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),E("rewardGrowthGlobalX64")]),Rn=F([Le(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),ht("tickSpacing"),E("liquidity"),E("sqrtPriceX64"),ye("tickCurrent"),ht("observationIndex"),ht("observationUpdateDuration"),E("feeGrowthGlobalX64A"),E("feeGrowthGlobalX64B"),g("protocolFeesTokenA"),g("protocolFeesTokenB"),E("swapInAmountTokenA"),E("swapOutAmountTokenB"),E("swapInAmountTokenB"),E("swapOutAmountTokenA"),q("status"),$(q(),7,""),$(Qo,3,"rewardInfos"),$(g(),16,"tickArrayBitmap"),g("totalFeesTokenA"),g("totalFeesClaimedTokenA"),g("totalFeesTokenB"),g("totalFeesClaimedTokenB"),g("fundFeesTokenA"),g("fundFeesTokenB"),g("startTime"),$(g(),15*4-3,"padding")]),Yo=F([E("growthInsideLastX64"),g("rewardAmountOwed")]),Mn=F([Le(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(Yo,3,"rewardInfos"),$(g(),8,"")]),Lm=F([Le(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(E(),3,"rewardGrowthInside"),$(g(),8,"")]),Zo=F([ye("tick"),Wi("liquidityNet"),E("liquidityGross"),E("feeGrowthOutsideX64A"),E("feeGrowthOutsideX64B"),$(E(),3,"rewardGrowthsOutsideX64"),$(je(),13,"")]),Rt=F([Le(8),R("poolId"),ye("startTickIndex"),$(Zo,me,"ticks"),q("initializedTickCount"),$(q(),115,"")]),jo=F([Le(329),$(R(),100,"whitelistMints")]),vi=F([Le(8),R("poolId"),$($(g(),8),Nn,"positiveTickArrayBitmap"),$($(g(),8),Nn,"negativeTickArrayBitmap")]);var Jo=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=B.getTickArrayStartIndexByTick(r,o),l=B.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jo/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Z(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=te(Y({},b),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=B.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:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?B.searchLowBitFromStart(r,o,s-1,1,t):B.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=me-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<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Z(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=B.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Z(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(B.checkIsOutOfBoundary(e)){if(e>Pe)return!1;let n=B.getTickArrayStartIndexByTick(he,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,B=class{static getTickArrayAddressByTick(e,t,n,r){let o=B.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Z(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=B.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*me:e+t*me}static mergeTickArrayBitmap(e){let t=new $o(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*me));return[...B.searchLowBitFromStart(e,t,s-1,o,n),...B.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return B.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=B.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Z(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<he||e>Pe}static nextInitTick(e,t,n,r,o){if(G.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import He from"bn.js";var Mt=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new He(0),a=new He(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,k,A,h;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new He(new N(m.amountA.toString()).mul(l).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,s,!0),le(new He(new N(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Vi}from"@solana/spl-token";var Ae=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...p),{expectedAmountOut:m.mul(Qe),remainingAccounts:a,executionPrice:d,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=Z(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Qe),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Ae.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):B.checkTickArrayIsInitialized(B.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Z(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Z(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/G.tickCount(e.tickSpacing)),r=t?B.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):B.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(B.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<he||t>Pe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(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(p===void 0)throw Error("get new reward mint info error");let d=te(Y({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $e(p)});if(d.tokenMint.equals($e.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new se(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),y=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(y),A=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),h=d.rewardTotalEmissioned.add(A);s.push(te(Y({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:h,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=B.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Pe&&(t=G.getArrayStartIndex(Pe,e)+G.tickCount(e)),n<he&&(n=G.getArrayStartIndex(he,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await An(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=vi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=B.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=B.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Z(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await An(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=te(Y({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(We(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Mn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let y=f.state,k=B._getTickPriceLegacy({poolInfo:y,tick:d.tickLower,baseIn:!0}),A=B._getTickPriceLegacy({poolInfo:y,tick:d.tickUpper,baseIn:!0}),{amountA:h,amountB:x}=U.getAmountsFromLiquidity(y.sqrtPriceX64,k.tickSqrtPriceX64,A.tickSqrtPriceX64,d.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(k.price.div(A.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:A.price,amountA:h,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>te(Y({},_),{pendingReward:new se(0)})),leverage:P,tokenFeeAmountA:new se(0),tokenFeeAmountB:new se(0)}];let L=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),O=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=O}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let y=d[f];if(y===null)continue;let k=p[f].toString();b[k]=Rt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let k of y){let A=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[A].toString()],P=b[m[h].toString()],L=x.ticks[B.getTickOffsetInArray(k.tickLower,f.tickSpacing)],O=P.ticks[B.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:ee}=await Mt.GetPositionFees(f,k,L,O),X=await Mt.GetPositionRewards(f,k,L,O);k.tokenFeeAmountA=_.gte(new se(0))?_:new se(0),k.tokenFeeAmountB=ee.gte(new se(0))?ee:new se(0);for(let j=0;j<X.length;j++)k.rewardInfos[j].pendingReward=X[j].gte(new se(0))?X[j]:new se(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?u=c?Ye.add(new se(1)):Ze.sub(new se(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:y}=Ae.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),A=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?A:new N(1).div(A),x=d.mul(new se(Math.floor((1-s)*1e10))).div(new se(1e10)),P=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),O=new N(h).sub(L).abs(),_=L,ee=new rt(new N(O).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:ee,fee:y,remainingAccounts:b}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new qe(te(Y({},u),{mint:u.address,isToken2022:u.programId===Vi.toBase58()})),new qe(te(Y({},c),{mint:c.address,isToken2022:c.programId===Vi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:y,executionPrice:k,priceImpact:A,fee:h,remainingAccounts:x}=await Ae.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $e(u.address),amountIn:n,slippage:o,epochInfo:s}),P=te(Y({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=te(Y({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),O=te(Y({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ce({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:y.mul(new N(10**(20+m.decimals))).toFixed(0)}),ee=new Ce({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,h);return{realAmountIn:P,amountOut:L,minAmountOut:O,expirationTime:f,currentPrice:_,executionPrice:ee,priceImpact:A,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,y;let o=e[t],s=B.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=B.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(y=o.rewardApr[2])!=null?y:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:A,amountSlippageB:h}=U.getAmountsFromLiquidityWithSlippage(f,y,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:P}=U.getAmountsFromLiquidityWithSlippage(f,y,k,o,!1,!1,0),L=new N(A.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(b)).mul(p.value)),O=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(b)).mul(p.value)),_=O.div(L.add(O)).div(O),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),j=3600*24*365,Me=e.rewardDefaultInfos.map(pe=>{var Q,zn;let Te=pe.mint.decimals,ie=r[pe.mint.address];return u<((Q=pe.startTime)!=null?Q:0)||u>((zn=pe.endTime)!=null?zn:0)||!pe.perSecond||!ie||Te===void 0?0:new N(ie.value).mul(new N(pe.perSecond).mul(j)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Me,apr:X+Me.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,A;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new se(new N(b.amount.sub((A=b.fee)!=null?A:ue).toString()).mul(d).toFixed(0)),y;if(l.lte(m))y=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new se(0);else if(l.lte(p)){let h=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);y=t?h:x}else y=t?new se(0):U.getLiquidityFromTokenAmountB(m,p,f);return Ae.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,k,A,h;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),le(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new $e(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=Rn.decode(n.data),o=Ne(new $e(t.programId),new $e(t.id)).publicKey,s=await Ae.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return te(Y({},r),{id:new $e(t.id),programId:new $e(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:te(Y({},t.config),{id:new $e(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Ht).sub(t).mod(Ht)}};function de(i,e){return En(i.mul(e),64,256)}function es(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function En(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<he||e>Pe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Pi.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ze)||e.lt(Ye))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=es(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Ti;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(xi)),p=En(m.sub(new D(Bi)),64,128).toNumber(),d=En(m.add(new D(Ii)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?v.mulDivRoundingUp(a,Ie,Tn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Tn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var A,h,x,P;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),le(d.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[y,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:y,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ye.add(Ie):Ze.sub(Ie)),s){if(b.lt(Ye))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(Ze))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),y={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,A=n[d],h=0,x=!s&&A.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(ue)&&!y.sqrtPriceX64.eq(b);){if(h>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=y.sqrtPriceX64;let L=B.nextInitTick(A,y.tick,l,s,x),O=L||null,_=null;if(!(O!=null&&O.liquidityGross.gtn(0))){let X=Ae.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:j}=Z(e,t,k);_=j,A=n[k],O=B.firstInitializedTick(A,s)}P.tickNext=O.tick,P.initialized=O.liquidityGross.gtn(0),d!==k&&_&&(y.accounts.push(_),d=k),P.tickNext<he?P.tickNext=he:P.tickNext>Pe&&(P.tickNext=Pe),P.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(P.tickNext);let ee;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?ee=b:ee=P.sqrtPriceNextX64,[y.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(y.sqrtPriceX64,ee,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(P.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),y.amountCalculated=y.amountCalculated.sub(P.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(P.amountOut),y.amountCalculated=y.amountCalculated.add(P.amountIn.add(P.feeAmount))),y.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let X=O.liquidityNet;s&&(X=X.mul(Qe)),y.liquidity=U.addDelta(y.liquidity,X)}x=P.tickNext!=y.tick&&!s&&A.startTickIndex===P.tickNext,y.tick=s?P.tickNext-1:P.tickNext}else if(y.sqrtPriceX64!=P.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(y.sqrtPriceX64);x=X!=y.tick&&!s&&A.startTickIndex===X,y.tick=X}++h}try{let{nextStartIndex:P,isExist:L}=G.nextInitializedTickArray(y.tick,l,s,r,o);L&&d!==P&&(y.accounts.push(Z(e,t,P).publicKey),d=P)}catch{}return{amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,zt.sub(new D(o.toString())),zt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Qe).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Qe),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Qe))&&(s.amountOut=r.mul(Qe)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),zt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as at,ASSOCIATED_TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as At,Keypair as Vn}from"@solana/web3.js";import zi from"bn.js";import{PublicKey as ss,Keypair as as}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as us}from"@solana/spl-token";import Zd from"bn.js";var ts=F([R("mint"),R("owner"),g("amount"),je("delegateOption"),R("delegate"),q("state"),je("isNativeOption"),g("isNative"),g("delegatedAmount"),je("closeAuthorityOption"),R("closeAuthority")]);function ns(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function On(i,...e){if(!ns(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Fn(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function Di(i,e){On(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var $t=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ve=(i,e)=>i<<32-e|i>>>e;var Od=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function is(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Wn(i){return typeof i=="string"&&(i=is(i)),On(i),i}var Jt=class{clone(){return this._cloneInto()}},Fd={}.toString;function _i(i){let e=n=>i().update(Wn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function rs(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var qi=(i,e,t)=>i&e^~i&t,Gi=(i,e,t)=>i&e^i&t^e&t,en=class extends Jt{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=$t(this.buffer)}update(e){Fn(this);let{view:t,buffer:n,blockLen:r}=this;e=Wn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=$t(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Fn(this),Di(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;rs(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=$t(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var os=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]),ot=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),st=new Uint32Array(64),vn=class extends en{constructor(){super(64,32,8,!1),this.A=ot[0]|0,this.B=ot[1]|0,this.C=ot[2]|0,this.D=ot[3]|0,this.E=ot[4]|0,this.F=ot[5]|0,this.G=ot[6]|0,this.H=ot[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)st[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=st[m-15],d=st[m-2],b=ve(p,7)^ve(p,18)^p>>>3,f=ve(d,17)^ve(d,19)^d>>>10;st[m]=f+st[m-7]+b+st[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=ve(a,6)^ve(a,11)^ve(a,25),d=l+p+qi(a,u,c)+os[m]+st[m]|0,f=(ve(n,2)^ve(n,13)^ve(n,22))+Gi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){st.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ui=_i(()=>new vn);var ep=ae("Raydium_Util");function Xi({fromPublicKey:i,programId:e=us}){let t=as.generate().publicKey.toBase58().slice(0,32);return{publicKey:cs(i,t,e),seed:t}}function cs(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Ui(n);return new ss(r)}var Qi=ae("Raydium_Clmm"),De={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]},Et=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([E("sqrtPriceX64"),g("startTime")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let A=Buffer.from([...De.createPool,...k]);return new Ve({keys:y,programId:e,data:A})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Xi({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[At.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ln.span),space:Ln.span,programId:n})],{publicKey:f}=Ni(n,a,p,d),{publicKey:y}=In(n,f,p),{publicKey:k}=In(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,y,new T(o.programId||ge),d,k,new T(s.programId||ge),Ne(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[oe.CreateAccount,oe.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:y,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A,h,x,P,L,O,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),E("liquidity"),g("amountMaxA"),g("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:A,tickUpperIndex:h,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:L,amountMaxA:O,amountMaxB:_,withMetadata:ee==="create",baseFlag:!1,optionBaseFlag:0},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:A}=Z(p,d,y),{publicKey:h}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),O=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,h,x,L,k,A,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,s,a,u,c);return{signers:m,instructions:[O],instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:A,positionNftAccount:h,metadataAccount:x,personalPosition:P,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:A}=Z(p,d,y),{publicKey:h}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),O=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,h,x,L,k,A,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,c,s,a,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ne(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:A,positionNftAccount:h,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[O],signers:m,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A,h,x,P,L,O,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),E("liquidity"),g("amountMaxA"),g("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:A,tickUpperIndex:h,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:new zi(0),amountMaxA:O==="MintA"?_:ee,amountMaxB:O==="MintA"?ee:_,withMetadata:L==="create",baseFlag:O==="MintA",optionBaseFlag:1},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new T((await l(1))[0]);else{let _=Vn.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(d,b,f),{publicKey:A}=Z(d,b,y),{publicKey:h}=Ge(n.wallet,m,ge),{publicKey:x}=Yt(m),{publicKey:P}=We(d,m),{publicKey:L}=mt(d,b,r,o),O=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,h,x,L,k,A,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,y,s,a,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ne(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:A,positionNftAccount:h,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[O],signers:p,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=We(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[oe.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A){let h=F([E("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:y,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let O=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:O})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[k],instructionTypes:[oe.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0)],signers:[],instructionTypes:[oe.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A){let h=F([E("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(h.span);h.encode({liquidity:new zi(0),amountMaxA:f==="MintA"?y:k,amountMaxB:f==="MintA"?k:y,baseFlag:f==="MintA",optionBaseFlag:1},L);let O=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:O})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A,h){let x=F([E("liquidity"),g("amountMinA"),g("amountMinB")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(ee=>[{pubkey:ee.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,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:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],O=Buffer.alloc(x.span);x.encode({liquidity:y,amountMinA:k,amountMinB:A},O);let _=Buffer.from([...De.decreaseLiquidity,...O]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Z(c,l,m),{publicKey:b}=Z(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:y}=We(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),A=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)A.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,r.wallet,f,y,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),A,o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Ne(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:k},signers:[],instructions:h,instructionTypes:[oe.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k){let A=F([g("amount"),g("otherAmountThreshold"),E("sqrtPriceLimitX64"),Xe("isBaseInput")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(O=>({pubkey:O,isSigner:!1,isWritable:!0}))],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],P=Buffer.alloc(A.span);A.encode({amount:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},P);let L=Buffer.from([...De.swap,...P]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new T(e.programId),new T(e.id)],[p,d]=[new T(t.vault.A),new T(t.vault.B)],[b,f]=[new T(e.mintA.address),new T(e.mintB.address)],y=e.mintA.address===o.toString(),k=[this.swapInstruction(l,r.wallet,m,new T(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?p:d,y?d:p,y?b:f,y?f:b,c,n,s,a,u,!0,Ne(l,m).publicKey)];return{signers:[],instructions:k,instructionTypes:[oe.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([g("openTime"),g("endTime"),E("emissionsPerSecondX64")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:p},f);let y=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Li(o,s,r.mint).publicKey,u=Zt(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[oe.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),E("emissionsPerSecondX64"),g("openTime"),g("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,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(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:re(l),endTime:re(m)},f);let y=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Zt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[oe.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[oe.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[oe.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Ep from"bn.js";import{TOKEN_PROGRAM_ID as ys,ASSOCIATED_TOKEN_PROGRAM_ID as hf}from"@solana/spl-token";import{PublicKey as Pf,TransactionInstruction as Zi,SystemProgram as gs,SYSVAR_RENT_PUBKEY as Tf}from"@solana/web3.js";var Dn=F([q("instruction"),g("amountIn"),g("minAmountOut")]),_n=F([q("instruction"),g("maxAmountIn"),g("amountOut")]),cf=F([q("instruction"),q("nonce")]),ls=F([q("instruction"),q("nonce"),g("startTime")]),lf=F([g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalValue"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),E("swapBaseInAmount"),E("swapQuoteOutAmount"),g("swapBase2QuoteFee"),E("swapQuoteInAmount"),E("swapBaseOutAmount"),g("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),g("lpReserve"),$(g(),3,"padding")]),mf=F([g("accountType"),g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalsValue"),g("abortTradeFactor"),g("priceTickMultiplier"),g("priceTick"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),E("swapBaseInAmount"),E("swapQuoteOutAmount"),E("swapQuoteInAmount"),E("swapBaseOutAmount"),g("swapQuote2BaseFee"),g("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),$(g(),64,"padding")]),ms=F([q("instruction"),g("baseAmountIn"),g("quoteAmountIn"),g("fixedSide")]),ds=F([q("instruction"),g("amountIn")]);var df=F([g("fee")]);import{PublicKey as ps}from"@solana/web3.js";var qn=new ps("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),fs=5e4,bs=F([g("x"),g("y"),g("price")]),gf=F([g("accountType"),g("status"),g("multiplier"),g("validDataCount"),$(bs,fs,"DataElement")]);var Yi=ae("Raydium_liquidity_instruction");function ws({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(Dn.span);Dn.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[V({pubkey:ys,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:qn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new Zi({programId:o.programId,keys:a,data:s})}function ks({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(_n.span);_n.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[V({pubkey:gs.programId,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:qn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Zi({programId:o.programId,keys:a,data:s})}function ji(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return ws(te(Y({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return ks(te(Y({},a),{maxAmountIn:r,amountOut:o}),t);Yi.logWithError("invalid params","params",i)}throw Yi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function _f(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),g("amountIn"),g("amountOut")]),d=[{pubkey:$i.programId,isSigner:!1,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Hn({keys:d,programId:i,data:b})}function qf(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:$i.programId,isSigner:!1,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Hn({keys:m,programId:i,data:p})}function Ji(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Gn)||a.mintB.programId.equals(Gn)?[{pubkey:Gn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ne(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function hs(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),g("amountIn"),g("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1}];f.push(...Ji(a,c,o,t,n,d[0])),f.push(...Ji(u,l,s,n,r,d[1]));let y=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},y),new Hn({keys:f,programId:i,data:y})}async function Gf({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ye.add(Ie):Ze.sub(Ie);return await Et.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,observationId:l.vault.A,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Un(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Un(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?oe.AmmV5SwapBaseIn:oe.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[hs(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Un(0)),n.remainingAccounts)],instructionTypes:[oe.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{Gf as makeSwapInstruction,_f as route1Instruction,qf as route2Instruction,hs as routeInstruction};
1
+ var tr=Object.defineProperty,nr=Object.defineProperties;var ir=Object.getOwnPropertyDescriptors;var Qn=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,or=Object.prototype.propertyIsEnumerable;var Yn=(i,e,t)=>e in i?tr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Y=(i,e)=>{for(var t in e||(e={}))rr.call(e,t)&&Yn(i,t,e[t]);if(Qn)for(var t of Qn(e))or.call(e,t)&&Yn(i,t,e[t]);return i},te=(i,e)=>nr(i,ir(e));import{TOKEN_PROGRAM_ID as Xn,TOKEN_2022_PROGRAM_ID as Gn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Hn,SystemProgram as er}from"@solana/web3.js";import Un from"bn.js";import{PublicKey as wp}from"@solana/web3.js";var bt=9e15,it=1e9,tn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",nn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},$n,ze,M=!0,Vt="[DecimalError] ",nt=Vt+"Invalid argument: ",ei=Vt+"Precision limit exceeded",ti=Vt+"crypto unavailable",ni="[object Decimal]",we=Math.floor,ce=Math.pow,sr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ar=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ur=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ii=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,K=7,cr=9007199254740991,lr=Ft.length-1,rn=Wt.length-1,w={toStringTag:ni};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),I(i)};w.ceil=function(){return I(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(nt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=mr(n,ui(n,t)),n.precision=i,n.rounding=e,I(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=J(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(I(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,I(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/K))*K,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return J(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return I(J(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return I(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/_t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=yt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return I(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=yt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/_t(5,i)),r=yt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,I(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,J(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ee(t,r,o):new t(0):new t(NaN):e.isZero()?Ee(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Ee(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?I(new o(r),i,e,!0):(o.precision=t=n-r.e,r=J(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Ee(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=rn)return s=Ee(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=rn)return s=Ee(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/K+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/K),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),M=!0,I(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/K)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(M=!1,a=m+d,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),Pt(u.d,r=m,p))do if(a+=10,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=I(u,m+1,0));break}while(Pt(u.d,r+=10,p));return M=!0,I(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return M?I(i,a,u):i}if(t=we(i.e/K),l=we(d.e/K),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/K),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=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Oe-1;--c[r],c[n]+=Oe}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),M?I(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?I(new n(t),n.precision,n.rounding):(M=!1,n.modulo==9?(e=J(t,i.abs(),0,3,1),e.s*=i.s):e=J(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return on(this)};w.naturalLogarithm=w.ln=function(){return tt(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,I(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),M?I(i,a,u):i;if(o=we(m.e/K),n=we(i.e/K),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/K),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Oe|0,c[r]%=Oe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),M?I(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(nt+i);return t.d?(e=ri(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return I(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+K,n.rounding=1,t=pr(n,ui(n,t)),n.precision=i,n.rounding=e,I(ze>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((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(J(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(n,u+1,1),i=!n.times(n).eq(s));break}return M=!0,I(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=J(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,I(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/K)+we(i.e/K),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%Oe|0,e=a/Oe|0;o[r]=(o[r]+e)%Oe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Dt(o,t),M?I(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return an(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,it),e===void 0?e=n.rounding:xe(e,0,8),I(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,it),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,it),e===void 0?e=o.rounding:xe(e,0,8),n=I(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ri(b)-d.e-1,s=o%K,e.d[0]=ce(10,s<0?K+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(nt+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*K*2;m=J(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=J(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=J(c,n,o,1).minus(d).abs().cmp(J(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,M=!0,p};w.toHexadecimal=w.toHex=function(i,e){return an(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:xe(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(M=!1,t=J(t,i,0,e,1).times(i),M=!0,I(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return an(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return I(a,n,o);if(e=we(i.e/K),e>=i.d.length-1&&(t=c<0?-c:c)<=cr)return r=oi(u,a,t,n),i.s<0?new u(1).div(r):I(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(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):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=on(i.times(tt(a,n+t)),n),r.d&&(r=I(r,n+5,1),Pt(r.d,n,o)&&(e=n+10,r=I(on(i.times(tt(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=I(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,I(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,it),e===void 0?e=r.rounding:xe(e,0,8),n=I(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,it),e===void 0?e=n.rounding:xe(e,0,8)),I(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return I(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=K-n.length,t&&(o+=et(t)),o+=n;s=i[e],n=s+"",t=K-n.length,t&&(o+=et(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(nt+i)}function Pt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=K,r=0):(r=Math.ceil((e+1)/K),e%=K),o=ce(10,K-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==ce(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==ce(10,e-3)-1,s}function Ot(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=tn.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function mr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/_t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=yt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var J=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,p,d,b,f,y,k,A,h,x,P,L,O,_,ee,X,j,Me,pe=n.constructor,Te=n.s==r.s?1:-1,ie=n.d,Q=r.d;if(!ie||!ie[0]||!Q||!Q[0])return new pe(!n.s||!r.s||(ie?Q&&ie[0]==Q[0]:!Q)?NaN:ie&&ie[0]==0||!Q?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Oe,d=K,l=we(n.e/d)-we(r.e/d)),j=Q.length,ee=ie.length,k=new pe(Te),A=k.d=[],m=0;Q[m]==(ie[m]||0);m++);if(Q[m]>(ie[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)A.push(1),b=!0;else{if(L=L/d+2|0,m=0,j==1){for(p=0,Q=Q[0],L++;(m<ee||p)&&L--;m++)O=p*u+(ie[m]||0),A[m]=O/Q|0,p=O%Q|0;b=p||m<ee}else{for(p=u/(Q[0]+1)|0,p>1&&(Q=i(Q,p,u),ie=i(ie,p,u),j=Q.length,ee=ie.length),_=j,h=ie.slice(0,j),x=h.length;x<j;)h[x++]=0;Me=Q.slice(),Me.unshift(0),X=Q[0],Q[1]>=u/2&&++X;do p=0,c=e(Q,h,j,x),c<0?(P=h[0],j!=x&&(P=P*u+(h[1]||0)),p=P/X|0,p>1?(p>=u&&(p=u-1),f=i(Q,p,u),y=f.length,x=h.length,c=e(f,h,y,x),c==1&&(p--,t(f,j<y?Me:Q,y,u))):(p==0&&(c=p=1),f=Q.slice()),y=f.length,y<x&&f.unshift(0),t(h,f,x,u),c==-1&&(x=h.length,c=e(Q,h,j,x),c<1&&(p++,t(h,j<x?Me:Q,x,u))),x=h.length):c===0&&(p++,h=[0]),A[m++]=p,c&&h[0]?h[x++]=ie[_]||0:(h=[ie[_]],x=1);while((_++<ee||h[0]!==void 0)&&L--);b=h[0]!==void 0}A[0]||A.shift()}if(d==1)k.e=l,$n=b;else{for(m=1,p=A[0];p>=10;p/=10)m++;k.e=m+l*d-1,I(k,a?o+k.e+1:o,s,b)}return k}}();function I(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=K,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/K),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=K,s=o-K+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=K,s=o-K+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(K-e%K)%K),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,K-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Oe&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Oe)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return ai(i);var n,r=i.e,o=fe(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+et(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+et(-r-1)+o,t&&(n=t-s)>0&&(o+=et(n))):r>=s?(o+=et(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+et(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=et(n))),o}function Dt(i,e){var t=i[0];for(e*=K;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>lr)throw M=!0,t&&(i.precision=t),Error(ei);return I(new i(Ft),e,1,!0)}function Ee(i,e,t){if(e>rn)throw Error(ei);return I(new i(Wt),e,t,!0)}function ri(i){var e=i.length-1,t=e*K+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function et(i){for(var e="";i--;)e+="0";return e}function oi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/K+4);for(M=!1;;){if(t%2&&(o=o.times(e),jn(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),jn(e.d,s)}return M=!0,o}function Zn(i){return i.d[i.d.length-1]&1}function si(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function on(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=I(o.times(i),u,1),t=t.times(++l),a=s.plus(J(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=I(s.times(s),u,1);if(e==null)if(c<3&&Pt(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return I(s,p.precision=b,d,M=!0);else return p.precision=b,s}s=a}}function tt(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,y=f.d,k=f.constructor,A=k.rounding,h=k.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new k(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(M=!1,l=h):l=e,k.precision=l+=b,t=fe(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,h).times(o+""),f=tt(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=h,e==null?I(f,h,A,M=!0):f;for(m=f,u=s=f=J(f.minus(1),f.plus(1),l,1),p=I(f.times(f),l,1),r=3;;){if(s=I(s.times(p),l,1),c=u.plus(J(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,h).times(o+""))),u=J(u,new k(d),l,1),e==null)if(Pt(u.d,l-b,A,a))k.precision=l+=b,c=s=f=J(m.minus(1),m.plus(1),l,1),p=I(f.times(f),l,1),r=a=1;else return I(u,k.precision=h,A,M=!0);else return k.precision=h,u;u=c,r+=2}}function ai(i){return String(i.s*i.s/0)}function sn(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%K,t<0&&(n+=K),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=K;n<r;)i.d.push(+e.slice(n,n+=K));e=e.slice(n),n=K-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function dr(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ii.test(e))return sn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(ar.test(e))t=16,e=e.toLowerCase();else if(sr.test(e))t=2;else if(ur.test(e))t=8;else throw Error(nt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=oi(n,new n(t),o,o*2)),c=Ot(e,t,Oe),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,M=!1,s&&(i=J(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),M=!0,i)}function pr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/K);for(M=!1,u=t.times(t),a=new i(n);;){if(s=J(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=J(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return M=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function ui(i,e){var t,n=e.s<0,r=Ee(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=Zn(t)?n?2:3:n?4:1,e;ze=Zn(t)?n?1:4:n?3:2}return e.minus(r).abs()}function an(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,it),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=ai(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Ot(_e(p),10,r),p.e=p.d.length),m=Ot(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=J(i,p,t,n,0,r),m=i.d,o=i.e,c=$n),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=tn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Ot(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=tn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function jn(i,e){if(i.length>e)return i.length=e,!0}function fr(i){return new this(i).abs()}function br(i){return new this(i).acos()}function yr(i){return new this(i).acosh()}function gr(i,e){return new this(i).plus(e)}function wr(i){return new this(i).asin()}function kr(i){return new this(i).asinh()}function hr(i){return new this(i).atan()}function Ar(i){return new this(i).atanh()}function Pr(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Ee(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Ee(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Ee(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(J(i,e,o,1)),e=Ee(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(J(i,e,o,1)),t}function Tr(i){return new this(i).cbrt()}function xr(i){return I(i=new this(i),i.e+1,2)}function Br(i,e,t){return new this(i).clamp(e,t)}function Ir(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=nn[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(nt+t+": "+n);if(t="crypto",r&&(this[t]=nn[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ti);else this[t]=!1;else throw Error(nt+t+": "+n);return this}function Sr(i){return new this(i).cos()}function Cr(i){return new this(i).cosh()}function ci(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Jn(o)){c.s=o.s,M?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;M?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return sn(c,o.toString())}else if(u!=="string")throw Error(nt+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)?sn(c,o):dr(c,o)}if(r.prototype=w,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Ir,r.clone=ci,r.isDecimal=Jn,r.abs=fr,r.acos=br,r.acosh=yr,r.add=gr,r.asin=wr,r.asinh=kr,r.atan=hr,r.atanh=Ar,r.atan2=Pr,r.cbrt=Tr,r.ceil=xr,r.clamp=Br,r.cos=Sr,r.cosh=Cr,r.div=Kr,r.exp=Nr,r.floor=Lr,r.hypot=Rr,r.ln=Mr,r.log=Er,r.log10=Fr,r.log2=Or,r.max=Wr,r.min=vr,r.mod=Vr,r.mul=Dr,r.pow=_r,r.random=qr,r.round=Gr,r.sign=Ur,r.sin=Xr,r.sinh=Hr,r.sqrt=zr,r.sub=Qr,r.sum=Yr,r.tan=Zr,r.tanh=jr,r.trunc=Jr,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function Kr(i,e){return new this(i).div(e)}function Nr(i){return new this(i).exp()}function Lr(i){return I(i=new this(i),i.e+1,3)}function Rr(){var i,e,t=new this(0);for(M=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function Jn(i){return i instanceof Tt||i&&i.toStringTag===ni||!1}function Mr(i){return new this(i).ln()}function Er(i,e){return new this(i).log(e)}function Or(i){return new this(i).log(2)}function Fr(i){return new this(i).log(10)}function Wr(){return si(this,arguments,"lt")}function vr(){return si(this,arguments,"gt")}function Vr(i,e){return new this(i).mod(e)}function Dr(i,e){return new this(i).mul(e)}function _r(i,e){return new this(i).pow(e)}function qr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,it),n=Math.ceil(i/K),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(ti);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=K,n&&i&&(r=ce(10,K-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=K)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<K&&(t-=K-n)}return s.e=t,s.d=a,s}function Gr(i){return I(i=new this(i),i.e+1,this.rounding)}function Ur(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Xr(i){return new this(i).sin()}function Hr(i){return new this(i).sinh()}function zr(i){return new this(i).sqrt()}function Qr(i,e){return new this(i).sub(e)}function Yr(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,I(t,this.precision,this.rounding)}function Zr(i){return new this(i).tan()}function jr(i){return new this(i).tanh()}function Jr(i){return I(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=ci(nn);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{get as li,set as $r}from"lodash";import di from"dayjs";import eo from"dayjs/plugin/utc";di.extend(eo);var un=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 di().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}},mi={},to={};function ae(i){let e=li(mi,i);if(!e){let t=li(to,i);e=new un({name:i,logLevel:t}),$r(mi,i,e)}return e}import{PublicKey as ko}from"@solana/web3.js";import ho from"bn.js";import yo from"big.js";import Xt from"bn.js";import Be from"bn.js";import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as no}from"@solana/spl-token";import{PublicKey as ne,SystemProgram as pi,SYSVAR_RENT_PUBKEY as io}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ks=[V({pubkey:no,isWritable:!1}),V({pubkey:pi.programId,isWritable:!1}),V({pubkey:io,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof ne)return e&&t.equals(xt)?cn:t;if(e&&t.toString()===xt.toBase58())return cn;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new ne(i)}catch{return i}}var gt=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ns=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new ne("SysvarRent111111111111111111111111111111111"),Ls=new ne("SysvarC1ock11111111111111111111111111111111"),kt=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Rs=new ne("Sysvar1nstructions1111111111111111111111111"),Ms=pi.programId,Es=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Os=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Fs=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ws=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),vs=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Vs=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ds=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),_s=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qs=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Gs=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Us=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),cn=new ne("So11111111111111111111111111111111111111112"),xt=ne.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as ro}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";var bi={chainId:101,address:ro.default.toBase58(),programId:fi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:fi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new pn(ut.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(te(Y({},ut),{mint:ut.address}));import Gt from"big.js";import ao from"bn.js";import uo from"decimal.js-light";import oo from"toformat";var so=oo,Bt=so;var qt=ae("module/fraction"),bn=Bt(Gt),It=Bt(uo),co={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},lo={[0]:Gt.roundDown,[1]:Gt.roundHalfUp,[2]:Gt.roundUp},z=class{constructor(e,t=new ao(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(re(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(re(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(re(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(re(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<=0&&qt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:co[n]});let r=new It(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||qt.logWithError(`${e} is not an integer.`),e<0&&qt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=lo[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var po=ae("Raydium_price"),Ce=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(yn(n.decimals),yn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&po.logWithError("mul token not equals");let n=super.mul(t);return new Ce({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ut=gn;Ut.SOL=new gn(bi);import fo from"bn.js";var yi=new z(new fo(100)),rt=class extends z{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)}};var gi=new Be(0),bo=new Be(1),Da=new Be(2),_a=new Be(3),qa=new Be(5),wn=new Be(10),Ga=new Be(100),Ua=new Be(1e3),Xa=new Be(1e4),wi=9007199254740991;function re(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=wi||i<=-wi)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return wn.pow(re(i))}var go=ae("Raydium_amount"),hi=Bt(yo);function wo(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):go.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new Xt(0),a=wn.pow(new Xt(t.decimals));if(r)s=re(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=wo(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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return hi.DP=this.token.decimals,new hi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ki(i){return typeof i=="object"&&i!==null&&![qe,be,ko,z,ho,Ce,rt].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):ki(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as ic,sendAndConfirmTransaction as rc,Transaction as sc,TransactionMessage as uc,VersionedTransaction as cc}from"@solana/web3.js";import mc from"axios";var oe={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 Ao,ComputeBudgetProgram as hu,Transaction as Pu,TransactionMessage as xu,Keypair as Bu,VersionedTransaction as Su}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ku}from"@solana/spl-token";var Ru=ae("Raydium_txUtil");function Ke(i,e){let[t,n]=Ao.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as To,AddressLookupTableAccount as Ai}from"@solana/web3.js";import{PublicKey as Po}from"@solana/web3.js";import{getTransferFeeConfig as Vu,unpackMint as Du}from"@solana/spl-token";var kn=ae("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Y({batchRequest:!1},t),o=hn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=hn(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:y}=m;return p.length!==2&&p[1]!=="base64"&&kn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new Po(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&kn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function An(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>te(Y({},r),{accountInfo:n[o]}))}var xo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Ai({key:new To("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Ai.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"))})};function hn(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as H}from"@solana/web3.js";var Ac=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Pc=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tc=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),xc=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Bc=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ic=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Sc=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Cc=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Kc=new H("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nc=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Lc=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Rc=new H("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Mc=new H("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ec=new H("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Oc=new H("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fc=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Wc=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),vc=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Io=new H("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),So=new H("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Co=new H("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Vc={SERUM_MARKET:H.default,OPENBOOK_MARKET:new H("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.default,FarmV3:new H("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new H("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Io,CREATE_CPMM_POOL_AUTH:So,CREATE_CPMM_POOL_FEE_ACC:Co,FEE_DESTINATION_ID:new H("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Ko}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";function Ge(i,e,t){return Ke([i.toBuffer(),(t!=null?t:No).toBuffer(),e.toBuffer()],new Ko("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=te(Y({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Fe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Pn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Pn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Pn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Pn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import Ue from"bn.js";var ue=new Ue(0),Ie=new Ue(1),Qe=new Ue(-1),Se=new Ue(1).shln(64),Ht=new Ue(1).shln(128),Tn=Se.sub(Ie),Ct=64,Pi=Ht.subn(1),he=-443636,Pe=-he,Ye=new Ue("4295048016"),Ze=new Ue("79226673521066979257578248091"),Ti=16,xi="59543866431248",Bi="184467440737095516",Ii="15793534762490258745",zt=new Ue(10).pow(new Ue(6));var yl=new Ue("18446744073700000000");import D from"bn.js";function Qt(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function xn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Bn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Kt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Si(i,e){return Kt(i,e)?null:xn(i,e)}function Ci(i,e){return Kt(i,e)?null:Bn(i,e)}var Pl=Buffer.from("amm_config","utf8"),Lo=Buffer.from("pool","utf8"),Ro=Buffer.from("pool_vault","utf8"),Mo=Buffer.from("pool_reward_vault","utf8"),Ki=Buffer.from("position","utf8"),Eo=Buffer.from("tick_array","utf8"),Oo=Buffer.from("operation","utf8"),Fo=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ni(i,e,t,n){return Ke([Lo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function In(i,e,t){return Ke([Ro,e.toBuffer(),t.toBuffer()],i)}function Li(i,e,t){return Ke([Mo,e.toBuffer(),t.toBuffer()],i)}function Z(i,e,t){return Ke([Eo,e.toBuffer(),Qt(t)],i)}function mt(i,e,t,n){return Ke([Ki,e.toBuffer(),Qt(t),Qt(n)],i)}function We(i,e){return Ke([Ki,e.toBuffer()],i)}function Yt(i){return Ke([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function Zt(i){return Ke([Oo],i)}function Ne(i,e){return Ke([Fo,e.toBuffer()],i)}import{PublicKey as $e}from"@solana/web3.js";import se from"bn.js";import es from"bn.js";import{PublicKey as Xo}from"@solana/web3.js";import Oi,{isBN as Fi}from"bn.js";import{bits as Bl,BitStructure as Il,blob as Wo,Blob as Sl,cstr as Cl,f32 as Kl,f32be as Nl,f64 as Ll,f64be as Rl,greedy as Ml,Layout as vo,ns64 as El,ns64be as Ol,nu64 as Fl,nu64be as Wl,offset as vl,s16 as Vl,s16be as Dl,s24 as _l,s24be as ql,s32 as Vo,s32be as Gl,s40 as Ul,s40be as Xl,s48 as Hl,s48be as zl,s8 as Ql,seq as Do,struct as Yl,Structure as _o,u16 as qo,u16be as Zl,u24 as jl,u24be as Jl,u32 as $l,u32be as em,u40 as tm,u40be as nm,u48 as im,u48be as rm,u8 as Go,UInt as Uo,union as om,Union as sm,unionLayoutDiscriminator as am,utf8 as um}from"@solana/buffer-layout";var Sn=vo,Ri=_o;var Cn=Uo;var Mi=Go,ht=qo;var ye=Vo;var Ei=Do;var Le=Wo;var Nt=class extends Sn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new Oi(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Oi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Cn(1,i)}function je(i){return new Cn(4,i)}function g(i){return new Nt(8,!1,i)}function E(i){return new Nt(16,!1,i)}function Wi(i){return new Nt(16,!0,i)}var jt=class extends Sn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function R(i){return new jt(Le(32),e=>new Xo(e),e=>e.toBuffer(),i)}function Xe(i){return new jt(Mi(),Ho,zo,i)}function Ho(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function zo(i){return i?1:0}var Kn=class extends Ri{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new Kn(i,e,t)}function $(i,e,t){let n,r=typeof e=="number"?e:Fi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Fi(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 Ei(i,r,t)}var Nn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Si(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Ci(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;if(Pe<=t)throw Error(`extensionTickBoundary check error: ${Pe}, ${t}`);if(n<=he)throw Error(`extensionTickBoundary check error: ${n}, ${he}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:B.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=B.mergeTickArrayBitmap(e).shln(dt-1-a),c=Kt(512,u)?null:xn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=B.mergeTickArrayBitmap(e).shrn(a),c=Kt(512,u)?null:Bn(512,u);if(c!==null){let l=t+c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Km=F([Le(8),q("bump"),ht("index"),R(""),je("protocolFeeRate"),je("tradeFeeRate"),ht("tickSpacing"),$(g(),8,"")]),Qo=F([je("blockTimestamp"),E("sqrtPriceX64"),E("cumulativeTimePriceX64"),$(E(),1,"")]),Ln=F([Le(8),Xe("initialized"),R("poolId"),$(Qo,1e3,"observations"),$(E(),5,"")]),Yo=F([q("rewardState"),g("openTime"),g("endTime"),g("lastUpdateTime"),E("emissionsPerSecondX64"),g("rewardTotalEmissioned"),g("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),E("rewardGrowthGlobalX64")]),Rn=F([Le(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),ht("tickSpacing"),E("liquidity"),E("sqrtPriceX64"),ye("tickCurrent"),ht("observationIndex"),ht("observationUpdateDuration"),E("feeGrowthGlobalX64A"),E("feeGrowthGlobalX64B"),g("protocolFeesTokenA"),g("protocolFeesTokenB"),E("swapInAmountTokenA"),E("swapOutAmountTokenB"),E("swapInAmountTokenB"),E("swapOutAmountTokenA"),q("status"),$(q(),7,""),$(Yo,3,"rewardInfos"),$(g(),16,"tickArrayBitmap"),g("totalFeesTokenA"),g("totalFeesClaimedTokenA"),g("totalFeesTokenB"),g("totalFeesClaimedTokenB"),g("fundFeesTokenA"),g("fundFeesTokenB"),g("startTime"),$(g(),15*4-3,"padding")]),Zo=F([E("growthInsideLastX64"),g("rewardAmountOwed")]),Mn=F([Le(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(Zo,3,"rewardInfos"),$(g(),8,"")]),Nm=F([Le(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(E(),3,"rewardGrowthInside"),$(g(),8,"")]),jo=F([ye("tick"),Wi("liquidityNet"),E("liquidityGross"),E("feeGrowthOutsideX64A"),E("feeGrowthOutsideX64B"),$(E(),3,"rewardGrowthsOutsideX64"),$(je(),13,"")]),Rt=F([Le(8),R("poolId"),ye("startTickIndex"),$(jo,me,"ticks"),q("initializedTickCount"),$(q(),115,"")]),Jo=F([Le(329),$(R(),100,"whitelistMints")]),vi=F([Le(8),R("poolId"),$($(g(),8),Nn,"positiveTickArrayBitmap"),$($(g(),8),Nn,"negativeTickArrayBitmap")]);var $o=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=B.getTickArrayStartIndexByTick(r,o),l=B.getInitializedTickArrayInRange(s,a,o,c,Math.floor($o/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Z(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=te(Y({},b),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=B.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:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?B.searchLowBitFromStart(r,o,s-1,1,t):B.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=me-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<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Z(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=B.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Z(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(B.checkIsOutOfBoundary(e)){if(e>Pe)return!1;let n=B.getTickArrayStartIndexByTick(he,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,B=class{static getTickArrayAddressByTick(e,t,n,r){let o=B.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Z(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=B.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*me:e+t*me}static mergeTickArrayBitmap(e){let t=new es(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*me));return[...B.searchLowBitFromStart(e,t,s-1,o,n),...B.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return B.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=B.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Z(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>B.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<he||e>Pe}static nextInitTick(e,t,n,r,o){if(G.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import He from"bn.js";var Mt=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new He(0),a=new He(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,k,A,h;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new He(new N(m.amountA.toString()).mul(l).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,s,!0),le(new He(new N(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Vi}from"@solana/spl-token";var Ae=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...p),{expectedAmountOut:m.mul(Qe),remainingAccounts:a,executionPrice:d,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=Z(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Qe),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Ae.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):B.checkTickArrayIsInitialized(B.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Z(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Z(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/G.tickCount(e.tickSpacing)),r=t?B.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):B.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(B.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<he||t>Pe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(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(p===void 0)throw Error("get new reward mint info error");let d=te(Y({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $e(p)});if(d.tokenMint.equals($e.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new se(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),y=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(y),A=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),h=d.rewardTotalEmissioned.add(A);s.push(te(Y({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:h,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=B.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Pe&&(t=G.getArrayStartIndex(Pe,e)+G.tickCount(e)),n<he&&(n=G.getArrayStartIndex(he,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await An(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=vi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=B.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=B.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Z(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await An(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=te(Y({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(We(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Mn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let y=f.state,k=B._getTickPriceLegacy({poolInfo:y,tick:d.tickLower,baseIn:!0}),A=B._getTickPriceLegacy({poolInfo:y,tick:d.tickUpper,baseIn:!0}),{amountA:h,amountB:x}=U.getAmountsFromLiquidity(y.sqrtPriceX64,k.tickSqrtPriceX64,A.tickSqrtPriceX64,d.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(k.price.div(A.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:A.price,amountA:h,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>te(Y({},_),{pendingReward:new se(0)})),leverage:P,tokenFeeAmountA:new se(0),tokenFeeAmountB:new se(0)}];let L=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),O=await B.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=O}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let y=d[f];if(y===null)continue;let k=p[f].toString();b[k]=Rt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let k of y){let A=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[A].toString()],P=b[m[h].toString()],L=x.ticks[B.getTickOffsetInArray(k.tickLower,f.tickSpacing)],O=P.ticks[B.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:ee}=await Mt.GetPositionFees(f,k,L,O),X=await Mt.GetPositionRewards(f,k,L,O);k.tokenFeeAmountA=_.gte(new se(0))?_:new se(0),k.tokenFeeAmountB=ee.gte(new se(0))?ee:new se(0);for(let j=0;j<X.length;j++)k.rewardInfos[j].pendingReward=X[j].gte(new se(0))?X[j]:new se(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?u=c?Ye.add(new se(1)):Ze.sub(new se(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:y}=Ae.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),A=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?A:new N(1).div(A),x=d.mul(new se(Math.floor((1-s)*1e10))).div(new se(1e10)),P=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),O=new N(h).sub(L).abs(),_=L,ee=new rt(new N(O).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:ee,fee:y,remainingAccounts:b}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new qe(te(Y({},u),{mint:u.address,isToken2022:u.programId===Vi.toBase58()})),new qe(te(Y({},c),{mint:c.address,isToken2022:c.programId===Vi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:y,executionPrice:k,priceImpact:A,fee:h,remainingAccounts:x}=await Ae.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $e(u.address),amountIn:n,slippage:o,epochInfo:s}),P=te(Y({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=te(Y({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),O=te(Y({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ce({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:y.mul(new N(10**(20+m.decimals))).toFixed(0)}),ee=new Ce({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,h);return{realAmountIn:P,amountOut:L,minAmountOut:O,expirationTime:f,currentPrice:_,executionPrice:ee,priceImpact:A,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,y;let o=e[t],s=B.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=B.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(y=o.rewardApr[2])!=null?y:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:A,amountSlippageB:h}=U.getAmountsFromLiquidityWithSlippage(f,y,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:P}=U.getAmountsFromLiquidityWithSlippage(f,y,k,o,!1,!1,0),L=new N(A.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(b)).mul(p.value)),O=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(b)).mul(p.value)),_=O.div(L.add(O)).div(O),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),j=3600*24*365,Me=e.rewardDefaultInfos.map(pe=>{var Q,zn;let Te=pe.mint.decimals,ie=r[pe.mint.address];return u<((Q=pe.startTime)!=null?Q:0)||u>((zn=pe.endTime)!=null?zn:0)||!pe.perSecond||!ie||Te===void 0?0:new N(ie.value).mul(new N(pe.perSecond).mul(j)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Me,apr:X+Me.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,A;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new se(new N(b.amount.sub((A=b.fee)!=null?A:ue).toString()).mul(d).toFixed(0)),y;if(l.lte(m))y=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new se(0);else if(l.lte(p)){let h=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);y=t?h:x}else y=t?new se(0):U.getLiquidityFromTokenAmountB(m,p,f);return Ae.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,k,A,h;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),le(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new $e(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=Rn.decode(n.data),o=Ne(new $e(t.programId),new $e(t.id)).publicKey,s=await Ae.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return te(Y({},r),{id:new $e(t.id),programId:new $e(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:te(Y({},t.config),{id:new $e(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Ht).sub(t).mod(Ht)}};function de(i,e){return En(i.mul(e),64,256)}function ts(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function En(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<he||e>Pe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Pi.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ze)||e.lt(Ye))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=ts(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Ti;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(xi)),p=En(m.sub(new D(Bi)),64,128).toNumber(),d=En(m.add(new D(Ii)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?v.mulDivRoundingUp(a,Ie,Tn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Tn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var A,h,x,P;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),le(d.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[y,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:y,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ye.add(Ie):Ze.sub(Ie)),s){if(b.lt(Ye))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(Ze))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),y={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,A=n[d],h=0,x=!s&&A.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(ue)&&!y.sqrtPriceX64.eq(b);){if(h>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=y.sqrtPriceX64;let L=B.nextInitTick(A,y.tick,l,s,x),O=L||null,_=null;if(!(O!=null&&O.liquidityGross.gtn(0))){let X=Ae.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:j}=Z(e,t,k);_=j,A=n[k],O=B.firstInitializedTick(A,s)}P.tickNext=O.tick,P.initialized=O.liquidityGross.gtn(0),d!==k&&_&&(y.accounts.push(_),d=k),P.tickNext<he?P.tickNext=he:P.tickNext>Pe&&(P.tickNext=Pe),P.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(P.tickNext);let ee;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?ee=b:ee=P.sqrtPriceNextX64,[y.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(y.sqrtPriceX64,ee,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(P.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),y.amountCalculated=y.amountCalculated.sub(P.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(P.amountOut),y.amountCalculated=y.amountCalculated.add(P.amountIn.add(P.feeAmount))),y.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let X=O.liquidityNet;s&&(X=X.mul(Qe)),y.liquidity=U.addDelta(y.liquidity,X)}x=P.tickNext!=y.tick&&!s&&A.startTickIndex===P.tickNext,y.tick=s?P.tickNext-1:P.tickNext}else if(y.sqrtPriceX64!=P.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(y.sqrtPriceX64);x=X!=y.tick&&!s&&A.startTickIndex===X,y.tick=X}++h}try{let{nextStartIndex:P,isExist:L}=G.nextInitializedTickArray(y.tick,l,s,r,o);L&&d!==P&&(y.accounts.push(Z(e,t,P).publicKey),d=P)}catch{}return{amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,zt.sub(new D(o.toString())),zt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Qe).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Qe),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Qe))&&(s.amountOut=r.mul(Qe)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),zt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as at,ASSOCIATED_TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as At,Keypair as Vn}from"@solana/web3.js";import zi from"bn.js";import{PublicKey as as,Keypair as us}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cs}from"@solana/spl-token";import Yd from"bn.js";var ns=F([R("mint"),R("owner"),g("amount"),je("delegateOption"),R("delegate"),q("state"),je("isNativeOption"),g("isNative"),g("delegatedAmount"),je("closeAuthorityOption"),R("closeAuthority")]);function is(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function On(i,...e){if(!is(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Fn(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function Di(i,e){On(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var $t=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ve=(i,e)=>i<<32-e|i>>>e;var Ed=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function rs(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Wn(i){return typeof i=="string"&&(i=rs(i)),On(i),i}var Jt=class{clone(){return this._cloneInto()}},Od={}.toString;function _i(i){let e=n=>i().update(Wn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function os(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var qi=(i,e,t)=>i&e^~i&t,Gi=(i,e,t)=>i&e^i&t^e&t,en=class extends Jt{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=$t(this.buffer)}update(e){Fn(this);let{view:t,buffer:n,blockLen:r}=this;e=Wn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=$t(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Fn(this),Di(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;os(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=$t(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ss=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]),ot=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),st=new Uint32Array(64),vn=class extends en{constructor(){super(64,32,8,!1),this.A=ot[0]|0,this.B=ot[1]|0,this.C=ot[2]|0,this.D=ot[3]|0,this.E=ot[4]|0,this.F=ot[5]|0,this.G=ot[6]|0,this.H=ot[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)st[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=st[m-15],d=st[m-2],b=ve(p,7)^ve(p,18)^p>>>3,f=ve(d,17)^ve(d,19)^d>>>10;st[m]=f+st[m-7]+b+st[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=ve(a,6)^ve(a,11)^ve(a,25),d=l+p+qi(a,u,c)+ss[m]+st[m]|0,f=(ve(n,2)^ve(n,13)^ve(n,22))+Gi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){st.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ui=_i(()=>new vn);var $d=ae("Raydium_Util");function Xi({fromPublicKey:i,programId:e=cs}){let t=us.generate().publicKey.toBase58().slice(0,32);return{publicKey:ls(i,t,e),seed:t}}function ls(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Ui(n);return new as(r)}var Qi=ae("Raydium_Clmm"),De={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]},Et=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([E("sqrtPriceX64"),g("startTime")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let A=Buffer.from([...De.createPool,...k]);return new Ve({keys:y,programId:e,data:A})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Xi({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[At.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ln.span),space:Ln.span,programId:n})],{publicKey:f}=Ni(n,a,p,d),{publicKey:y}=In(n,f,p),{publicKey:k}=In(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,y,new T(o.programId||ge),d,k,new T(s.programId||ge),Ne(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[oe.CreateAccount,oe.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:y,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A,h,x,P,L,O,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),E("liquidity"),g("amountMaxA"),g("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:A,tickUpperIndex:h,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:L,amountMaxA:O,amountMaxB:_,withMetadata:ee==="create",baseFlag:!1,optionBaseFlag:0},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:A}=Z(p,d,y),{publicKey:h}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),O=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,h,x,L,k,A,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,s,a,u,c);return{signers:m,instructions:[O],instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:A,positionNftAccount:h,metadataAccount:x,personalPosition:P,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Vn.generate();m.push(_),b=_.publicKey}let f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:A}=Z(p,d,y),{publicKey:h}=Ge(n.wallet,b,ge),{publicKey:x}=Yt(b),{publicKey:P}=We(p,b),{publicKey:L}=mt(p,d,r,o),O=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,h,x,L,k,A,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,c,s,a,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ne(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:A,positionNftAccount:h,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[O],signers:m,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A,h,x,P,L,O,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),E("liquidity"),g("amountMaxA"),g("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:A,tickUpperIndex:h,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:new zi(0),amountMaxA:O==="MintA"?_:ee,amountMaxB:O==="MintA"?ee:_,withMetadata:L==="create",baseFlag:O==="MintA",optionBaseFlag:1},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new T((await l(1))[0]);else{let _=Vn.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=B.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=B.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(d,b,f),{publicKey:A}=Z(d,b,y),{publicKey:h}=Ge(n.wallet,m,ge),{publicKey:x}=Yt(m),{publicKey:P}=We(d,m),{publicKey:L}=mt(d,b,r,o),O=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,h,x,L,k,A,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,y,s,a,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Ne(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:A,positionNftAccount:h,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[O],signers:p,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=We(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[oe.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A){let h=F([E("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:y,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let O=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:O})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[k],instructionTypes:[oe.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=We(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0)],signers:[],instructionTypes:[oe.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A){let h=F([E("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),x=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(h.span);h.encode({liquidity:new zi(0),amountMaxA:f==="MintA"?y:k,amountMaxB:f==="MintA"?k:y,baseFlag:f==="MintA",optionBaseFlag:1},L);let O=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:O})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,A,h){let x=F([E("liquidity"),g("amountMinA"),g("amountMinB")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(ee=>[{pubkey:ee.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,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:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],O=Buffer.alloc(x.span);x.encode({liquidity:y,amountMinA:k,amountMinB:A},O);let _=Buffer.from([...De.decreaseLiquidity,...O]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=B.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=B.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Z(c,l,m),{publicKey:b}=Z(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:y}=We(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),A=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)A.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,r.wallet,f,y,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),A,o,s,a,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Ne(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:k},signers:[],instructions:h,instructionTypes:[oe.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k){let A=F([g("amount"),g("otherAmountThreshold"),E("sqrtPriceLimitX64"),Xe("isBaseInput")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(O=>({pubkey:O,isSigner:!1,isWritable:!0}))],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],P=Buffer.alloc(A.span);A.encode({amount:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},P);let L=Buffer.from([...De.swap,...P]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new T(e.programId),new T(e.id)],[p,d]=[new T(t.vault.A),new T(t.vault.B)],[b,f]=[new T(e.mintA.address),new T(e.mintB.address)],y=e.mintA.address===o.toString(),k=[this.swapInstruction(l,r.wallet,m,new T(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?p:d,y?d:p,y?b:f,y?f:b,c,n,s,a,u,!0,Ne(l,m).publicKey)];return{signers:[],instructions:k,instructionTypes:[oe.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([g("openTime"),g("endTime"),E("emissionsPerSecondX64")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:At.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:re(l),endTime:re(m),emissionsPerSecondX64:p},f);let y=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Li(o,s,r.mint).publicKey,u=Zt(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[oe.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),E("emissionsPerSecondX64"),g("openTime"),g("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,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(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:re(l),endTime:re(m)},f);let y=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Zt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[oe.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Qi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[oe.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[oe.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Mp from"bn.js";import{TOKEN_PROGRAM_ID as Zi,ASSOCIATED_TOKEN_PROGRAM_ID as kf}from"@solana/spl-token";import{PublicKey as Af,TransactionInstruction as ji,SystemProgram as Pf,SYSVAR_RENT_PUBKEY as Tf}from"@solana/web3.js";var Dn=F([q("instruction"),g("amountIn"),g("minAmountOut")]),_n=F([q("instruction"),g("maxAmountIn"),g("amountOut")]),uf=F([q("instruction"),q("nonce")]),ms=F([q("instruction"),q("nonce"),g("startTime")]),cf=F([g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalValue"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),E("swapBaseInAmount"),E("swapQuoteOutAmount"),g("swapBase2QuoteFee"),E("swapQuoteInAmount"),E("swapBaseOutAmount"),g("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),g("lpReserve"),$(g(),3,"padding")]),lf=F([g("accountType"),g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalsValue"),g("abortTradeFactor"),g("priceTickMultiplier"),g("priceTick"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),E("swapBaseInAmount"),E("swapQuoteOutAmount"),E("swapQuoteInAmount"),E("swapBaseOutAmount"),g("swapQuote2BaseFee"),g("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),$(g(),64,"padding")]),ds=F([q("instruction"),g("baseAmountIn"),g("quoteAmountIn"),g("fixedSide")]),ps=F([q("instruction"),g("amountIn")]);var mf=F([g("fee")]);import{PublicKey as fs}from"@solana/web3.js";var qn=new fs("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),bs=5e4,ys=F([g("x"),g("y"),g("price")]),yf=F([g("accountType"),g("status"),g("multiplier"),g("validDataCount"),$(ys,bs,"DataElement")]);var Yi=ae("Raydium_liquidity_instruction");function gs({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(Dn.span);Dn.encode({instruction:9,amountIn:re(t),minAmountOut:re(n)},s);let a=[V({pubkey:Zi,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:qn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new ji({programId:o.programId,keys:a,data:s})}function ws({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(_n.span);_n.encode({instruction:11,maxAmountIn:re(t),amountOut:re(n)},s);let a=[V({pubkey:Zi,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:qn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new ji({programId:o.programId,keys:a,data:s})}function Ji(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return gs(te(Y({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return ws(te(Y({},a),{maxAmountIn:r,amountOut:o}),t);Yi.logWithError("invalid params","params",i)}throw Yi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function _f(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),g("amountIn"),g("amountOut")]),d=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Hn({keys:d,programId:i,data:b})}function qf(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Hn({keys:m,programId:i,data:p})}function $i(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Gn)||a.mintB.programId.equals(Gn)?[{pubkey:Gn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ne(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function ks(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),g("amountIn"),g("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Xn,isSigner:!1,isWritable:!1}];f.push(...$i(a,c,o,t,n,d[0])),f.push(...$i(u,l,s,n,r,d[1]));let y=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},y),new Hn({keys:f,programId:i,data:y})}async function Gf({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ye.add(Ie):Ze.sub(Ie);return await Et.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,observationId:l.vault.A,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Un(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[Ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Un(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?oe.AmmV5SwapBaseIn:oe.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[ks(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Un(0)),n.remainingAccounts)],instructionTypes:[oe.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{Gf as makeSwapInstruction,_f as route1Instruction,qf as route2Instruction,ks as routeInstruction};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=instrument.mjs.map