@raydium-io/raydium-sdk-v2 0.1.46-alpha → 0.1.47-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 (112) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/api.js +1 -1
  3. package/lib/api/api.js.map +1 -1
  4. package/lib/api/api.mjs +1 -1
  5. package/lib/api/api.mjs.map +1 -1
  6. package/lib/api/index.d.ts +1 -1
  7. package/lib/api/index.js +1 -1
  8. package/lib/api/index.js.map +1 -1
  9. package/lib/api/index.mjs +1 -1
  10. package/lib/api/index.mjs.map +1 -1
  11. package/lib/api/type.d.ts +1 -1
  12. package/lib/api/type.js.map +1 -1
  13. package/lib/api/type.mjs.map +1 -1
  14. package/lib/api/url.d.ts +2 -0
  15. package/lib/api/url.js +1 -1
  16. package/lib/api/url.js.map +1 -1
  17. package/lib/api/url.mjs +1 -1
  18. package/lib/api/url.mjs.map +1 -1
  19. package/lib/{api-21687fe9.d.ts → api-115e55a8.d.ts} +23 -14
  20. package/lib/common/accountInfo.d.ts +1 -1
  21. package/lib/common/bignumber.d.ts +1 -1
  22. package/lib/common/fractionUtil.d.ts +1 -1
  23. package/lib/common/index.d.ts +1 -1
  24. package/lib/common/transfer.d.ts +1 -1
  25. package/lib/common/txTool/txTool.d.ts +1 -1
  26. package/lib/common/txTool/txUtils.d.ts +1 -1
  27. package/lib/common/utility.d.ts +1 -1
  28. package/lib/index.d.ts +3 -3
  29. package/lib/index.js +1 -1
  30. package/lib/index.js.map +1 -1
  31. package/lib/index.mjs +1 -1
  32. package/lib/index.mjs.map +1 -1
  33. package/lib/module/amount.d.ts +1 -1
  34. package/lib/module/fraction.d.ts +1 -1
  35. package/lib/module/index.d.ts +1 -1
  36. package/lib/module/percent.d.ts +1 -1
  37. package/lib/module/price.d.ts +1 -1
  38. package/lib/raydium/account/account.d.ts +3 -3
  39. package/lib/raydium/account/index.d.ts +1 -1
  40. package/lib/raydium/account/instruction.d.ts +1 -1
  41. package/lib/raydium/account/layout.d.ts +2 -2
  42. package/lib/raydium/account/types.d.ts +1 -1
  43. package/lib/raydium/account/util.d.ts +1 -1
  44. package/lib/raydium/clmm/clmm.d.ts +3 -3
  45. package/lib/raydium/clmm/index.d.ts +3 -3
  46. package/lib/raydium/clmm/index.js +1 -1
  47. package/lib/raydium/clmm/index.mjs +1 -1
  48. package/lib/raydium/clmm/instrument.d.ts +2 -2
  49. package/lib/raydium/clmm/layout.d.ts +9 -9
  50. package/lib/raydium/clmm/type.d.ts +2 -2
  51. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  52. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  53. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  54. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  55. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  56. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  57. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  58. package/lib/raydium/cpmm/index.d.ts +1 -1
  59. package/lib/raydium/cpmm/layout.d.ts +3 -3
  60. package/lib/raydium/cpmm/type.d.ts +1 -1
  61. package/lib/raydium/farm/config.d.ts +1 -1
  62. package/lib/raydium/farm/farm.d.ts +3 -3
  63. package/lib/raydium/farm/index.d.ts +1 -1
  64. package/lib/raydium/farm/instruction.d.ts +1 -1
  65. package/lib/raydium/farm/layout.d.ts +1 -1
  66. package/lib/raydium/farm/type.d.ts +1 -1
  67. package/lib/raydium/farm/util.d.ts +1 -1
  68. package/lib/raydium/ido/ido.d.ts +3 -3
  69. package/lib/raydium/ido/index.d.ts +3 -3
  70. package/lib/raydium/ido/instruction.d.ts +1 -1
  71. package/lib/raydium/ido/type.d.ts +1 -1
  72. package/lib/raydium/index.d.ts +3 -3
  73. package/lib/raydium/index.js +1 -1
  74. package/lib/raydium/index.js.map +1 -1
  75. package/lib/raydium/index.mjs +1 -1
  76. package/lib/raydium/index.mjs.map +1 -1
  77. package/lib/raydium/liquidity/index.d.ts +1 -1
  78. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  79. package/lib/raydium/liquidity/layout.d.ts +2 -2
  80. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  81. package/lib/raydium/liquidity/type.d.ts +1 -1
  82. package/lib/raydium/liquidity/utils.d.ts +1 -1
  83. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  84. package/lib/raydium/marketV2/index.d.ts +3 -3
  85. package/lib/raydium/moduleBase.d.ts +3 -3
  86. package/lib/raydium/raydium.d.ts +3 -3
  87. package/lib/raydium/raydium.js +1 -1
  88. package/lib/raydium/raydium.js.map +1 -1
  89. package/lib/raydium/raydium.mjs +1 -1
  90. package/lib/raydium/raydium.mjs.map +1 -1
  91. package/lib/raydium/serum/layout.d.ts +2 -2
  92. package/lib/raydium/token/constant.d.ts +1 -1
  93. package/lib/raydium/token/index.d.ts +1 -1
  94. package/lib/raydium/token/layout.d.ts +2 -2
  95. package/lib/raydium/token/token.d.ts +3 -3
  96. package/lib/raydium/token/token.js +1 -1
  97. package/lib/raydium/token/token.mjs +1 -1
  98. package/lib/raydium/token/type.d.ts +1 -1
  99. package/lib/raydium/token/utils.d.ts +1 -1
  100. package/lib/raydium/tradeV2/index.d.ts +2 -2
  101. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  102. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  103. package/lib/raydium/tradeV2/type.d.ts +2 -2
  104. package/lib/raydium/type.d.ts +1 -1
  105. package/lib/raydium/utils1216/index.d.ts +3 -3
  106. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  107. package/lib/{raydium-92c594cc.d.ts → raydium-ca20dc75.d.ts} +4 -4
  108. package/lib/{type-af6f470e.d.ts → type-276fa57e.d.ts} +1 -1
  109. package/package.json +1 -1
  110. package/src/api/api.ts +6 -1
  111. package/src/api/type.ts +9 -0
  112. package/src/api/url.ts +1 -0
@@ -1,3 +1,3 @@
1
- var kr=Object.defineProperty,xr=Object.defineProperties;var Br=Object.getOwnPropertyDescriptors;var zt=Object.getOwnPropertySymbols;var li=Object.prototype.hasOwnProperty,mi=Object.prototype.propertyIsEnumerable;var ui=(i,e,t)=>e in i?kr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,K=(i,e)=>{for(var t in e||(e={}))li.call(e,t)&&ui(i,t,e[t]);if(zt)for(var t of zt(e))mi.call(e,t)&&ui(i,t,e[t]);return i},G=(i,e)=>xr(i,Br(e));var ht=(i,e)=>{var t={};for(var n in i)li.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&zt)for(var n of zt(i))e.indexOf(n)<0&&mi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as W}from"@solana/web3.js";var At=9e15,it=1e9,Pn="0123456789abcdef",Zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Tn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-At,maxE:At,crypto:!1},gi,Ze,V=!0,Jt="[DecimalError] ",nt=Jt+"Invalid argument: ",bi=Jt+"Precision limit exceeded",yi=Jt+"crypto unavailable",wi="[object Decimal]",ke=Math.floor,de=Math.pow,Ir=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Sr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Cr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,hi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,L=7,Kr=9007199254740991,Nr=Zt.length-1,kn=Yt.length-1,T={toStringTag:wi};T.absoluteValue=T.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),N(i)};T.ceil=function(){return N(new this.constructor(this),this.e+1,2)};T.clampedTo=T.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)};T.comparedTo=T.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<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]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};T.cosine=T.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())+L,n.rounding=1,t=Rr(n,xi(n,t)),n.precision=i,n.rounding=e,N(Ze==2||Ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,m=this,l=m.constructor;if(!m.isFinite()||m.isZero())return new l(m);for(V=!1,o=m.s*de(m.s*m,1/3),!o||Math.abs(o)==1/0?(t=we(m.d),i=m.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=de(t,1/3),i=ke((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 l(t),n.s=m.s):n=new l(o.toString()),s=(i=l.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(m),n=$(u.plus(m).times(a),u.plus(c),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(N(a,i+1,0),a.times(a).times(a).eq(m))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(N(n,i+1,1),e=!n.times(n).times(n).eq(m));break}return V=!0,N(n,i,l.rounding,e)};T.decimalPlaces=T.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-ke(this.e/L))*L,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(i){return $(this,new this.constructor(i))};T.dividedToIntegerBy=T.divToInt=function(i){var e=this,t=e.constructor;return N($(e,new t(i),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(i){return this.cmp(i)===0};T.floor=function(){return N(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(i){return this.cmp(i)>0};T.greaterThanOrEqualTo=T.gte=function(i){var e=this.cmp(i);return e==1||e===0};T.hyperbolicCosine=T.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/en(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Pt(s,1,o.times(e),new s(1),!0);for(var c,u=i,m=new s(8);u--;)c=o.times(o),o=a.minus(c.times(m.minus(c.times(m))));return N(o,s.precision=t,s.rounding=n,!0)};T.hyperbolicSine=T.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=Pt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/en(5,i)),r=Pt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,N(r,e,t,!0)};T.hyperbolicTangent=T.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,$(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};T.inverseCosine=T.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()?Fe(t,r,o):new t(0):new t(NaN):e.isZero()?Fe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Fe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};T.inverseHyperbolicCosine=T.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,V=!1,t=t.times(t).minus(1).sqrt().plus(t),V=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.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,V=!1,t=t.times(t).plus(1).sqrt().plus(t),V=!0,n.precision=i,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.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?N(new o(r),i,e,!0):(o.precision=t=n-r.e,r=$(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)};T.inverseSine=T.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=Fe(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)))};T.inverseTangent=T.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,m=u.constructor,l=m.precision,d=m.rounding;if(u.isFinite()){if(u.isZero())return new m(u);if(u.abs().eq(1)&&l+4<=kn)return s=Fe(m,l+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new m(NaN);if(l+4<=kn)return s=Fe(m,l+4,d).times(.5),s.s=u.s,s}for(m.precision=a=l+10,m.rounding=1,t=Math.min(28,a/L+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(V=!1,e=Math.ceil(a/L),n=1,c=u.times(u),s=new m(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),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)),V=!0,N(s,m.precision=l,m.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&ke(this.e/L)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(i){return this.cmp(i)<0};T.lessThanOrEqualTo=T.lte=function(i){return this.cmp(i)<1};T.logarithm=T.log=function(i){var e,t,n,r,o,s,a,c,u=this,m=u.constructor,l=m.precision,d=m.rounding,p=5;if(i==null)i=new m(10),e=!0;else{if(i=new m(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new m(NaN);e=i.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new m(t&&!t[0]?-1/0:u.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(V=!1,a=l+p,s=tt(u,a),n=e?Qt(m,a+10):tt(i,a),c=$(s,n,a,1),It(c.d,r=l,d))do if(a+=10,s=tt(u,a),n=e?Qt(m,a+10):tt(i,a),c=$(s,n,a,1),!o){+we(c.d).slice(r+1,r+15)+1==1e14&&(c=N(c,l+1,0));break}while(It(c.d,r+=10,d));return V=!0,N(c,l,d)};T.minus=T.sub=function(i){var e,t,n,r,o,s,a,c,u,m,l,d,p=this,g=p.constructor;if(i=new g(i),!p.d||!i.d)return!p.s||!i.s?i=new g(NaN):p.d?i.s=-i.s:i=new g(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(u=p.d,d=i.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])i.s=-i.s;else if(u[0])i=new g(p);else return new g(c===3?-0:0);return V?N(i,a,c):i}if(t=ke(i.e/L),m=ke(p.e/L),u=u.slice(),o=m-t,o){for(l=o<0,l?(e=u,o=-o,s=d.length):(e=d,t=m,s=u.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,l=n<s,l&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){l=u[n]<d[n];break}o=0}for(l&&(e=u,u=d,d=e,i.s=-i.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(r=n;r&&u[--r]===0;)u[r]=Oe-1;--u[r],u[n]+=Oe}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=$t(u,t),V?N(i,a,c):i):new g(c===3?-0:0)};T.modulo=T.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]?N(new n(t),n.precision,n.rounding):(V=!1,n.modulo==9?(e=$(t,i.abs(),0,3,1),e.s*=i.s):e=$(t,i,0,n.modulo,1),e=e.times(i),V=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return xn(this)};T.naturalLogarithm=T.ln=function(){return tt(this)};T.negated=T.neg=function(){var i=new this.constructor(this);return i.s=-i.s,N(i)};T.plus=T.add=function(i){var e,t,n,r,o,s,a,c,u,m,l=this,d=l.constructor;if(i=new d(i),!l.d||!i.d)return!l.s||!i.s?i=new d(NaN):l.d||(i=new d(i.d||l.s===i.s?l:NaN)),i;if(l.s!=i.s)return i.s=-i.s,l.minus(i);if(u=l.d,m=i.d,a=d.precision,c=d.rounding,!u[0]||!m[0])return m[0]||(i=new d(l)),V?N(i,a,c):i;if(o=ke(l.e/L),n=ke(i.e/L),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=m.length):(t=m,n=o,s=u.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=m.length,s-r<0&&(r=s,t=m,m=u,u=t),e=0;r;)e=(u[--r]=u[r]+m[r]+e)/Oe|0,u[r]%=Oe;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=$t(u,n),V?N(i,a,c):i};T.precision=T.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=Ai(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var i=this,e=i.constructor;return N(new e(i),i.e+1,e.rounding)};T.sine=T.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())+L,n.rounding=1,t=Mr(n,xi(n,t)),n.precision=i,n.rounding=e,N(Ze>2?t.neg():t,i,e,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,m=s.constructor;if(u!==1||!a||!a[0])return new m(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(V=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=we(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ke((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new m(e)):n=new m(u.toString()),t=(c=m.precision)+3;;)if(o=n,n=o.plus($(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(N(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(N(n,c+1,1),i=!n.times(n).eq(s));break}return V=!0,N(n,c,m.rounding,i)};T.tangent=T.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=$(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,N(Ze==2||Ze==4?t.neg():t,i,e,!0)):new n(NaN)};T.times=T.mul=function(i){var e,t,n,r,o,s,a,c,u,m=this,l=m.constructor,d=m.d,p=(i=new l(i)).d;if(i.s*=m.s,!d||!d[0]||!p||!p[0])return new l(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=ke(m.e/L)+ke(i.e/L),c=d.length,u=p.length,c<u&&(o=d,d=p,p=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+p[n]*d[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=$t(o,t),V?N(i,l.precision,l.rounding):i};T.toBinary=function(i,e){return In(this,2,i,e)};T.toDecimalPlaces=T.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ie(i,0,it),e===void 0?e=n.rounding:Ie(e,0,8),N(t,i+t.e+1,e))};T.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,!0):(Ie(i,0,it),e===void 0?e=r.rounding:Ie(e,0,8),n=N(new r(n),i+1,e),t=Ue(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Ue(r):(Ie(i,0,it),e===void 0?e=o.rounding:Ie(e,0,8),n=N(new o(r),i+r.e+1,e),t=Ue(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};T.toFraction=function(i){var e,t,n,r,o,s,a,c,u,m,l,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=Ai(g)-p.e-1,s=o%L,e.d[0]=de(10,s<0?L+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(nt+a);i=a.gt(e)?o>0?e:u:a}for(V=!1,a=new f(we(g)),m=f.precision,f.precision=o=g.length*L*2;l=$(a,e,0,1,1),r=t.plus(l.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(l.times(r)),c=r,r=e,e=a.minus(l.times(r)),a=r;return r=$(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=p.s,d=$(u,n,o,1).minus(p).abs().cmp($(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=m,V=!0,d};T.toHexadecimal=T.toHex=function(i,e){return In(this,16,i,e)};T.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:Ie(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]?(V=!1,t=$(t,i,0,e,1).times(i),V=!0,N(t)):(i.s=t.s,t=i),t};T.toNumber=function(){return+this};T.toOctal=function(i,e){return In(this,8,i,e)};T.toPower=T.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(de(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return N(a,n,o);if(e=ke(i.e/L),e>=i.d.length-1&&(t=u<0?-u:u)<=Kr)return r=Pi(c,a,t,n),i.s<0?new c(1).div(r):N(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(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=de(+a,u),e=t==0||!isFinite(t)?ke(u*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(V=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=xn(i.times(tt(a,n+t)),n),r.d&&(r=N(r,n+5,1),It(r.d,n,o)&&(e=n+10,r=N(xn(i.times(tt(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=N(r,n+1,0)))),r.s=s,V=!0,c.rounding=o,N(r,n,o))};T.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ie(i,1,it),e===void 0?e=r.rounding:Ie(e,0,8),n=N(new r(n),i,e),t=Ue(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ie(i,1,it),e===void 0?e=n.rounding:Ie(e,0,8)),N(new n(t),i,e)};T.toString=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return N(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function we(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=L-n.length,t&&(o+=et(t)),o+=n;s=i[e],n=s+"",t=L-n.length,t&&(o+=et(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(i,e,t){if(i!==~~i||i<e||i>t)throw Error(nt+i)}function It(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=L,r=0):(r=Math.ceil((e+1)/L),e%=L),o=de(10,L-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)==de(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)==de(10,e-3)-1,s}function jt(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]+=Pn.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 Rr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/en(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Pt(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 $=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}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,c){var u,m,l,d,p,g,f,y,b,h,w,A,k,P,I,x,O,E,R,Z,ne=n.constructor,le=n.s==r.s?1:-1,ie=n.d,Q=r.d;if(!ie||!ie[0]||!Q||!Q[0])return new ne(!n.s||!r.s||(ie?Q&&ie[0]==Q[0]:!Q)?NaN:ie&&ie[0]==0||!Q?le*0:le/0);for(c?(p=1,m=n.e-r.e):(c=Oe,p=L,m=ke(n.e/p)-ke(r.e/p)),R=Q.length,O=ie.length,b=new ne(le),h=b.d=[],l=0;Q[l]==(ie[l]||0);l++);if(Q[l]>(ie[l]||0)&&m--,o==null?(P=o=ne.precision,s=ne.rounding):a?P=o+(n.e-r.e)+1:P=o,P<0)h.push(1),g=!0;else{if(P=P/p+2|0,l=0,R==1){for(d=0,Q=Q[0],P++;(l<O||d)&&P--;l++)I=d*c+(ie[l]||0),h[l]=I/Q|0,d=I%Q|0;g=d||l<O}else{for(d=c/(Q[0]+1)|0,d>1&&(Q=i(Q,d,c),ie=i(ie,d,c),R=Q.length,O=ie.length),x=R,w=ie.slice(0,R),A=w.length;A<R;)w[A++]=0;Z=Q.slice(),Z.unshift(0),E=Q[0],Q[1]>=c/2&&++E;do d=0,u=e(Q,w,R,A),u<0?(k=w[0],R!=A&&(k=k*c+(w[1]||0)),d=k/E|0,d>1?(d>=c&&(d=c-1),f=i(Q,d,c),y=f.length,A=w.length,u=e(f,w,y,A),u==1&&(d--,t(f,R<y?Z:Q,y,c))):(d==0&&(u=d=1),f=Q.slice()),y=f.length,y<A&&f.unshift(0),t(w,f,A,c),u==-1&&(A=w.length,u=e(Q,w,R,A),u<1&&(d++,t(w,R<A?Z:Q,A,c))),A=w.length):u===0&&(d++,w=[0]),h[l++]=d,u&&w[0]?w[A++]=ie[x]||0:(w=[ie[x]],A=1);while((x++<O||w[0]!==void 0)&&P--);g=w[0]!==void 0}h[0]||h.shift()}if(p==1)b.e=m,gi=g;else{for(l=1,d=h[0];d>=10;d/=10)l++;b.e=l+m*p-1,N(b,a?o+b.e+1:o,s,g)}return b}}();function N(i,e,t,n){var r,o,s,a,c,u,m,l,d,p=i.constructor;e:if(e!=null){if(l=i.d,!l)return i;for(r=1,a=l[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=L,s=e,m=l[d=0],c=m/de(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/L),a=l.length,d>=a)if(n){for(;a++<=d;)l.push(0);m=c=0,r=1,o%=L,s=o-L+1}else break e;else{for(m=a=l[d],r=1;a>=10;a/=10)r++;o%=L,s=o-L+r,c=s<0?0:m/de(10,r-s-1)%10|0}if(n=n||e<0||l[d+1]!==void 0||(s<0?m:m%de(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?m/de(10,r-s):0:l[d-1])%10&1||t==(i.s<0?8:7)),e<1||!l[0])return l.length=0,u?(e-=i.e+1,l[0]=de(10,(L-e%L)%L),i.e=-e||0):l[0]=i.e=0,i;if(o==0?(l.length=d,a=1,d--):(l.length=d+1,a=de(10,L-o),l[d]=s>0?(m/de(10,r-s)%de(10,s)|0)*a:0),u)for(;;)if(d==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,l[0]==Oe&&(l[0]=1));break}else{if(l[d]+=a,l[d]!=Oe)break;l[d--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return V&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function Ue(i,e,t){if(!i.isFinite())return ki(i);var n,r=i.e,o=we(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 $t(i,e){var t=i[0];for(e*=L;t>=10;t/=10)e++;return e}function Qt(i,e,t){if(e>Nr)throw V=!0,t&&(i.precision=t),Error(bi);return N(new i(Zt),e,1,!0)}function Fe(i,e,t){if(e>kn)throw Error(bi);return N(new i(Yt),e,t,!0)}function Ai(i){var e=i.length-1,t=e*L+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 Pi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/L+4);for(V=!1;;){if(t%2&&(o=o.times(e),pi(o.d,s)&&(r=!0)),t=ke(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),pi(e.d,s)}return V=!0,o}function di(i){return i.d[i.d.length-1]&1}function Ti(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 xn(i,e){var t,n,r,o,s,a,c,u=0,m=0,l=0,d=i.constructor,p=d.rounding,g=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(V=!1,c=g):c=e,a=new d(.03125);i.e>-2;)i=i.times(a),l+=5;for(n=Math.log(de(2,l))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=N(o.times(i),c,1),t=t.times(++m),a=s.plus($(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(r=l;r--;)s=N(s.times(s),c,1);if(e==null)if(u<3&&It(s.d,c-n,p,u))d.precision=c+=10,t=o=a=new d(1),m=0,u++;else return N(s,d.precision=g,p,V=!0);else return d.precision=g,s}s=a}}function tt(i,e){var t,n,r,o,s,a,c,u,m,l,d,p=1,g=10,f=i,y=f.d,b=f.constructor,h=b.rounding,w=b.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(V=!1,m=w):m=e,b.precision=m+=g,t=we(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=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return u=Qt(b,m+2,w).times(o+""),f=tt(new b(n+"."+t.slice(1)),m-g).plus(u),b.precision=w,e==null?N(f,w,h,V=!0):f;for(l=f,c=s=f=$(f.minus(1),f.plus(1),m,1),d=N(f.times(f),m,1),r=3;;){if(s=N(s.times(d),m,1),u=c.plus($(s,new b(r),m,1)),we(u.d).slice(0,m)===we(c.d).slice(0,m))if(c=c.times(2),o!==0&&(c=c.plus(Qt(b,m+2,w).times(o+""))),c=$(c,new b(p),m,1),e==null)if(It(c.d,m-g,h,a))b.precision=m+=g,u=s=f=$(l.minus(1),l.plus(1),m,1),d=N(f.times(f),m,1),r=a=1;else return N(c,b.precision=w,h,V=!0);else return b.precision=w,c;c=u,r+=2}}function ki(i){return String(i.s*i.s/0)}function Bn(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)%L,t<0&&(n+=L),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=L;n<r;)i.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),V&&(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 Lr(i,e){var t,n,r,o,s,a,c,u,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),hi.test(e))return Bn(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(Ir.test(e))t=2;else if(Cr.test(e))t=8;else throw Error(nt+e);for(o=e.search(/p/i),o>0?(c=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Pi(n,new n(t),o,o*2)),u=jt(e,t,Oe),m=u.length-1,o=m;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=$t(u,m),i.d=u,V=!1,s&&(i=$(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?de(2,c):St.pow(2,c))),V=!0,i)}function Mr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Pt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/en(5,t)),e=Pt(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 Pt(i,e,t,n,r){var o,s,a,c,u=1,m=i.precision,l=Math.ceil(m/L);for(V=!1,c=t.times(t),a=new i(n);;){if(s=$(a.times(c),new i(e++*e++),m,1),a=r?n.plus(s):n.minus(s),n=$(s.times(c),new i(e++*e++),m,1),s=a.plus(n),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return V=!0,s.d.length=l+1,s}function en(i,e){for(var t=i;--e;)t*=i;return t}function xi(i,e){var t,n=e.s<0,r=Fe(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=di(t)?n?2:3:n?4:1,e;Ze=di(t)?n?1:4:n?3:2}return e.minus(r).abs()}function In(i,e,t,n){var r,o,s,a,c,u,m,l,d,p=i.constructor,g=t!==void 0;if(g?(Ie(t,1,it),n===void 0?n=p.rounding:Ie(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())m=ki(i);else{for(m=Ue(i),s=m.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(m=m.replace(".",""),d=new p(1),d.e=m.length-s,d.d=jt(Ue(d),10,r),d.e=d.d.length),l=jt(m,10,r),o=c=l.length;l[--c]==0;)l.pop();if(!l[0])m=g?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=l,i.e=o,i=$(i,d,t,n,0,r),l=i.d,o=i.e,u=gi),s=l[t],a=r/2,u=u||l[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&l[t-1]&1||n===(i.s<0?8:7)),l.length=t,u)for(;++l[--t]>r-1;)l[t]=0,t||(++o,l.unshift(1));for(c=l.length;!l[c-1];--c);for(s=0,m="";s<c;s++)m+=Pn.charAt(l[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)m+="0";for(l=jt(m,r,e),c=l.length;!l[c-1];--c);for(s=1,m="1.";s<c;s++)m+=Pn.charAt(l[s])}else m=m.charAt(0)+"."+m.slice(1);m=m+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)m="0"+m;m="0."+m}else if(++o>c)for(o-=c;o--;)m+="0";else o<c&&(m=m.slice(0,o)+"."+m.slice(o))}m=(e==16?"0x":e==2?"0b":e==8?"0o":"")+m}return i.s<0?"-"+m:m}function pi(i,e){if(i.length>e)return i.length=e,!0}function Fr(i){return new this(i).abs()}function Or(i){return new this(i).acos()}function Er(i){return new this(i).acosh()}function Dr(i,e){return new this(i).plus(e)}function _r(i){return new this(i).asin()}function vr(i){return new this(i).asinh()}function Vr(i){return new this(i).atan()}function qr(i){return new this(i).atanh()}function Wr(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=Fe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Fe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Fe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan($(i,e,o,1)),e=Fe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan($(i,e,o,1)),t}function Gr(i){return new this(i).cbrt()}function Ur(i){return N(i=new this(i),i.e+1,2)}function Xr(i,e,t){return new this(i).clamp(e,t)}function Hr(i){if(!i||typeof i!="object")throw Error(Jt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-At,0,"toExpPos",0,At,"maxE",0,At,"minE",-At,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Tn[t]),(n=i[t])!==void 0)if(ke(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]=Tn[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(yi);else this[t]=!1;else throw Error(nt+t+": "+n);return this}function zr(i){return new this(i).cos()}function jr(i){return new this(i).cosh()}function Bi(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,fi(o)){u.s=o.s,V?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;V?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Bn(u,o.toString())}else if(c!=="string")throw Error(nt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),hi.test(o)?Bn(u,o):Lr(u,o)}if(r.prototype=T,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=Hr,r.clone=Bi,r.isDecimal=fi,r.abs=Fr,r.acos=Or,r.acosh=Er,r.add=Dr,r.asin=_r,r.asinh=vr,r.atan=Vr,r.atanh=qr,r.atan2=Wr,r.cbrt=Gr,r.ceil=Ur,r.clamp=Xr,r.cos=zr,r.cosh=jr,r.div=Zr,r.exp=Yr,r.floor=Qr,r.hypot=Jr,r.ln=$r,r.log=eo,r.log10=no,r.log2=to,r.max=io,r.min=ro,r.mod=oo,r.mul=so,r.pow=ao,r.random=co,r.round=uo,r.sign=lo,r.sin=mo,r.sinh=po,r.sqrt=fo,r.sub=go,r.sum=bo,r.tan=yo,r.tanh=wo,r.trunc=ho,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 Zr(i,e){return new this(i).div(e)}function Yr(i){return new this(i).exp()}function Qr(i){return N(i=new this(i),i.e+1,3)}function Jr(){var i,e,t=new this(0);for(V=!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 V=!0,new this(1/0);t=e}return V=!0,t.sqrt()}function fi(i){return i instanceof St||i&&i.toStringTag===wi||!1}function $r(i){return new this(i).ln()}function eo(i,e){return new this(i).log(e)}function to(i){return new this(i).log(2)}function no(i){return new this(i).log(10)}function io(){return Ti(this,arguments,"lt")}function ro(){return Ti(this,arguments,"gt")}function oo(i,e){return new this(i).mod(e)}function so(i,e){return new this(i).mul(e)}function ao(i,e){return new this(i).pow(e)}function co(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ie(i,1,it),n=Math.ceil(i/L),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(yi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=L,n&&i&&(r=de(10,L-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-=L)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function uo(i){return N(i=new this(i),i.e+1,this.rounding)}function lo(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function mo(i){return new this(i).sin()}function po(i){return new this(i).sinh()}function fo(i){return new this(i).sqrt()}function go(i,e){return new this(i).sub(e)}function bo(){var i=0,e=arguments,t=new this(e[i]);for(V=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return V=!0,N(t,this.precision,this.rounding)}function yo(i){return new this(i).tan()}function wo(i){return new this(i).tanh()}function ho(i){return N(i=new this(i),i.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var St=T.constructor=Bi(Tn);Zt=new St(Zt);Yt=new St(Yt);var S=St;import{get as Ii,set as Ao}from"lodash";var Sn=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 Date.now().toString()}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}},Si={},Po={};function pe(i){let e=Ii(Si,i);if(!e){let t=Ii(Po,i);e=new Sn({name:i,logLevel:t}),Ao(Si,i,e)}return e}import{PublicKey as Cc}from"@solana/web3.js";import Nc from"bn.js";import Oo from"big.js";import sn from"bn.js";import Se from"bn.js";import{PublicKey as Rn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as To}from"@solana/spl-token";import{PublicKey as re,SystemProgram as Ci,SYSVAR_RENT_PUBKEY as ko}from"@solana/web3.js";function Cn({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ws=[Cn({pubkey:To,isWritable:!1}),Cn({pubkey:Ci.programId,isWritable:!1}),Cn({pubkey:ko,isWritable:!1})];function Kn({publicKey:i,transformSol:e}){let t=Ki(i.toString());if(t instanceof re)return e&&t.equals(Ct)?ee:t;if(e&&t.toString()===Ct.toBase58())return ee;if(typeof t=="string"){if(t===re.default.toBase58())return re.default;try{return new re(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ki(i){try{return new re(i)}catch{return i}}var tn=new re("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Gs=new re("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Kt=new re("SysvarRent111111111111111111111111111111111"),Us=new re("SysvarC1ock11111111111111111111111111111111"),Tt=new re("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Xs=new re("Sysvar1nstructions1111111111111111111111111"),Hs=Ci.programId,zs=new re("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),js=new re("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Zs=new re("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ys=new re("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Qs=new re("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Js=new re("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$s=new re("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ea=new re("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ta=new re("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),na=new re("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ia=new re("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ee=new re("So11111111111111111111111111111111111111112"),Ct=re.default;function mt(i){return Kn({publicKey:i,transformSol:!0})}import{PublicKey as xo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ni}from"@solana/spl-token";var Nn={chainId:101,address:xo.default.toBase58(),programId:Ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ni.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Ln=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Ct.toBase58()||e instanceof Rn&&Ct.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new Rn(rt.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?Rn.default:Kn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Xe=Ln;Xe.WSOL=new Ln(G(K({},rt),{mint:rt.address}));import rn from"big.js";import So from"bn.js";import Co from"decimal.js-light";import Bo from"toformat";var Io=Bo,Nt=Io;var nn=pe("module/fraction"),Mn=Nt(rn),Rt=Nt(Co),Ko={[0]:Rt.ROUND_DOWN,[1]:Rt.ROUND_HALF_UP,[2]:Rt.ROUND_UP},No={[0]:rn.roundDown,[1]:rn.roundHalfUp,[2]:rn.roundUp},Y=class{constructor(e,t=new So(1)){this.numerator=he(e),this.denominator=he(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||nn.logWithError(`${e} is not an integer.`),e<=0&&nn.logWithError(`${e} is not positive.`),Rt.set({precision:e+1,rounding:Ko[n]});let r=new Rt(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)||nn.logWithError(`${e} is not an integer.`),e<0&&nn.logWithError(`${e} is negative.`),Mn.DP=e,Mn.RM=No[n]||1,new Mn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Lo=pe("Raydium_price"),Ee=class extends Y{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new Y(Fn(n.decimals),Fn(r.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ee({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Lo.logWithError("mul token not equals");let n=super.mul(t);return new Ee({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 On=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},on=On;on.SOL=new On(Nn);import Mo from"bn.js";var Ri=new Y(new Mo(100)),dt=class extends Y{toSignificant(e=5,t,n){return this.mul(Ri).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ri).toFixed(e,t,n)}};var Fo=new Se(0),$a=new Se(1),ec=new Se(2),tc=new Se(3),nc=new Se(5),En=new Se(10),ic=new Se(100),rc=new Se(1e3),oc=new Se(1e4),Li=9007199254740991;function he(i){let e=pe("Raydium_parseBigNumberish");if(i instanceof Se)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Se(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Li||i<=-Li)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Se(String(i))):typeof i=="bigint"?new Se(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Se(0))}function Fn(i){return En.pow(he(i))}var Eo=pe("Raydium_amount"),Mi=Nt(Oo);function Do(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")):Eo.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Ae=class extends Y{constructor(t,n,r=!0,o){let s=new sn(0),a=En.pow(new sn(t.decimals));if(r)s=he(n);else{let c=new sn(0),u=new sn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,l]=Do(n.toString(),t.decimals);c=he(m),u=he(l)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=pe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 Mi.DP=this.token.decimals,new Mi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Ft,sendAndConfirmTransaction as Vn,Transaction as Ot,TransactionMessage as Et,VersionedTransaction as Dt}from"@solana/web3.js";import jo from"axios";var me={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 _o,ComputeBudgetProgram as Fi,Transaction as Ei,TransactionMessage as vo,Keypair as Di,VersionedTransaction as _i}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";var Oi=pe("Raydium_txUtil"),vi=1644;function an(i){let e=[],t=[];return i.microLamports&&(e.push(Fi.setComputeUnitPrice({microLamports:i.microLamports})),t.push(me.SetComputeUnitPrice)),i.units&&(e.push(Fi.setComputeUnitLimit({units:i.units})),t.push(me.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function kt(i,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:r.blockhash)||(await i.getRecentBlockhash(t)).blockhash}catch{return(await i.getRecentBlockhash(t)).blockhash}}function qo(i,e){i.length<1&&Oi.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Oi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ei;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<vi}catch{return!1}}function Ce(i,e){let[t,n]=_o.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Lt({instructions:i,payer:e,signers:t}){return qo(i,[e,...t])}function Mt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Di.generate().publicKey.toString()}){let o=new vo({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new _i(o).serialize()).toString("base64").length<vi}catch{return!1}}var Wo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function pt(i){let e=[];return i.forEach(t=>{t instanceof Ei&&(t.recentBlockhash||(t.recentBlockhash=Vo.toBase58()),t.feePayer||(t.feePayer=Di.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof _i&&(n=Wo(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Wi,AddressLookupTableAccount as cn}from"@solana/web3.js";import{PublicKey as Vi}from"@solana/web3.js";import{MINT_SIZE as Go,TOKEN_PROGRAM_ID as Uo,getTransferFeeConfig as Xo,unpackMint as Ho}from"@solana/spl-token";var Dn=pe("Raydium_accountInfo_util");async function Ye(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=K({batchRequest:!1},t),s=_n(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(l=>{let d=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=_n(c,10);a=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(d=>{if(d){let{data:p,executable:g,lamports:f,owner:y,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&Dn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new Vi(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&Dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function ot(i,e,t){let n=await Ye(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>G(K({},r),{accountInfo:n[o]}))}async function qi({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await ot(i,e.map(c=>({pubkey:mt(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Go){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Ho(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=G(K({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Uo,feeConfig:(a=Xo(u))!=null?a:void 0})}return r[Vi.default.toBase58()]=r[ee.toBase58()],r}async function vn({connection:i,address:e}){let t=await Ye(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Wi(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new cn({key:s,state:cn.deserialize(o.data)});n[s.toString()]=a,un[s.toString()]=a}return n}var un={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new cn({key:new Wi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:cn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var ln=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.api=e.api}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await jo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=an(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Ft.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(K({},t||{})):this.build(t)}build(e){var n;let t=new Ot;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var u;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=r||{},c=o!=null?o:await kt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),pt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await Vn(this.connection,t,this.signers.find(l=>l.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(m=>m.transaction.instructions.length>0),s=[r,...o.map(m=>m.transaction)],a=[this.signers,...o.map(m=>m.signers)],c=[...this.instructionTypes,...o.map(m=>m.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async m=>{var y;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{},f=p!=null?p:await kt(this.connection,this.blockhashCommitment);if((y=this.owner)!=null&&y.isKeyPair){if(l){let b=[];for(let h of s){let w=await Vn(this.connection,h,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async b=>(b.recentBlockhash=f,await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((w,A)=>(w.recentBlockhash=f,a[A].length&&w.sign(...a[A]),w));pt(b);let h=await this.signAllTransactions(b);if(l){let w=0,A=[],k=async()=>{if(!h[w])return;let P=await this.connection.sendRawTransaction(h[w].serialize(),{skipPreflight:g});A.push({txId:P,status:"sent",signedTx:h[w]}),d==null||d([...A]),w++,this.connection.onSignature(P,I=>{let x=A.findIndex(O=>O.txId===P);x>-1&&(A[x].status=I.err?"error":"success"),d==null||d([...A]),I.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:h}}else{let w=[];for(let A=0;A<h.length;A+=1){let k=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:g});w.push(k)}return{txIds:w,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=ht(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=K(K({},this.cluster==="devnet"?{}:un),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let g of a)s[g]===void 0&&c.push(new Ft(g));let u=await vn({connection:this.connection,address:c});for(let[g,f]of Object.entries(u))s[g]=f;let m=new Et({payerKey:this.feePayer,recentBlockhash:r?Ft.default.toBase58():await kt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let l=new Dt(m);return l.sign(this.signers),{builder:this,transaction:l,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var h;let{recentBlockHash:f,skipPreflight:y=!0,sendAndConfirm:b}=g||{};if(f&&(l.message.recentBlockhash=f),pt([l]),(h=this.owner)!=null&&h.isKeyPair){let w=await this.connection.sendTransaction(l,{skipPreflight:y});if(b){let{lastValidBlockHeight:A,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:A,signature:w},"confirmed")}return{txId:w,signedTx:l}}if(this.signAllTransactions){let w=await this.signAllTransactions([l]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:y}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(m=>m.builder.instructions.length>0),s=[r,...o.map(m=>m.transaction)],a=[this.signers,...o.map(m=>m.signers)],c=[...this.instructionTypes,...o.map(m=>m.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(m,l)=>{m.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async m=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),pt(s),(f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let b of s){let h=await this.connection.sendTransaction(b,{skipPreflight:g}),{lastValidBlockHeight:w,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:w,signature:h},"confirmed"),y.push(h)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(l){let b=0,h=[],w=async()=>{if(!y[b])return;let A=await this.connection.sendTransaction(y[b],{skipPreflight:g});h.push({txId:A,status:"sent",signedTx:y[b]}),d==null||d([...h]),b++,this.connection.onSignature(A,k=>{let P=h.findIndex(I=>I.txId===A);P>-1&&(h[P].status=k.err?"error":"success"),d==null||d([...h]),k.err||w()},"processed"),this.connection.getSignatureStatus(A)};return w(),{txIds:[],signedTxs:y}}else{let b=[];for(let h=0;h<y.length;h+=1){let w=await this.connection.sendTransaction(y[h],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var m;let u=e||{},{computeBudgetConfig:t}=u,n=ht(u,["computeBudgetConfig"]),r=t?an(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,d)=>G(K({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],p=t?[...r.instructions,...d]:d,f=[...new Set(d.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>new Ft(y));if(c.length<12&&Lt({instructions:p,payer:this.feePayer,signers:f})||Lt({instructions:d,payer:this.feePayer,signers:f}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Lt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:f})?s.push(new Ot().add(...r.instructions,...c)):s.push(new Ot().add(...c)),a.push(Array.from(new Set(c.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(y=>o[y]).filter(y=>y!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(p=>p.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Lt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new Ot().add(...r.instructions,...c)):s.push(new Ot().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),(m=this.owner)!=null&&m.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||l.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:d,onTxUpdate:p,recentBlockHash:g,skipPreflight:f=!0}=l||{},y=g!=null?g:await kt(this.connection,this.blockhashCommitment);if(s.forEach(async(h,w)=>{h.recentBlockhash=y,a[w].length&&h.sign(...a[w])}),pt(s),(b=this.owner)!=null&&b.isKeyPair){if(d){let h=[];for(let w of s){let A=await Vn(this.connection,w,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(A)}return{txIds:h,signedTxs:s}}return{txIds:await Promise.all(s.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let h=await this.signAllTransactions(s);if(d){let w=0,A=[],k=async()=>{if(!h[w])return;let P=await this.connection.sendRawTransaction(h[w].serialize(),{skipPreflight:f});A.push({txId:P,status:"sent",signedTx:h[w]}),p==null||p([...A]),w++,this.connection.onSignature(P,I=>{let x=A.findIndex(O=>O.txId===P);x>-1&&(A[x].status=I.err?"error":"success"),p==null||p([...A]),I.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:h}}else{let w=[];for(let A=0;A<h.length;A+=1){let k=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:f});w.push(k)}return{txIds:w,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var b;let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=y,o=ht(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=K(K({},this.cluster==="devnet"?{}:un),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let h of a)s[h]===void 0&&c.push(new Ft(h));let u=await vn({connection:this.connection,address:c});for(let[h,w]of Object.entries(u))s[h]=w;let m=t?an(t):{instructions:[],instructionTypes:[]},l=await kt(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,w)=>G(K({},h),{[w.publicKey.toBase58()]:w}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(h=>{let w=[...f,h],A=t?[...m.instructions,...w]:w;if(f.length<12&&Mt({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Mt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(h);else{if(f.length===0)throw Error("item ins too big");let k={};for(let P of[...new Set(a)])s[P]!==void 0&&(k[P]=s[P]);if(t&&Mt({instructions:[...m.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let P=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...m.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Dt(P))}else{let P=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Dt(P))}g.push(Array.from(new Set(f.map(P=>P.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==void 0)),f=[h]}}),f.length>0){let w=[...new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Mt({instructions:[...m.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let A=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...m.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Dt(A))}else{let A=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Dt(A))}g.push(w)}return(b=this.owner)!=null&&b.signer&&g.forEach(h=>{h.some(w=>w.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async h=>{var I;let{sequentially:w,onTxUpdate:A,recentBlockHash:k,skipPreflight:P=!0}=h||{};if(p.map(async(x,O)=>{g[O].length&&x.sign(g[O]),k&&(x.message.recentBlockhash=k)}),pt(p),(I=this.owner)!=null&&I.isKeyPair){if(w){let x=[];for(let O of p){let E=await this.connection.sendTransaction(O,{skipPreflight:P}),{lastValidBlockHeight:R,blockhash:Z}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:Z,lastValidBlockHeight:R,signature:E},"confirmed"),x.push(E)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:P}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(w){let O=0,E=[],R=async()=>{if(!x[O])return;let Z=await this.connection.sendTransaction(x[O],{skipPreflight:P});E.push({txId:Z,status:"sent",signedTx:x[O]}),A==null||A([...E]),O++,this.connection.onSignature(Z,ne=>{let le=E.findIndex(ie=>ie.txId===Z);le>-1&&(E[le].status=ne.err?"error":"success"),A==null||A([...E]),ne.err||R()},"processed"),this.connection.getSignatureStatus(Z)};return R(),{txIds:[],signedTxs:x}}else{let O=[];for(let E=0;E<x.length;E+=1){let R=await this.connection.sendTransaction(x[E],{skipPreflight:P});O.push(R)}return{txIds:O,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function _n(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 z}from"@solana/web3.js";var wu=new z("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),hu=new z("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Au=new z("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pu=new z("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Tu=new z("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ku=new z("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),xu=new z("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Bu=new z("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Iu=new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Su=new z("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Cu=new z("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ku=new z("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Nu=new z("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ru=new z("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Lu=new z("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Mu=new z("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fu=new z("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ou=new z("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Eu=new z("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Zo=new z("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Yo=new z("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Qo=new z("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Du={SERUM_MARKET:z.default,OPENBOOK_MARKET:new z("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:z.default,FarmV3:new z("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new z("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new z("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new z("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new z("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new z("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new z("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Zo,CREATE_CPMM_POOL_AUTH:Yo,CREATE_CPMM_POOL_FEE_ACC:Qo,FEE_DESTINATION_ID:new z("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";function De(i,e,t){return Ce([i.toBuffer(),(t!=null?t:$o).toBuffer(),e.toBuffer()],new Jo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import _e from"bn.js";var _t=1e4;function ae(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=G(K({},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 _e(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===_t){let c=new _e(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=qn(i.mul(new _e(_t)),new _e(_t-o.transferFeeBasisPoints)),u=new _e(o.maximumFee.toString()),m=c.sub(i).gt(u)?i.add(u):c,l=qn(m.mul(new _e(o.transferFeeBasisPoints)),new _e(_t)),d=l.gt(s)?s:l;return{amount:m,fee:d,expirationTime:a}}else{let c=qn(i.mul(new _e(o.transferFeeBasisPoints)),new _e(_t)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function ft(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function qn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new _e(0))?t.add(new _e(1)):t}import{PublicKey as ll}from"@solana/web3.js";import{MintLayout as dl,TOKEN_PROGRAM_ID as fl}from"@solana/spl-token";var Wn=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=ht(o,["address","programId","decimals"]);return K({chainId:101,address:mt(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Gn=i=>i?G(K({},i),{transferFeeConfigAuthority:i.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:i.withdrawWithheldAuthority.toBase58(),withheldAmount:i.withheldAmount.toString(),olderTransferFee:G(K({},i.olderTransferFee),{epoch:i.olderTransferFee.epoch.toString(),maximumFee:i.olderTransferFee.maximumFee.toString()}),newerTransferFee:G(K({},i.newerTransferFee),{epoch:i.newerTransferFee.epoch.toString(),maximumFee:i.newerTransferFee.maximumFee.toString()})}):void 0;var Un=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),vt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=pe(t)}createTxBuilder(e){return this.scope.checkOwner(),new ln({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Un(e))}logInfo(...e){this.logger.info(Un(e))}logAndCreateError(...e){let t=Un(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import Ne from"bn.js";var j=new Ne(0),He=new Ne(1),Qe=new Ne(-1),Ke=new Ne(1).shln(64),mn=new Ne(1).shln(128),Xn=Ke.sub(He),Vt=64,Gi=mn.subn(1),xe=-443636,Be=-xe,st=new Ne("4295048016"),at=new Ne("79226673521066979257578248091"),Bl=new Ne("4295048017"),Il=new Ne("79226673521066979257578248090"),Ui=16,Xi="59543866431248",Hi="184467440737095516",zi="15793534762490258745",dn=new Ne(10).pow(new Ne(6)),es=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(es||{}),Sl={[500]:10,[3e3]:60,[1e4]:200},Cl={version:6,liquidity:j,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:j,feeGrowthGlobalX64B:j,protocolFeesTokenA:j,protocolFeesTokenB:j,swapInAmountTokenA:j,swapOutAmountTokenB:j,swapInAmountTokenB:j,swapOutAmountTokenA:j,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},ji={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},Kl=new Ne("18446744073700000000");import q from"bn.js";function Zi(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function Rl(i){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,i,!1),new Uint8Array(e)}function Ll(i){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,i,!1),new Uint8Array(e)}function pn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Hn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function zn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function qt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Yi(i,e){return qt(i,e)?null:Hn(i,e)}function Qi(i,e){return qt(i,e)?null:zn(i,e)}var ts=Buffer.from("amm_config","utf8"),ns=Buffer.from("pool","utf8"),is=Buffer.from("pool_vault","utf8"),rs=Buffer.from("pool_reward_vault","utf8"),Ji=Buffer.from("position","utf8"),os=Buffer.from("tick_array","utf8"),ss=Buffer.from("operation","utf8"),as=Buffer.from("pool_tick_array_bitmap_extension","utf8");function El(i,e){return Ce([ts,Zi(e)],i)}function $i(i,e,t,n){return Ce([ns,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function jn(i,e,t){return Ce([is,e.toBuffer(),t.toBuffer()],i)}function er(i,e,t){return Ce([rs,e.toBuffer(),t.toBuffer()],i)}function J(i,e,t){return Ce([os,e.toBuffer(),pn(t)],i)}function gt(i,e,t,n){return Ce([Ji,e.toBuffer(),pn(t),pn(n)],i)}function Re(i,e){return Ce([Ji,e.toBuffer()],i)}function fn(i){return Ce([Buffer.from("metadata","utf8"),Tt.toBuffer(),i.toBuffer()],Tt)}function Wt(i){return Ce([ss],i)}function ve(i,e){return Ce([as,e.toBuffer()],i)}import{PublicKey as Ve}from"@solana/web3.js";import ue from"bn.js";import xs from"bn.js";import{PublicKey as bs}from"@solana/web3.js";import rr,{isBN as or}from"bn.js";import{bits as vl,BitStructure as Vl,blob as cs,Blob as ql,cstr as Wl,f32 as Gl,f32be as Ul,f64 as Xl,f64be as Hl,greedy as zl,Layout as us,ns64 as jl,ns64be as Zl,nu64 as Yl,nu64be as Ql,offset as Jl,s16 as $l,s16be as em,s24 as tm,s24be as nm,s32 as ls,s32be as im,s40 as rm,s40be as om,s48 as sm,s48be as am,s8 as cm,seq as ms,struct as um,Structure as ds,u16 as ps,u16be as lm,u24 as mm,u24be as dm,u32 as pm,u32be as fm,u40 as gm,u40be as bm,u48 as ym,u48be as wm,u8 as fs,UInt as gs,union as hm,Union as Am,unionLayoutDiscriminator as Pm,utf8 as Tm}from"@solana/buffer-layout";var Zn=us,tr=ds;var Yn=gs;var nr=fs,xt=ps;var Pe=ls;var ir=ms;var Le=cs;var Gt=class extends Zn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new rr(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 rr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function ce(i){return new Yn(1,i)}function Je(i){return new Yn(4,i)}function D(i){return new Gt(8,!1,i)}function U(i){return new Gt(16,!1,i)}function sr(i){return new Gt(16,!0,i)}var gn=class extends Zn{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 oe(i){return new gn(Le(32),e=>new bs(e),e=>e.toBuffer(),i)}function ze(i){return new gn(nr(),ys,ws,i)}function ys(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ws(i){return i?1:0}var Qn=class extends tr{decode(e,t){return super.decode(e,t)}};function te(i,e,t){return new Qn(i,e,t)}function se(i,e,t){let n,r=typeof e=="number"?e:or(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=or(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 ir(i,r,t)}var Jn=14,$e=class{static maxTickInTickarrayBitmap(e){return e*fe*bt}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(!H.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-H.tickCount(n):t+H.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*fe,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let m=e.shln(1024-u-1),l=Yi(1024,m);if(l!==null){let d=(u-l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let m=e.shrn(u),l=Qi(1024,m);if(l!==null){let d=(u+l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-H.tickCount(n)}}}},Ut=class{static getBitmapOffset(e,t){if(!H.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=$e.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=$e.maxTickInTickarrayBitmap(e),n=-t;if(Be<=t)throw Error(`extensionTickBoundary check error: ${Be}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);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:C.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=H.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}=$e.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=C.mergeTickArrayBitmap(e).shln(bt-1-a),u=qt(512,c)?null:Hn(512,c);if(u!==null){let m=t-u*H.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=qt(512,c)?null:zn(512,c);if(u!==null){let m=t+u*H.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:s-H.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%$e.maxTickInTickarrayBitmap(t),r=Math.floor(n/H.tickCount(t));return e<0&&n!=0&&(r=bt-r),r}};var ar=te([Le(8),ce("bump"),xt("index"),oe(""),Je("protocolFeeRate"),Je("tradeFeeRate"),xt("tickSpacing"),se(D(),8,"")]),hs=te([Je("blockTimestamp"),U("sqrtPriceX64"),U("cumulativeTimePriceX64"),se(U(),1,"")]),$n=te([Le(8),ze("initialized"),oe("poolId"),se(hs,1e3,"observations"),se(U(),5,"")]),As=te([ce("rewardState"),D("openTime"),D("endTime"),D("lastUpdateTime"),U("emissionsPerSecondX64"),D("rewardTotalEmissioned"),D("rewardClaimed"),oe("tokenMint"),oe("tokenVault"),oe("creator"),U("rewardGrowthGlobalX64")]),bn=te([Le(8),ce("bump"),oe("ammConfig"),oe("creator"),oe("mintA"),oe("mintB"),oe("vaultA"),oe("vaultB"),oe("observationId"),ce("mintDecimalsA"),ce("mintDecimalsB"),xt("tickSpacing"),U("liquidity"),U("sqrtPriceX64"),Pe("tickCurrent"),xt("observationIndex"),xt("observationUpdateDuration"),U("feeGrowthGlobalX64A"),U("feeGrowthGlobalX64B"),D("protocolFeesTokenA"),D("protocolFeesTokenB"),U("swapInAmountTokenA"),U("swapOutAmountTokenB"),U("swapInAmountTokenB"),U("swapOutAmountTokenA"),ce("status"),se(ce(),7,""),se(As,3,"rewardInfos"),se(D(),16,"tickArrayBitmap"),D("totalFeesTokenA"),D("totalFeesClaimedTokenA"),D("totalFeesTokenB"),D("totalFeesClaimedTokenB"),D("fundFeesTokenA"),D("fundFeesTokenB"),D("startTime"),se(D(),15*4-3,"padding")]),Ps=te([U("growthInsideLastX64"),D("rewardAmountOwed")]),yn=te([Le(8),ce("bump"),oe("nftMint"),oe("poolId"),Pe("tickLower"),Pe("tickUpper"),U("liquidity"),U("feeGrowthInsideLastX64A"),U("feeGrowthInsideLastX64B"),D("tokenFeesOwedA"),D("tokenFeesOwedB"),se(Ps,3,"rewardInfos"),se(D(),8,"")]),Gm=te([Le(8),ce("bump"),oe("poolId"),Pe("tickLowerIndex"),Pe("tickUpperIndex"),U("liquidity"),U("feeGrowthInsideLastX64A"),U("feeGrowthInsideLastX64B"),D("tokenFeesOwedA"),D("tokenFeesOwedB"),se(U(),3,"rewardGrowthInside"),se(D(),8,"")]),Ts=te([Pe("tick"),sr("liquidityNet"),U("liquidityGross"),U("feeGrowthOutsideX64A"),U("feeGrowthOutsideX64B"),se(U(),3,"rewardGrowthsOutsideX64"),se(Je(),13,"")]),Xt=te([Le(8),oe("poolId"),Pe("startTickIndex"),se(Ts,fe,"ticks"),ce("initializedTickCount"),se(ce(),115,"")]),cr=te([Le(329),se(oe(),100,"whitelistMints")]),ur=te([Le(8),oe("poolId"),se(se(D(),8),Jn,"positiveTickArrayBitmap"),se(se(D(),8),Jn,"negativeTickArrayBitmap")]);var ks=15,H=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(r,o),m=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(ks/2));for(let p=0;p<m.length;p++){let{publicKey:g}=J(t,n,m[p]);c.push(g)}let l=(await Ye(e,c)).map(p=>p!==null?Xt.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let g=l[p];g!==null&&(d[g.startTickIndex]=G(K({},g),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=C.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let m=n[u];if(m===void 0)continue;let{nextTick:l,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,m,s);[a,c,u]=[l,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/H.tickCount(t)),a=n?C.searchLowBitFromStart(r,o,s-1,1,t):C.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=fe-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<fe;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=J(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=C.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let m;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){m=d;break}c=c-1}else for(c=c+1;c<fe;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){m=d;break}c=c+1}let{publicKey:l}=J(e,t,a);return{initializedTick:m,tickArrayAddress:l,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=C.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return fe*e}};var fe=60,bt=512,C=class{static getTickArrayAddressByTick(e,t,n,r){let o=C.getTickArrayStartIndexByTick(n,r),{publicKey:s}=J(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=C.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=fe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=H.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)*H.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*fe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*fe,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*fe:e+t*fe}static mergeTickArrayBitmap(e){let t=new xs(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*fe));return[...C.searchLowBitFromStart(e,t,s-1,o,n),...C.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return C.searchHightBitFromStart(e,t,0,bt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=J(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>C.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[u].testn(m)&&a.push(n),n--,a.length===r)break}let c=H.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>C.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[u].testn(m)&&a.push(n),n++,a.length===r)break}let c=H.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<xe||e>Be}static nextInitTick(e,t,n,r,o){if(H.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<fe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=fe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<fe;){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=_.getSqrtPriceX64FromTick(t),o=_.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new S(1).div(t),o=yt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=_.getSqrtPriceX64FromTick(o),a=_.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=_.getSqrtPriceX64FromTick(t),o=_.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new S(1).div(t),o=yt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=_.getSqrtPriceX64FromTick(o),a=_.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};import je from"bn.js";var Ht=class{static getfeeGrowthInside(e,t,n){let r=new je(0),o=new je(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 je(0),a=new je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}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,Ke),c=t.tokenFeesOwedA.add(a),u=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),m=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:m}}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,Ke),c=t.tokenFeesOwedA.add(a),u=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),m=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:m}}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 c=s[a],u=t.rewardInfos[a],m=v.wrappingSubU128(c,u.growthInsideLastX64),l=v.mulDivFloor(m,t.liquidity,Ke),d=u.rewardAmountOwed.add(l);o.push(d)}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 c=s[a],u=t.rewardInfos[a],m=v.wrappingSubU128(c,u.growthInsideLastX64),l=v.mulDivFloor(m,t.liquidity,Ke),d=u.rewardAmountOwed.add(l);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new je(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 c=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new je(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 c=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,b,h,w;let a=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=_.getSqrtPriceX64FromTick(t.tickLower),u=_.getSqrtPriceX64FromTick(t.tickUpper),m=o?1+r:1-r,l=X.getAmountsFromLiquidity(a,c,u,n,o),[d,p]=[ae(l.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ae(l.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,f]=[ae(new je(new S(l.amountA.toString()).mul(m).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ae(new je(new S(l.amountB.toString()).mul(m).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:ft(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as lr}from"@solana/spl-token";var ge=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:m,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,a);if(!u||m===void 0||!l)throw new Error("Invalid tick array");c.push(l);let{allTrade:d,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:y}=wt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,m,o,s);return c.push(...g),{allTrade:d,expectedAmountOut:p.mul(Qe),remainingAccounts:c,executionPrice:f,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!m)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=J(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(m);let{amountCalculated:l,accounts:d,sqrtPriceX64:p,feeAmount:g}=wt.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),u,o);return a.push(...d),{expectedAmountIn:l,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ge.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Ut.checkTickArrayIsInit(H.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):C.checkTickArrayIsInitialized(C.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=J(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,H.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=J(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/H.tickCount(e.tickSpacing)),r=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.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=H.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=$e.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Ut.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Be)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let m=0;m<o.length;m++){let l=o[m],d=(u=(a=t.rewardDefaultInfos[m])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(l.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=G(K({},l),{perSecond:v.x64ToDecimal(l.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ve(d)});if(p.tokenMint.equals(Ve.default))continue;if(n<=p.openTime.toNumber()||r.eq(j)){s.push(p);continue}let g=new ue(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=v.mulDivFloor(f,p.emissionsPerSecondX64,r),b=p.rewardGrowthGlobalX64.add(y),h=v.mulDivFloor(f,p.emissionsPerSecondX64,Ke),w=p.rewardTotalEmissioned.add(h);s.push(G(K({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=$e.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=H.getArrayStartIndex(Be,e)+H.tickCount(e)),n<xe&&(n=H.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!H.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/H.tickCount(t)*bt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await ot(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=ur.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=C.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),m=C.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let l of m){let{publicKey:d}=J(c.programId,c.id,l);o.push({pubkey:d}),r[d.toString()]=c.id}}let s=await ot(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let m=Xt.decode(c.accountInfo.data);a[u.toString()][m.startTickIndex]=G(K({},m),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(m=>m.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(Re(p,d).publicKey);let m=await Ye(t,u,{batchRequest:r}),l={};for(let d of m){if(d===null)continue;let p=yn.decode(d.data),g=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,b=C._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:w,amountB:A}=X.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),k=1/(1-Math.sqrt(Math.sqrt(b.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:h.price,amountA:w,amountB:A,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>G(K({},x),{pendingReward:new ue(0)})),leverage:k,tokenFeeAmountA:new ue(0),tokenFeeAmountB:new ue(0)}];let P=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),I=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);l[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=P,l[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=I}if(o){let d=Object.values(l),p=await Ye(t,d,{batchRequest:r}),g={};for(let f=0;f<d.length;f++){let y=p[f];if(y===null)continue;let b=d[f].toString();g[b]=Xt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let b of y){let h=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,A=g[l[h].toString()],k=g[l[w].toString()],P=A.ticks[C.getTickOffsetInArray(b.tickLower,f.tickSpacing)],I=k.ticks[C.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await Ht.GetPositionFees(f,b,P,I),E=await Ht.GetPositionRewards(f,b,P,I);b.tokenFeeAmountA=x.gte(new ue(0))?x:new ue(0),b.tokenFeeAmountB=O.gte(new ue(0))?O:new ue(0);for(let R=0;R<E.length;R++)b.rewardInfos[R].pendingReward=E[R].gte(new ue(0))?E[R]:new ue(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new S(0),catchLiquidityInsufficient:c=!1}){var Z;let u,m=n.toBase58()===e.mintA.address,[l,d]=m?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?u=m?st.add(new ue(1)):at.sub(new ue(1)):u=_.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ae(o,l,r,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:y,executionPrice:b,feeAmount:h}=ge.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((Z=p.fee)!=null?Z:j),u,c),w=ae(f,d,r,!1),A=_.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),k=m?A:new S(1).div(A),P=f.mul(new ue(Math.floor((1-s)*1e10))).div(new ue(1e10)),I=ae(P,d,r,!1),x=m?e.currentPrice:new S(1).div(e.currentPrice),O=new S(k).sub(x).abs(),E=x,R=new dt(new S(O).mul(10**15).toFixed(0),new S(E).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:w,minAmountOut:I,expirationTime:ft(p.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:R,fee:h,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,m]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,d]=[new Xe(G(K({},u),{mint:u.address,isToken2022:u.programId===lr.toBase58()})),new Xe(G(K({},m),{mint:m.address,isToken2022:m.programId===lr.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:h,executionPrice:w,priceImpact:A,fee:k,remainingAccounts:P,executionPriceX64:I}=ge.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ve(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),x=G(K({},g),{amount:new Ae(l,g.amount),fee:g.fee===void 0?void 0:new Ae(l,g.fee)}),O=G(K({},f),{amount:new Ae(d,f.amount),fee:f.fee===void 0?void 0:new Ae(d,f.fee)}),E=G(K({},y),{amount:new Ae(d,y.amount),fee:y.fee===void 0?void 0:new Ae(d,y.fee)}),R=new Ee({baseToken:l,denominator:new ue(10).pow(new ue(20+l.decimals)),quoteToken:d,numerator:h.mul(new S(10**(20+d.decimals))).toFixed(0)}),Z=new Ee({baseToken:l,denominator:new ue(10).pow(new ue(20+l.decimals)),quoteToken:d,numerator:w.mul(new S(10**(20+d.decimals))).toFixed(0)}),ne=new Ae(l,k);return{allTrade:p,realAmountIn:x,amountOut:O,minAmountOut:E,expirationTime:b,currentPrice:R,executionPrice:Z,priceImpact:A,fee:ne,remainingAccounts:P,executionPriceX64:I}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,f,y;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),m=Math.min(a,o.priceMax)-c,l=a-s,d=o.priceMax-o.priceMin,p;return m<=0?p=0:l===m?p=d/m:d===m?p=m/l:p=m/d*(m/l),{feeApr:o.feeApr*p,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*p,((f=o.rewardApr[1])!=null?f:0)*p,((y=o.rewardApr[2])!=null?y:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,m=e[n],l=r[mt(e.mintA.address).toString()],d=r[mt(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!m||!l||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),y=_.getSqrtPriceX64FromTick(s),b=_.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=X.getAmountsFromLiquidityWithSlippage(f,y,b,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:k}=X.getAmountsFromLiquidityWithSlippage(f,y,b,o,!1,!1,0),P=new S(h.toString()).div(new S(10).pow(p)).mul(l.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(d.value)),I=new S(A.toString()).div(new S(10).pow(p)).mul(l.value).add(new S(k.toString()).div(new S(10).pow(g)).mul(d.value)),x=new S(1).div(P.add(I)),E=new S(m.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),R=3600*24*365,Z=e.rewardDefaultInfos.map(ne=>{var Q,ci;let le=ne.mint.decimals,ie=r[ne.mint.address];return c<((Q=ne.startTime)!=null?Q:0)||c>((ci=ne.endTime)!=null?ci:0)||!ne.perSecond||!ie||le===void 0?0:new S(ie.value).mul(new S(ne.perSecond).mul(R)).div(new S(10).pow(le)).mul(x).mul(100).toNumber()});return{feeApr:E,rewardsApr:Z,apr:E+Z.reduce((ne,le)=>ne+le,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var b,h;let m=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=_.getSqrtPriceX64FromTick(n),d=_.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,g=ae(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,c,!u),f=new ue(new S(g.amount.sub((h=g.fee)!=null?h:j).toString()).mul(p).toFixed(0)),y;if(m.lte(l))y=t?X.getLiquidityFromTokenAmountA(l,d,f,!a):new ue(0);else if(m.lte(d)){let w=X.getLiquidityFromTokenAmountA(m,d,f,!a),A=X.getLiquidityFromTokenAmountB(l,m,f);y=t?w:A}else y=t?new ue(0):X.getLiquidityFromTokenAmountB(l,d,f);return ge.getAmountsFromLiquidity({epochInfo:c,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,b,h,w;let c=_.getSqrtPriceX64FromTick(n),u=_.getSqrtPriceX64FromTick(r),m=a?1+s:1-s,l=X.getAmountsFromLiquidity(_.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,p]=[ae(l.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ae(l.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,f]=[ae(l.amountA.muln(m),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ae(l.amountB.muln(m),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:ft(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ve(c.id));(await Ye(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=bn.decode(c.data))});let s=t.map(c=>ve(new Ve(c.programId),new Ve(c.id)).publicKey),a=await ge.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>G(K({},c),{[u.id]:G(K({},n[u.id]),{id:new Ve(u.id),version:6,programId:new Ve(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:G(K({},u.config),{id:new Ve(u.config.id),fundOwner:""}),currentPrice:new S(u.price),exBitmapInfo:a[ve(new Ve(u.programId),new Ve(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function Nd({poolInfo:i,tickLower:e,tickUpper:t,amountA:n,amountB:r,slippage:o,add:s,epochInfo:a,amountHasFee:c}){var w,A,k,P;let[u,m,l,d]=e<t?[e,t,n,r]:[t,e,r,n],p=_.priceToSqrtPriceX64(new S(i.price),i.mintA.decimals,i.mintB.decimals),g=_.getSqrtPriceX64FromTick(u),f=_.getSqrtPriceX64FromTick(m),[y,b]=[ae(l,(w=i.mintA.extensions)==null?void 0:w.feeConfig,a,!c),ae(d,(A=i.mintB.extensions)==null?void 0:A.feeConfig,a,!c)],h=X.getLiquidityFromTokenAmounts(p,g,f,y.amount.sub((k=y.fee)!=null?k:j),b.amount.sub((P=b.fee)!=null?P:j));return X.getAmountsOutFromLiquidity({poolInfo:i,tickLower:e,tickUpper:t,liquidity:h,slippage:o,add:s,epochInfo:a,amountAddFee:!c})}var ei={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function mr(i){return G(K({},i),{type:"Concentrated",programId:i.programId.toString(),id:i.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:i.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:i.ammConfig.tradeFeeRate,openTime:i.startTime.toString(),tvl:0,day:ei,week:ei,month:ei,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,config:G(K({},i.ammConfig),{id:i.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(j)||(o=o.add(He)),o}static mulDivFloor(e,t,n){if(n.eq(j))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(j))throw new Error("division by 0");return e.mul(t).add(n.sub(He)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new q(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(mn).sub(t).mod(mn)}};function ye(i,e){return ti(i.mul(e),64,256)}function Bs(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function ti(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var _=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(j))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(j))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(j))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(j))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(j))return e;let o=t.shln(Vt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,He,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(Vt);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,He,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<xe||e>Be)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new q("18445821805675395072"):new q("18446744073709551616");return(t&2)!=0&&(n=ye(n,new q("18444899583751176192"))),(t&4)!=0&&(n=ye(n,new q("18443055278223355904"))),(t&8)!=0&&(n=ye(n,new q("18439367220385607680"))),(t&16)!=0&&(n=ye(n,new q("18431993317065453568"))),(t&32)!=0&&(n=ye(n,new q("18417254355718170624"))),(t&64)!=0&&(n=ye(n,new q("18387811781193609216"))),(t&128)!=0&&(n=ye(n,new q("18329067761203558400"))),(t&256)!=0&&(n=ye(n,new q("18212142134806163456"))),(t&512)!=0&&(n=ye(n,new q("17980523815641700352"))),(t&1024)!=0&&(n=ye(n,new q("17526086738831433728"))),(t&2048)!=0&&(n=ye(n,new q("16651378430235570176"))),(t&4096)!=0&&(n=ye(n,new q("15030750278694412288"))),(t&8192)!=0&&(n=ye(n,new q("12247334978884435968"))),(t&16384)!=0&&(n=ye(n,new q("8131365268886854656"))),(t&32768)!=0&&(n=ye(n,new q("3584323654725218816"))),(t&65536)!=0&&(n=ye(n,new q("696457651848324352"))),(t&131072)!=0&&(n=ye(n,new q("26294789957507116"))),(t&262144)!=0&&(n=ye(n,new q("37481735321082"))),e>0&&(n=Gi.div(n)),n}static getTickFromPrice(e,t,n){return _.getTickFromSqrtPriceX64(_.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(at)||e.lt(st))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new q(t-64),r=Bs(n,32,128),o=new q("8000000000000000","hex"),s=0,a=new q(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new q(0))&&s<Ui;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),l=r.add(u).mul(new q(Xi)),d=ti(l.sub(new q(Hi)),64,128).toNumber(),p=ti(l.add(new q(zi)),64,128).toNumber();return d==p?d:_.getSqrtPriceX64FromTick(p).lte(e)?p:d}},yt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=_.getTickFromSqrtPriceX64(_.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=yt.getTickWithPriceAndTickspacing(e,t,n,r),s=_.getSqrtPriceX64FromTick(o);return _.sqrtPriceX64ToPrice(s,n,r)}},X=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(j))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Vt),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),He,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(j))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Ke):v.mulDivFloor(n,t.sub(e),Ke)}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,He,Xn):a.shrn(Vt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Xn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return X.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=X.getLiquidityFromTokenAmountA(e,n,r,!1),a=X.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return X.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:X.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new q(0)};if(e.lt(n)){let s=X.getTokenAmountAFromLiquidity(e,n,r,o),a=X.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new q(0),amountB:X.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=X.getAmountsFromLiquidity(e,t,n,r,s),m=o?1+a:1-a,l=new q(new S(c.toString()).mul(m).toFixed(0)),d=new q(new S(u.toString()).mul(m).toFixed(0));return{amountSlippageA:l,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,A,k;let u=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=_.getSqrtPriceX64FromTick(t),l=_.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=X.getAmountsFromLiquidity(u,m,l,r,s),[g,f]=[ae(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),ae(p.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[y,b]=[ae(new q(new S(p.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,c),ae(new q(new S(p.amountB.toString()).mul(d).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,c)];return{liquidity:r,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:b,expirationTime:ft(g.expirationTime,f.expirationTime)}}},wt=class{static swapCompute(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f=!1){if(d.eq(j))throw new Error("amountSpecified must not be 0");if(g||(g=s?st.add(He):at.sub(He)),s){if(g.lt(st))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(l))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(at))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(l))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(j),b={amountSpecifiedRemaining:d,amountCalculated:j,sqrtPriceX64:l,tick:u>p?Math.min(p+H.tickCount(m)-1,u):p,accounts:[],liquidity:c,feeAmount:new q(0)},h=p,w=n[p],A=0,k=!s&&w.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(j)&&!b.sqrtPriceX64.eq(g);){A>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let I=C.nextInitTick(w,b.tick,m,s,k),x=I||null,O=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let R=ge.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:m,tickArrayBitmap:r,exBitmapInfo:o},h,s);if(!R.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}h=R.nextStartIndex;let{publicKey:Z}=J(e,t,h);O=Z,w=n[h];try{x=C.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}P.tickNext=x.tick,P.initialized=x.liquidityGross.gtn(0),p!==h&&O&&(b.accounts.push(O),p=h),P.tickNext<xe?P.tickNext=xe:P.tickNext>Be&&(P.tickNext=Be),P.sqrtPriceNextX64=_.getSqrtPriceX64FromTick(P.tickNext);let E;if(s&&P.sqrtPriceNextX64.lt(g)||!s&&P.sqrtPriceNextX64.gt(g)?E=g:E=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=wt.swapStepCompute(b.sqrtPriceX64,E,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let R=x.liquidityNet;s&&(R=R.mul(Qe)),b.liquidity=X.addDelta(b.liquidity,R)}k=P.tickNext!=b.tick&&!s&&w.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let R=_.getTickFromSqrtPriceX64(b.sqrtPriceX64);k=R!=b.tick&&!s&&w.startTickIndex===R,b.tick=R}++A}try{let{nextStartIndex:P,isExist:I}=H.nextInitializedTickArray(b.tick,m,s,r,o);I&&p!==P&&(b.accounts.push(J(e,t,P).publicKey),p=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:j,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new q(0),amountIn:new q(0),amountOut:new q(0),feeAmount:new q(0)},a=e.gte(t),c=r.gte(j);if(c){let m=v.mulDivFloor(r,dn.sub(new q(o.toString())),dn);s.amountIn=a?X.getTokenAmountAFromLiquidity(t,e,n,!0):X.getTokenAmountBFromLiquidity(e,t,n,!0),m.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=_.getNextSqrtPriceX64FromInput(e,n,m,a)}else s.amountOut=a?X.getTokenAmountBFromLiquidity(t,e,n,!1):X.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Qe).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=_.getNextSqrtPriceX64FromOutput(e,n,r.mul(Qe),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=X.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=X.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:X.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:X.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(Qe))&&(s.amountOut=r.mul(Qe)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new q(o),dn.sub(new q(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as Te,TOKEN_2022_PROGRAM_ID as lt,ASSOCIATED_TOKEN_PROGRAM_ID as wr}from"@solana/spl-token";import{PublicKey as B,TransactionInstruction as We,SystemProgram as Bt,Keypair as si}from"@solana/web3.js";import hr from"bn.js";import{PublicKey as Rs,Keypair as Ls}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ms}from"@solana/spl-token";import up from"bn.js";var Is=te([oe("mint"),oe("owner"),D("amount"),Je("delegateOption"),oe("delegate"),ce("state"),Je("isNativeOption"),D("isNative"),D("delegatedAmount"),Je("closeAuthorityOption"),oe("closeAuthority")]);function Ss(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function ni(i,...e){if(!Ss(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 ii(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 dr(i,e){ni(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var hn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),qe=(i,e)=>i<<32-e|i>>>e;var jd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Cs(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function ri(i){return typeof i=="string"&&(i=Cs(i)),ni(i),i}var wn=class{clone(){return this._cloneInto()}},Zd={}.toString;function pr(i){let e=n=>i().update(ri(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Ks(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),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var fr=(i,e,t)=>i&e^~i&t,gr=(i,e,t)=>i&e^i&t^e&t,An=class extends wn{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=hn(this.buffer)}update(e){ii(this);let{view:t,buffer:n,blockLen:r}=this;e=ri(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=hn(e);for(;r<=o-s;s+=r)this.process(c,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){ii(this),dr(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 l=s;l<r;l++)t[l]=0;Ks(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=hn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,m=this.get();if(u>m.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,m[l],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 Ns=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]),ct=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ut=new Uint32Array(64),oi=class extends An{constructor(){super(64,32,8,!1),this.A=ct[0]|0,this.B=ct[1]|0,this.C=ct[2]|0,this.D=ct[3]|0,this.E=ct[4]|0,this.F=ct[5]|0,this.G=ct[6]|0,this.H=ct[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){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=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)ut[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let d=ut[l-15],p=ut[l-2],g=qe(d,7)^qe(d,18)^d>>>3,f=qe(p,17)^qe(p,19)^p>>>10;ut[l]=f+ut[l-7]+g+ut[l-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:m}=this;for(let l=0;l<64;l++){let d=qe(a,6)^qe(a,11)^qe(a,25),p=m+d+fr(a,c,u)+Ns[l]+ut[l]|0,f=(qe(n,2)^qe(n,13)^qe(n,22))+gr(n,r,o)|0;m=u,u=c,c=a,a=s+p|0,s=o,o=r,r=n,n=p+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,c=c+this.F|0,u=u+this.G|0,m=m+this.H|0,this.set(n,r,o,s,a,c,u,m)}roundClean(){ut.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var br=pr(()=>new oi);var pp=pe("Raydium_Util");function yr({fromPublicKey:i,programId:e=Ms}){let t=Ls.generate().publicKey.toBase58().slice(0,32);return{publicKey:Fs(i,t,e),seed:t}}function Fs(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=br(n);return new Rs(r)}var Ar=pe("Raydium_Clmm"),Ge={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},be=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g){let f=te([U("sqrtPriceX64"),D("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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let h=Buffer.from([...Ge.createPool,...b]);return new We({keys:y,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:m}=e,l=yr({fromPublicKey:r,programId:n}),[d,p]=[new B(o.address),new B(s.address)],g=[Bt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m?0:await t.getMinimumBalanceForRentExemption($n.span),space:$n.span,programId:n})],{publicKey:f}=$i(n,a,d,p),{publicKey:y}=jn(n,f,d),{publicKey:b}=jn(n,f,p);return g.push(this.createPoolInstruction(n,f,r,a,l.publicKey,d,y,new B(o.programId||Te),p,b,new B(s.programId||Te),ve(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[me.CreateAccount,me.ClmmCreatePool],address:{poolId:f,observationId:l.publicKey,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h,w,A,k,P,I,x,O,E){let R=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),U("liquidity"),D("amountMaxA"),D("amountMaxB"),ze("withMetadata"),ce("optionBaseFlag"),ze("baseFlag")]),Z=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ne=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:wr,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Z],le=Buffer.alloc(R.span);R.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:k,liquidity:P,amountMaxA:I,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},le);let ie=Buffer.from([...Ge.openPosition,...le]);return new We({keys:ne,programId:e,data:ie})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:m}){let l=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(m)g=new B((await m(1))[0]);else{let x=si.generate();l.push(x),g=x.publicKey}let f=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=J(d,p,f),{publicKey:h}=J(d,p,y),{publicKey:w}=De(n.wallet,g,Te),{publicKey:A}=fn(g),{publicKey:k}=Re(d,g),{publicKey:P}=gt(d,p,r,o),I=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,w,A,P,b,h,k,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),r,o,f,y,s,a,c,u);return{signers:l,instructions:[I],instructionTypes:[me.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:A,personalPosition:k,protocolPosition:P}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:m}){let l=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(m)g=new B((await m(1))[0]);else{let x=si.generate();l.push(x),g=x.publicKey}let f=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=J(d,p,f),{publicKey:h}=J(d,p,y),{publicKey:w}=De(n.wallet,g,Te),{publicKey:A}=fn(g),{publicKey:k}=Re(d,g),{publicKey:P}=gt(d,p,r,o),I=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,w,A,P,b,h,k,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),r,o,f,y,u,s,a,c,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ve(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:A,personalPosition:k,protocolPosition:P},instructions:[I],signers:l,instructionTypes:[me.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h,w,A,k,P,I,x,O,E){let R=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),U("liquidity"),D("amountMaxA"),D("amountMaxB"),ze("withMetadata"),ce("optionBaseFlag"),ze("baseFlag")]),Z=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ne=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:wr,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Z],le=Buffer.alloc(R.span);R.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:k,liquidity:new hr(0),amountMaxA:I==="MintA"?x:O,amountMaxB:I==="MintA"?O:x,withMetadata:P==="create",baseFlag:I==="MintA",optionBaseFlag:1},le);let ie=Buffer.from([...Ge.openPosition,...le]);return new We({keys:ne,programId:e,data:ie})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:m}){let l,d=[];if(m)l=new B((await m(1))[0]);else{let x=si.generate();d.push(x),l=x.publicKey}let[p,g]=[new B(e.programId),new B(e.id)],f=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=J(p,g,f),{publicKey:h}=J(p,g,y),{publicKey:w}=De(n.wallet,l,Te),{publicKey:A}=fn(l),{publicKey:k}=Re(p,l),{publicKey:P}=gt(p,g,r,o),I=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,l,w,A,P,b,h,k,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(t.mintA.address),new B(t.mintB.address),r,o,f,y,s,a,c,u,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ve(p,g).publicKey:void 0);return{address:{nftMint:l,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:A,personalPosition:k,protocolPosition:P},instructions:[I],signers:d,instructionTypes:[me.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=te([]),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:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Ge.closePosition,...c]);return new We({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new B(e.programId),{publicKey:s}=De(n.wallet,r.nftMint,Te),{publicKey:a}=Re(o,r.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[me.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h){let w=te([U("liquidity"),D("amountMaxA"),D("amountMaxB"),ce("optionBaseFlag"),ze("baseFlag")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let I=Buffer.from([...Ge.increaseLiquidity,...P]);return new We({keys:k,programId:e,data:I})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new B(e.programId),new B(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),l=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=J(c,u,m),{publicKey:p}=J(c,u,l),{publicKey:g}=De(r.wallet,n.nftMint,Te),{publicKey:f}=Re(c,n.nftMint),{publicKey:y}=gt(c,u,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(c,r.wallet,g,f,u,y,d,p,r.tokenAccountA,r.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,l])?ve(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},signers:[],instructions:[b],instructionTypes:[me.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new B(e.programId),new B(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),l=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=J(c,u,m),{publicKey:p}=J(c,u,l),{publicKey:g}=De(r.wallet,n.nftMint,Te),{publicKey:f}=Re(c,n.nftMint),{publicKey:y}=gt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,g,f,u,y,d,p,r.tokenAccountA,r.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,l])?ve(c,u).publicKey:void 0)],signers:[],instructionTypes:[me.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h){let w=te([U("liquidity"),D("amountMaxA"),D("amountMaxB"),ce("optionBaseFlag"),ze("baseFlag")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(w.span);w.encode({liquidity:new hr(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},P);let I=Buffer.from([...Ge.increaseLiquidity,...P]);return new We({keys:k,programId:e,data:I})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h,w){let A=te([U("liquidity"),D("amountMinA"),D("amountMinB")]),k=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...k],I=Buffer.alloc(A.span);A.encode({liquidity:y,amountMinA:b,amountMinB:h},I);let x=Buffer.from([...Ge.decreaseLiquidity,...I]);return new We({keys:P,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,m]=[new B(e.programId),new B(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=J(u,m,l),{publicKey:g}=J(u,m,d),{publicKey:f}=De(r.wallet,n.nftMint,c),{publicKey:y}=Re(u,n.nftMint),{publicKey:b}=gt(u,m,n.tickLower,n.tickUpper),h=[];for(let A=0;A<e.rewardDefaultInfos.length;A++)h.push({poolRewardVault:new B(t.rewardInfos[A].vault),ownerRewardVault:r.rewardAccounts[A],rewardMint:new B(e.rewardDefaultInfos[A].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,r.wallet,f,y,m,b,p,g,r.tokenAccountA,r.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),h,o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?ve(u,m).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:w,instructionTypes:[me.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b){let h=te([D("amount"),D("otherAmountThreshold"),U("sqrtPriceLimitX64"),ze("isBaseInput")]),w=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...l.map(I=>({pubkey:I,isSigner:!1,isWritable:!0}))],A=[{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:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},...w],k=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},k);let P=Buffer.from([...Ge.swap,...k]);return new We({keys:A,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[m,l]=[new B(e.programId),new B(e.id)],[d,p]=[new B(t.vault.A),new B(t.vault.B)],[g,f]=[new B(e.mintA.address),new B(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(m,r.wallet,l,new B(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?d:p,y?p:d,y?g:f,y?f:g,u,n,s,a,c,!0,ve(m,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[me.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,m,l,d){let p=te([D("openTime"),D("endTime"),U("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:he(m),endTime:he(l),emissionsPerSecondX64:d},f);let y=Buffer.from([...Ge.initReward,...f]);return new We({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a=er(o,s,r.mint).publicKey,c=Wt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new B(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[me.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,m,l,d){let p=te([ce("rewardIndex"),U("emissionsPerSecondX64"),D("openTime"),D("endTime")]),g=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:he(m),endTime:he(l)},f);let y=Buffer.from([...Ge.setRewardEmissions,...f]);return new We({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,c=new B(t.rewardInfos[d].vault),u=new B(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&Ar.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let m=Wt(o).publicKey,l=[this.setRewardInstruction(o,n.wallet,s,m,new B(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:m},signers:[],instructions:l,instructionTypes:[me.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=te([ce("rewardIndex")]),u=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1}],m=Buffer.alloc(c.span);c.encode({rewardIndex:a},m);let l=Buffer.from([...Ge.collectReward,...m]);return new We({keys:u,programId:e,data:l})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new B(e.programId),new B(e.id)],a,c;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.toString()&&(a=m,c=new B(t.rewardInfos[m].vault));(a===void 0||c===void 0)&&Ar.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[me.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,m]=[new B(e.programId),new B(e.id)],[l,d]=[new B(t.vault.A),new B(t.vault.B)],[p,g]=[new B(e.mintA.address),new B(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(u,n.wallet,m,new B(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:l,f?l:d,f?p:g,f?g:p,c,l,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[me.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Me from"bn.js";import{AccountLayout as Pr,TOKEN_PROGRAM_ID as Tr}from"@solana/spl-token";var ai=class extends vt{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||W.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:m,txVersion:l}=e,d=this.createTxBuilder(),[p,g,f]=new Me(new W(r.address).toBuffer()).gt(new Me(new W(o.address).toBuffer()))?[o,r,new S(1).div(a)]:[r,o,a],y=_.priceToSqrtPriceX64(f,p.decimals,g.decimals),b=await be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:g,ammConfigId:s.id,initialPriceX64:y,startTime:c,forerunCreate:m});return d.addInstruction(b),d.addCustomComputeBudget(u),d.versionBuild({txVersion:l,extInfo:{address:G(K({},b.address),{programId:t.toString(),id:b.address.poolId.toString(),mintA:p,mintB:g,openTime:c.toString(),vault:{A:b.address.mintAVault.toString(),B:b.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:K({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:b.address.poolId.toString(),mintA:p,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},ji),forerunCreate:m}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,withMetadata:l="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),y=null,b=null,h=n.useSOLBalance&&e.mintA.address===ee.toString(),w=n.useSOLBalance&&e.mintB.address===ee.toString(),[A,k]=s==="MintA"?[a,c]:[c,a],{account:P,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||A.isZero()?{payer:this.scope.ownerPubKey,amount:A}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:m});P&&(y=P),f.addInstruction(I||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:m});x&&(b=x),f.addInstruction(O||{}),(!y||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:y==null?void 0:y.toBase58(),ownerTokenAccountB:b==null?void 0:b.toBase58()});let E=t||await this.getClmmPoolKeys(e.id),R=await be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:E,ownerInfo:G(K({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:l,getEphemeralSigners:d});return f.addInstruction(R),f.addCustomComputeBudget(p),f.versionBuild({txVersion:g,extInfo:R.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,withMetadata:l="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),f=null,y=null,b=n.useSOLBalance&&e.mintA.address===ee.toBase58(),h=n.useSOLBalance&&e.mintB.address===ee.toBase58(),{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:b?!1:u,checkCreateATAOwner:m});w&&(f=w),g.addInstruction(A||{});let{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:m});k&&(y=k),g.addInstruction(P||{}),(f===void 0||y===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=t||await this.getClmmPoolKeys(e.id),x=await be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:y},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:r,amountMaxB:o,withMetadata:l,getEphemeralSigners:p});return g.addInstruction(x),g.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,amountMaxA:o,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,computeBudgetConfig:l,txVersion:d}=e,p=this.createTxBuilder(),g,f,y=c.useSOLBalance&&t.mintA.address===ee.toString(),b=c.useSOLBalance&&t.mintB.address===ee.toString(),{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:y||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:m});h&&(g=h),p.addInstruction(w||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:m});A&&(f=A),p.addInstruction(k||{}),!g&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=n!=null?n:await this.getClmmPoolKeys(t.id),I=be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:f},liquidity:a,amountMaxA:o,amountMaxB:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:m,txVersion:l}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===ee.toString(),y=a.useSOLBalance&&t.mintB.address===ee.toString(),{account:b,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});b&&(p=b),d.addInstruction(h||{});let{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:y||(r==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(A||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getClmmPoolKeys(t.id),P=be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},base:r,baseAmount:o,otherAmountMax:s});return d.addInstruction(P),d.addCustomComputeBudget(m),d.versionBuild({txVersion:l,extInfo:{address:P.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:o,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,computeBudgetConfig:l,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),g=o.useSOLBalance&&t.mintA.address===ee.toString(),f=o.useSOLBalance&&t.mintB.address===ee.toString(),y,b,{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:m});y=h,w&&p.addInstruction(w);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:m});b=A,k&&p.addInstruction(k);let P=[];for(let E of t.rewardDefaultInfos){let R=o.useSOLBalance&&E.mint.address===ee.toString(),Z;if(E.mint.address===t.mintA.address)Z=y;else if(E.mint.address===t.mintB.address)Z=b;else{let{account:ne,instructionParams:le}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(E.mint.programId),mint:new W(E.mint.address),notUseTokenAccount:R,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!R,associatedOnly:R?!1:u,checkCreateATAOwner:m});Z=ne,le&&p.addInstruction(le)}P.push(Z)}!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=n!=null?n:await this.getClmmPoolKeys(t.id),x=await be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b,rewardAccounts:P},liquidity:c,amountMinA:s,amountMinB:a});p.addInstruction({instructions:x.instructions,instructionTypes:[me.ClmmDecreasePosition]});let O=K({},x.address);if(o.closePosition){let E=await be.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:r});p.addInstruction({endInstructions:E.instructions,endInstructionTypes:E.instructionTypes}),O=K(K({},O),E.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:d,extInfo:{address:O}})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:r}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=be.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return o.addInstruction(a).versionBuild({txVersion:r,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===ee.toString(),m=n.perSecond.mul(n.endTime-n.openTime),{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(n.mint.address),mint:new W(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me(new S(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:o});d&&c.addInstruction(d),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),g=be.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{programId:new W(n.mint.programId),mint:new W(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:v.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){for(let l of r)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),m={};for(let l of r){let d=n.useSOLBalance&&l.mint.address===ee.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:g,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(l.mint.programId),mint:new W(l.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Me(new S(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:s});f&&u.addInstruction(f),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=t!=null?t:await this.getClmmPoolKeys(e.id),b=be.initRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{programId:new W(l.mint.programId),mint:new W(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:v.decimalToX64(l.perSecond)}});m=K(K({},m),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:m}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(ee),{account:m,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me(new S(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:o});l&&c.addInstruction(l),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=be.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:v.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){let u=this.createTxBuilder(),m={};for(let l of r){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let d=n.useSOLBalance&&l.mint.address===ee.toString(),{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(l.mint.programId),mint:new W(l.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Me(new S(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:s});g&&u.addInstruction(g),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=t!=null?t:await this.getClmmPoolKeys(e.id),y=be.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new W(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:v.decimalToX64(l.perSecond)}});u.addInstruction(y),m=K(K({},m),y.address)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:m}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(ee),{account:u,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:r,checkCreateATAOwner:o});m&&a.addInstruction(m),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let l=await this.getClmmPoolKeys(e.id),d=be.collectRewardInstructions({poolInfo:e,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let m=t.useSOLBalance&&c.equals(ee),{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(u.mint.programId),mint:c,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:r,checkCreateATAOwner:o});l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),g=be.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardMint:c});s.addInstruction(g),a=K(K({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:r,amountOutMin:o,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:m=!0,checkCreateATAOwner:l=!1,txVersion:d}){let p=this.createTxBuilder(),g=n.toString()===e.mintA.address,f=c.useSOLBalance&&e.mintA.address===ee.toBase58(),y=c.useSOLBalance&&e.mintB.address===ee.toBase58(),b;!s||s.equals(new S(0))?b=g?st.add(new Me(1)):at.sub(new Me(1)):b=_.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let h;if(!h){let{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?r:0}:void 0,associatedOnly:f?!1:m,checkCreateATAOwner:l});h=k,P&&p.addInstruction(P)}let w;if(!w){let{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:y||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:r}:void 0,associatedOnly:y?!1:m,checkCreateATAOwner:l});w=k,P&&p.addInstruction(P)}(!h||!w)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:h,ownerTokenAccountB:w,mintAUseSOLBalance:f,mintBUseSOLBalance:y,associatedOnly:m});let A=t!=null?t:await this.getClmmPoolKeys(e.id);return p.addInstruction(be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:A,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:w},inputMint:new W(n),amountIn:r,amountOutMin:o,sqrtPriceLimitX64:b,remainingAccounts:u})),p.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let l of this.scope.account.tokenAccountRawInfos)r?De(this.scope.ownerPubKey,l.accountInfo.mint,s).publicKey.equals(l.pubkey)&&(u[l.accountInfo.mint.toString()]=l.pubkey):u[l.accountInfo.mint.toString()]=l.pubkey;let m=this.createTxBuilder();for(let l of Object.values(e)){if(t[l.id]===void 0||!t[l.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(A=>!A.rewardAmountOwed.isZero())))continue;let d=l,p=n.useSOLBalance&&d.mintA.address===ee.toString(),g=n.useSOLBalance&&d.mintB.address===ee.toString(),f=u[d.mintA.address];if(!f){let{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new W(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=w,A&&m.addInstruction(A)}let y=u[d.mintB.address];if(!y){let{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new W(d.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:r,checkCreateATAOwner:o});y=w,A&&m.addInstruction(A)}u[d.mintA.address]=f,u[d.mintB.address]=y;let b=[];for(let w of d.rewardDefaultInfos){let A=n.useSOLBalance&&w.mint.address===ee.toString(),k=u[w.mint.address];if(!k){let{account:P,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(w.mint.programId),mint:new W(w.mint.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:A?!1:r});k=P,I&&m.addInstruction(I)}u[w.mint.address]=k,b.push(k)}let h=await this.getClmmPoolKeys(d.id);for(let w of t[l.id]){let A=be.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:y,rewardAccounts:b},liquidity:new Me(0),amountMinA:new Me(0),amountMinB:new Me(0)});m.addInstruction(A)}}return a===0?m.sizeCheckBuildV0({computeBudgetConfig:c}):m.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Wt(e).publicKey);return t?cr.decode(t.data).whitelistMints.filter(r=>!r.equals(W.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Me(1))).map(s=>Re(new W(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=yn.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await ot(this.scope.connection,e.map(o=>({pubkey:new W(o)})),t),r={};for(let o=0;o<e.length;o++){let s=n[o];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[o]));let a=bn.decode(s.accountInfo.data),c=_.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();r[String(e[o])]=G(K({},a),{currentPrice:c,programId:s.accountInfo.owner})}return r}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),r=await ot(this.scope.connection,Array.from(n).map(c=>({pubkey:new W(c)}))),o={};r.forEach(c=>{!c.accountInfo||(o[c.pubkey.toBase58()]=ar.decode(c.accountInfo.data))});let s=await ge.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var l,d,p,g;let[u,m]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:Wn({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||Tr.toBase58(),extensions:{feeConfig:(l=t[u])!=null&&l.feeConfig?Gn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:Wn({address:m,decimals:e[c].mintDecimalsB,programId:t[m].programId.toBase58()||Tr.toBase58(),extensions:{feeConfig:(p=t[m])!=null&&p.feeConfig?Gn((g=t[m])==null?void 0:g.feeConfig):void 0}}),price:e[c].currentPrice,config:G(K({},o[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await ge.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var m;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),r=await qi({connection:this.scope.connection,mints:Array.from(n).map(l=>new W(l))}),{computeClmmPoolInfo:o,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:r}),a=await ot(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=mr(o[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(Pr.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(Pr.decode((m=a[1].accountInfo)==null?void 0:m.data).amount.toString());let u=G(K({},o[e]),{id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},rewardInfos:[],config:c.config});return{poolInfo:c,poolKeys:u,computePoolInfo:o[e],tickData:s}}};export{ts as AMM_CONFIG_SEED,Ui as BIT_PRECISION,ai as Clmm,ar as ClmmConfigLayout,be as ClmmInstrument,Jn as EXTENSION_TICKARRAY_BITMAP_SIZE,dn as FEE_RATE_DENOMINATOR,ks as FETCH_TICKARRAY_COUNT,es as Fee,Xi as LOG_B_2_X32,Hi as LOG_B_P_ERR_MARGIN_LOWER_X64,zi as LOG_B_P_ERR_MARGIN_UPPER_X64,X as LiquidityMath,at as MAX_SQRT_PRICE_X64,Il as MAX_SQRT_PRICE_X64_SUB_ONE,Be as MAX_TICK,st as MIN_SQRT_PRICE_X64,Bl as MIN_SQRT_PRICE_X64_ADD_ONE,xe as MIN_TICK,v as MathUtil,Xn as MaxU64,Gi as MaxUint128,Qe as NEGATIVE_ONE,He as ONE,ss as OPERATION_SEED,$n as ObservationInfoLayout,hs as ObservationLayout,cr as OperationLayout,rs as POOL_REWARD_VAULT_SEED,ns as POOL_SEED,as as POOL_TICK_ARRAY_BITMAP_SEED,is as POOL_VAULT_SEED,Ji as POSITION_SEED,bn as PoolInfoLayout,ge as PoolUtils,yn as PositionInfoLayout,Ps as PositionRewardInfoLayout,Ht as PositionUtils,Gm as ProtocolPositionLayout,mn as Q128,Ke as Q64,As as RewardInfo,_ as SqrtPriceMath,wt as SwapMath,bt as TICK_ARRAY_BITMAP_SIZE,os as TICK_ARRAY_SEED,fe as TICK_ARRAY_SIZE,Sl as TICK_SPACINGS,$e as TickArrayBitmap,ur as TickArrayBitmapExtensionLayout,Ut as TickArrayBitmapExtensionUtils,Xt as TickArrayLayout,Ts as TickLayout,yt as TickMath,H as TickQuery,C as TickUtils,Vt as U64Resolution,Kl as U64_IGNORE_RANGE,j as ZERO,mr as clmmComputeInfoToApiInfo,Nd as getLiquidityFromAmounts,El as getPdaAmmConfigId,ve as getPdaExBitmapAccount,fn as getPdaMetadataKey,Wt as getPdaOperationAccount,Re as getPdaPersonalPositionAddress,$i as getPdaPoolId,er as getPdaPoolRewardVaulId,jn as getPdaPoolVaultId,gt as getPdaProtocolPositionAddress,J as getPdaTickArrayAddress,Rl as i16ToBytes,pn as i32ToBytes,qt as isZero,Hn as leadingZeros,Qi as leastSignificantBit,Cl as mockCreatePoolInfo,ji as mockV3CreatePoolInfo,Yi as mostSignificantBit,zn as trailingZeros,Zi as u16ToBytes,Ll as u32ToBytes};
1
+ var kr=Object.defineProperty,xr=Object.defineProperties;var Br=Object.getOwnPropertyDescriptors;var zt=Object.getOwnPropertySymbols;var li=Object.prototype.hasOwnProperty,mi=Object.prototype.propertyIsEnumerable;var ui=(i,e,t)=>e in i?kr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,K=(i,e)=>{for(var t in e||(e={}))li.call(e,t)&&ui(i,t,e[t]);if(zt)for(var t of zt(e))mi.call(e,t)&&ui(i,t,e[t]);return i},G=(i,e)=>xr(i,Br(e));var ht=(i,e)=>{var t={};for(var n in i)li.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&zt)for(var n of zt(i))e.indexOf(n)<0&&mi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as W}from"@solana/web3.js";var At=9e15,it=1e9,Pn="0123456789abcdef",Zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Tn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-At,maxE:At,crypto:!1},gi,Ze,V=!0,Jt="[DecimalError] ",nt=Jt+"Invalid argument: ",bi=Jt+"Precision limit exceeded",yi=Jt+"crypto unavailable",wi="[object Decimal]",ke=Math.floor,de=Math.pow,Ir=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Cr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Sr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,hi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Oe=1e7,L=7,Kr=9007199254740991,Nr=Zt.length-1,kn=Yt.length-1,T={toStringTag:wi};T.absoluteValue=T.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),N(i)};T.ceil=function(){return N(new this.constructor(this),this.e+1,2)};T.clampedTo=T.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)};T.comparedTo=T.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<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]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};T.cosine=T.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())+L,n.rounding=1,t=Rr(n,xi(n,t)),n.precision=i,n.rounding=e,N(Ze==2||Ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,m=this,l=m.constructor;if(!m.isFinite()||m.isZero())return new l(m);for(V=!1,o=m.s*de(m.s*m,1/3),!o||Math.abs(o)==1/0?(t=we(m.d),i=m.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=de(t,1/3),i=ke((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 l(t),n.s=m.s):n=new l(o.toString()),s=(i=l.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(m),n=$(u.plus(m).times(a),u.plus(c),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(N(a,i+1,0),a.times(a).times(a).eq(m))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(N(n,i+1,1),e=!n.times(n).times(n).eq(m));break}return V=!0,N(n,i,l.rounding,e)};T.decimalPlaces=T.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-ke(this.e/L))*L,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(i){return $(this,new this.constructor(i))};T.dividedToIntegerBy=T.divToInt=function(i){var e=this,t=e.constructor;return N($(e,new t(i),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(i){return this.cmp(i)===0};T.floor=function(){return N(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(i){return this.cmp(i)>0};T.greaterThanOrEqualTo=T.gte=function(i){var e=this.cmp(i);return e==1||e===0};T.hyperbolicCosine=T.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/en(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Pt(s,1,o.times(e),new s(1),!0);for(var c,u=i,m=new s(8);u--;)c=o.times(o),o=a.minus(c.times(m.minus(c.times(m))));return N(o,s.precision=t,s.rounding=n,!0)};T.hyperbolicSine=T.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=Pt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/en(5,i)),r=Pt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,N(r,e,t,!0)};T.hyperbolicTangent=T.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,$(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};T.inverseCosine=T.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()?Fe(t,r,o):new t(0):new t(NaN):e.isZero()?Fe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Fe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};T.inverseHyperbolicCosine=T.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,V=!1,t=t.times(t).minus(1).sqrt().plus(t),V=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.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,V=!1,t=t.times(t).plus(1).sqrt().plus(t),V=!0,n.precision=i,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.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?N(new o(r),i,e,!0):(o.precision=t=n-r.e,r=$(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)};T.inverseSine=T.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=Fe(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)))};T.inverseTangent=T.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,m=u.constructor,l=m.precision,d=m.rounding;if(u.isFinite()){if(u.isZero())return new m(u);if(u.abs().eq(1)&&l+4<=kn)return s=Fe(m,l+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new m(NaN);if(l+4<=kn)return s=Fe(m,l+4,d).times(.5),s.s=u.s,s}for(m.precision=a=l+10,m.rounding=1,t=Math.min(28,a/L+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(V=!1,e=Math.ceil(a/L),n=1,c=u.times(u),s=new m(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),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)),V=!0,N(s,m.precision=l,m.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&ke(this.e/L)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(i){return this.cmp(i)<0};T.lessThanOrEqualTo=T.lte=function(i){return this.cmp(i)<1};T.logarithm=T.log=function(i){var e,t,n,r,o,s,a,c,u=this,m=u.constructor,l=m.precision,d=m.rounding,p=5;if(i==null)i=new m(10),e=!0;else{if(i=new m(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new m(NaN);e=i.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new m(t&&!t[0]?-1/0:u.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(V=!1,a=l+p,s=tt(u,a),n=e?Qt(m,a+10):tt(i,a),c=$(s,n,a,1),It(c.d,r=l,d))do if(a+=10,s=tt(u,a),n=e?Qt(m,a+10):tt(i,a),c=$(s,n,a,1),!o){+we(c.d).slice(r+1,r+15)+1==1e14&&(c=N(c,l+1,0));break}while(It(c.d,r+=10,d));return V=!0,N(c,l,d)};T.minus=T.sub=function(i){var e,t,n,r,o,s,a,c,u,m,l,d,p=this,g=p.constructor;if(i=new g(i),!p.d||!i.d)return!p.s||!i.s?i=new g(NaN):p.d?i.s=-i.s:i=new g(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(u=p.d,d=i.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])i.s=-i.s;else if(u[0])i=new g(p);else return new g(c===3?-0:0);return V?N(i,a,c):i}if(t=ke(i.e/L),m=ke(p.e/L),u=u.slice(),o=m-t,o){for(l=o<0,l?(e=u,o=-o,s=d.length):(e=d,t=m,s=u.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,l=n<s,l&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){l=u[n]<d[n];break}o=0}for(l&&(e=u,u=d,d=e,i.s=-i.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(r=n;r&&u[--r]===0;)u[r]=Oe-1;--u[r],u[n]+=Oe}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=$t(u,t),V?N(i,a,c):i):new g(c===3?-0:0)};T.modulo=T.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]?N(new n(t),n.precision,n.rounding):(V=!1,n.modulo==9?(e=$(t,i.abs(),0,3,1),e.s*=i.s):e=$(t,i,0,n.modulo,1),e=e.times(i),V=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return xn(this)};T.naturalLogarithm=T.ln=function(){return tt(this)};T.negated=T.neg=function(){var i=new this.constructor(this);return i.s=-i.s,N(i)};T.plus=T.add=function(i){var e,t,n,r,o,s,a,c,u,m,l=this,d=l.constructor;if(i=new d(i),!l.d||!i.d)return!l.s||!i.s?i=new d(NaN):l.d||(i=new d(i.d||l.s===i.s?l:NaN)),i;if(l.s!=i.s)return i.s=-i.s,l.minus(i);if(u=l.d,m=i.d,a=d.precision,c=d.rounding,!u[0]||!m[0])return m[0]||(i=new d(l)),V?N(i,a,c):i;if(o=ke(l.e/L),n=ke(i.e/L),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=m.length):(t=m,n=o,s=u.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=m.length,s-r<0&&(r=s,t=m,m=u,u=t),e=0;r;)e=(u[--r]=u[r]+m[r]+e)/Oe|0,u[r]%=Oe;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=$t(u,n),V?N(i,a,c):i};T.precision=T.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=Ai(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var i=this,e=i.constructor;return N(new e(i),i.e+1,e.rounding)};T.sine=T.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())+L,n.rounding=1,t=Mr(n,xi(n,t)),n.precision=i,n.rounding=e,N(Ze>2?t.neg():t,i,e,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,m=s.constructor;if(u!==1||!a||!a[0])return new m(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(V=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=we(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ke((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new m(e)):n=new m(u.toString()),t=(c=m.precision)+3;;)if(o=n,n=o.plus($(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(N(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(N(n,c+1,1),i=!n.times(n).eq(s));break}return V=!0,N(n,c,m.rounding,i)};T.tangent=T.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=$(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,N(Ze==2||Ze==4?t.neg():t,i,e,!0)):new n(NaN)};T.times=T.mul=function(i){var e,t,n,r,o,s,a,c,u,m=this,l=m.constructor,d=m.d,p=(i=new l(i)).d;if(i.s*=m.s,!d||!d[0]||!p||!p[0])return new l(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=ke(m.e/L)+ke(i.e/L),c=d.length,u=p.length,c<u&&(o=d,d=p,p=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+p[n]*d[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=$t(o,t),V?N(i,l.precision,l.rounding):i};T.toBinary=function(i,e){return In(this,2,i,e)};T.toDecimalPlaces=T.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ie(i,0,it),e===void 0?e=n.rounding:Ie(e,0,8),N(t,i+t.e+1,e))};T.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,!0):(Ie(i,0,it),e===void 0?e=r.rounding:Ie(e,0,8),n=N(new r(n),i+1,e),t=Ue(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Ue(r):(Ie(i,0,it),e===void 0?e=o.rounding:Ie(e,0,8),n=N(new o(r),i+r.e+1,e),t=Ue(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};T.toFraction=function(i){var e,t,n,r,o,s,a,c,u,m,l,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=Ai(g)-p.e-1,s=o%L,e.d[0]=de(10,s<0?L+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(nt+a);i=a.gt(e)?o>0?e:u:a}for(V=!1,a=new f(we(g)),m=f.precision,f.precision=o=g.length*L*2;l=$(a,e,0,1,1),r=t.plus(l.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(l.times(r)),c=r,r=e,e=a.minus(l.times(r)),a=r;return r=$(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=p.s,d=$(u,n,o,1).minus(p).abs().cmp($(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=m,V=!0,d};T.toHexadecimal=T.toHex=function(i,e){return In(this,16,i,e)};T.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:Ie(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]?(V=!1,t=$(t,i,0,e,1).times(i),V=!0,N(t)):(i.s=t.s,t=i),t};T.toNumber=function(){return+this};T.toOctal=function(i,e){return In(this,8,i,e)};T.toPower=T.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(de(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return N(a,n,o);if(e=ke(i.e/L),e>=i.d.length-1&&(t=u<0?-u:u)<=Kr)return r=Pi(c,a,t,n),i.s<0?new c(1).div(r):N(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(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=de(+a,u),e=t==0||!isFinite(t)?ke(u*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(V=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=xn(i.times(tt(a,n+t)),n),r.d&&(r=N(r,n+5,1),It(r.d,n,o)&&(e=n+10,r=N(xn(i.times(tt(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=N(r,n+1,0)))),r.s=s,V=!0,c.rounding=o,N(r,n,o))};T.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ie(i,1,it),e===void 0?e=r.rounding:Ie(e,0,8),n=N(new r(n),i,e),t=Ue(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ie(i,1,it),e===void 0?e=n.rounding:Ie(e,0,8)),N(new n(t),i,e)};T.toString=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return N(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function we(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=L-n.length,t&&(o+=et(t)),o+=n;s=i[e],n=s+"",t=L-n.length,t&&(o+=et(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(i,e,t){if(i!==~~i||i<e||i>t)throw Error(nt+i)}function It(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=L,r=0):(r=Math.ceil((e+1)/L),e%=L),o=de(10,L-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)==de(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)==de(10,e-3)-1,s}function jt(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]+=Pn.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 Rr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/en(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Pt(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 $=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}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,c){var u,m,l,d,p,g,f,y,b,h,w,A,k,P,I,x,O,E,R,Z,ne=n.constructor,le=n.s==r.s?1:-1,ie=n.d,Q=r.d;if(!ie||!ie[0]||!Q||!Q[0])return new ne(!n.s||!r.s||(ie?Q&&ie[0]==Q[0]:!Q)?NaN:ie&&ie[0]==0||!Q?le*0:le/0);for(c?(p=1,m=n.e-r.e):(c=Oe,p=L,m=ke(n.e/p)-ke(r.e/p)),R=Q.length,O=ie.length,b=new ne(le),h=b.d=[],l=0;Q[l]==(ie[l]||0);l++);if(Q[l]>(ie[l]||0)&&m--,o==null?(P=o=ne.precision,s=ne.rounding):a?P=o+(n.e-r.e)+1:P=o,P<0)h.push(1),g=!0;else{if(P=P/p+2|0,l=0,R==1){for(d=0,Q=Q[0],P++;(l<O||d)&&P--;l++)I=d*c+(ie[l]||0),h[l]=I/Q|0,d=I%Q|0;g=d||l<O}else{for(d=c/(Q[0]+1)|0,d>1&&(Q=i(Q,d,c),ie=i(ie,d,c),R=Q.length,O=ie.length),x=R,w=ie.slice(0,R),A=w.length;A<R;)w[A++]=0;Z=Q.slice(),Z.unshift(0),E=Q[0],Q[1]>=c/2&&++E;do d=0,u=e(Q,w,R,A),u<0?(k=w[0],R!=A&&(k=k*c+(w[1]||0)),d=k/E|0,d>1?(d>=c&&(d=c-1),f=i(Q,d,c),y=f.length,A=w.length,u=e(f,w,y,A),u==1&&(d--,t(f,R<y?Z:Q,y,c))):(d==0&&(u=d=1),f=Q.slice()),y=f.length,y<A&&f.unshift(0),t(w,f,A,c),u==-1&&(A=w.length,u=e(Q,w,R,A),u<1&&(d++,t(w,R<A?Z:Q,A,c))),A=w.length):u===0&&(d++,w=[0]),h[l++]=d,u&&w[0]?w[A++]=ie[x]||0:(w=[ie[x]],A=1);while((x++<O||w[0]!==void 0)&&P--);g=w[0]!==void 0}h[0]||h.shift()}if(p==1)b.e=m,gi=g;else{for(l=1,d=h[0];d>=10;d/=10)l++;b.e=l+m*p-1,N(b,a?o+b.e+1:o,s,g)}return b}}();function N(i,e,t,n){var r,o,s,a,c,u,m,l,d,p=i.constructor;e:if(e!=null){if(l=i.d,!l)return i;for(r=1,a=l[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=L,s=e,m=l[d=0],c=m/de(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/L),a=l.length,d>=a)if(n){for(;a++<=d;)l.push(0);m=c=0,r=1,o%=L,s=o-L+1}else break e;else{for(m=a=l[d],r=1;a>=10;a/=10)r++;o%=L,s=o-L+r,c=s<0?0:m/de(10,r-s-1)%10|0}if(n=n||e<0||l[d+1]!==void 0||(s<0?m:m%de(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?m/de(10,r-s):0:l[d-1])%10&1||t==(i.s<0?8:7)),e<1||!l[0])return l.length=0,u?(e-=i.e+1,l[0]=de(10,(L-e%L)%L),i.e=-e||0):l[0]=i.e=0,i;if(o==0?(l.length=d,a=1,d--):(l.length=d+1,a=de(10,L-o),l[d]=s>0?(m/de(10,r-s)%de(10,s)|0)*a:0),u)for(;;)if(d==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,l[0]==Oe&&(l[0]=1));break}else{if(l[d]+=a,l[d]!=Oe)break;l[d--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return V&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function Ue(i,e,t){if(!i.isFinite())return ki(i);var n,r=i.e,o=we(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 $t(i,e){var t=i[0];for(e*=L;t>=10;t/=10)e++;return e}function Qt(i,e,t){if(e>Nr)throw V=!0,t&&(i.precision=t),Error(bi);return N(new i(Zt),e,1,!0)}function Fe(i,e,t){if(e>kn)throw Error(bi);return N(new i(Yt),e,t,!0)}function Ai(i){var e=i.length-1,t=e*L+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 Pi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/L+4);for(V=!1;;){if(t%2&&(o=o.times(e),pi(o.d,s)&&(r=!0)),t=ke(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),pi(e.d,s)}return V=!0,o}function di(i){return i.d[i.d.length-1]&1}function Ti(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 xn(i,e){var t,n,r,o,s,a,c,u=0,m=0,l=0,d=i.constructor,p=d.rounding,g=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(V=!1,c=g):c=e,a=new d(.03125);i.e>-2;)i=i.times(a),l+=5;for(n=Math.log(de(2,l))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=N(o.times(i),c,1),t=t.times(++m),a=s.plus($(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(r=l;r--;)s=N(s.times(s),c,1);if(e==null)if(u<3&&It(s.d,c-n,p,u))d.precision=c+=10,t=o=a=new d(1),m=0,u++;else return N(s,d.precision=g,p,V=!0);else return d.precision=g,s}s=a}}function tt(i,e){var t,n,r,o,s,a,c,u,m,l,d,p=1,g=10,f=i,y=f.d,b=f.constructor,h=b.rounding,w=b.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(V=!1,m=w):m=e,b.precision=m+=g,t=we(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=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return u=Qt(b,m+2,w).times(o+""),f=tt(new b(n+"."+t.slice(1)),m-g).plus(u),b.precision=w,e==null?N(f,w,h,V=!0):f;for(l=f,c=s=f=$(f.minus(1),f.plus(1),m,1),d=N(f.times(f),m,1),r=3;;){if(s=N(s.times(d),m,1),u=c.plus($(s,new b(r),m,1)),we(u.d).slice(0,m)===we(c.d).slice(0,m))if(c=c.times(2),o!==0&&(c=c.plus(Qt(b,m+2,w).times(o+""))),c=$(c,new b(p),m,1),e==null)if(It(c.d,m-g,h,a))b.precision=m+=g,u=s=f=$(l.minus(1),l.plus(1),m,1),d=N(f.times(f),m,1),r=a=1;else return N(c,b.precision=w,h,V=!0);else return b.precision=w,c;c=u,r+=2}}function ki(i){return String(i.s*i.s/0)}function Bn(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)%L,t<0&&(n+=L),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=L;n<r;)i.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),V&&(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 Lr(i,e){var t,n,r,o,s,a,c,u,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),hi.test(e))return Bn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Cr.test(e))t=16,e=e.toLowerCase();else if(Ir.test(e))t=2;else if(Sr.test(e))t=8;else throw Error(nt+e);for(o=e.search(/p/i),o>0?(c=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Pi(n,new n(t),o,o*2)),u=jt(e,t,Oe),m=u.length-1,o=m;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=$t(u,m),i.d=u,V=!1,s&&(i=$(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?de(2,c):Ct.pow(2,c))),V=!0,i)}function Mr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Pt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/en(5,t)),e=Pt(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 Pt(i,e,t,n,r){var o,s,a,c,u=1,m=i.precision,l=Math.ceil(m/L);for(V=!1,c=t.times(t),a=new i(n);;){if(s=$(a.times(c),new i(e++*e++),m,1),a=r?n.plus(s):n.minus(s),n=$(s.times(c),new i(e++*e++),m,1),s=a.plus(n),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return V=!0,s.d.length=l+1,s}function en(i,e){for(var t=i;--e;)t*=i;return t}function xi(i,e){var t,n=e.s<0,r=Fe(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=di(t)?n?2:3:n?4:1,e;Ze=di(t)?n?1:4:n?3:2}return e.minus(r).abs()}function In(i,e,t,n){var r,o,s,a,c,u,m,l,d,p=i.constructor,g=t!==void 0;if(g?(Ie(t,1,it),n===void 0?n=p.rounding:Ie(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())m=ki(i);else{for(m=Ue(i),s=m.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(m=m.replace(".",""),d=new p(1),d.e=m.length-s,d.d=jt(Ue(d),10,r),d.e=d.d.length),l=jt(m,10,r),o=c=l.length;l[--c]==0;)l.pop();if(!l[0])m=g?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=l,i.e=o,i=$(i,d,t,n,0,r),l=i.d,o=i.e,u=gi),s=l[t],a=r/2,u=u||l[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&l[t-1]&1||n===(i.s<0?8:7)),l.length=t,u)for(;++l[--t]>r-1;)l[t]=0,t||(++o,l.unshift(1));for(c=l.length;!l[c-1];--c);for(s=0,m="";s<c;s++)m+=Pn.charAt(l[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)m+="0";for(l=jt(m,r,e),c=l.length;!l[c-1];--c);for(s=1,m="1.";s<c;s++)m+=Pn.charAt(l[s])}else m=m.charAt(0)+"."+m.slice(1);m=m+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)m="0"+m;m="0."+m}else if(++o>c)for(o-=c;o--;)m+="0";else o<c&&(m=m.slice(0,o)+"."+m.slice(o))}m=(e==16?"0x":e==2?"0b":e==8?"0o":"")+m}return i.s<0?"-"+m:m}function pi(i,e){if(i.length>e)return i.length=e,!0}function Fr(i){return new this(i).abs()}function Or(i){return new this(i).acos()}function Er(i){return new this(i).acosh()}function Dr(i,e){return new this(i).plus(e)}function _r(i){return new this(i).asin()}function vr(i){return new this(i).asinh()}function Vr(i){return new this(i).atan()}function qr(i){return new this(i).atanh()}function Wr(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=Fe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Fe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Fe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan($(i,e,o,1)),e=Fe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan($(i,e,o,1)),t}function Gr(i){return new this(i).cbrt()}function Ur(i){return N(i=new this(i),i.e+1,2)}function Xr(i,e,t){return new this(i).clamp(e,t)}function Hr(i){if(!i||typeof i!="object")throw Error(Jt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-At,0,"toExpPos",0,At,"maxE",0,At,"minE",-At,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Tn[t]),(n=i[t])!==void 0)if(ke(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]=Tn[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(yi);else this[t]=!1;else throw Error(nt+t+": "+n);return this}function zr(i){return new this(i).cos()}function jr(i){return new this(i).cosh()}function Bi(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,fi(o)){u.s=o.s,V?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;V?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Bn(u,o.toString())}else if(c!=="string")throw Error(nt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),hi.test(o)?Bn(u,o):Lr(u,o)}if(r.prototype=T,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=Hr,r.clone=Bi,r.isDecimal=fi,r.abs=Fr,r.acos=Or,r.acosh=Er,r.add=Dr,r.asin=_r,r.asinh=vr,r.atan=Vr,r.atanh=qr,r.atan2=Wr,r.cbrt=Gr,r.ceil=Ur,r.clamp=Xr,r.cos=zr,r.cosh=jr,r.div=Zr,r.exp=Yr,r.floor=Qr,r.hypot=Jr,r.ln=$r,r.log=eo,r.log10=no,r.log2=to,r.max=io,r.min=ro,r.mod=oo,r.mul=so,r.pow=ao,r.random=co,r.round=uo,r.sign=lo,r.sin=mo,r.sinh=po,r.sqrt=fo,r.sub=go,r.sum=bo,r.tan=yo,r.tanh=wo,r.trunc=ho,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 Zr(i,e){return new this(i).div(e)}function Yr(i){return new this(i).exp()}function Qr(i){return N(i=new this(i),i.e+1,3)}function Jr(){var i,e,t=new this(0);for(V=!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 V=!0,new this(1/0);t=e}return V=!0,t.sqrt()}function fi(i){return i instanceof Ct||i&&i.toStringTag===wi||!1}function $r(i){return new this(i).ln()}function eo(i,e){return new this(i).log(e)}function to(i){return new this(i).log(2)}function no(i){return new this(i).log(10)}function io(){return Ti(this,arguments,"lt")}function ro(){return Ti(this,arguments,"gt")}function oo(i,e){return new this(i).mod(e)}function so(i,e){return new this(i).mul(e)}function ao(i,e){return new this(i).pow(e)}function co(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ie(i,1,it),n=Math.ceil(i/L),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(yi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=L,n&&i&&(r=de(10,L-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-=L)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function uo(i){return N(i=new this(i),i.e+1,this.rounding)}function lo(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function mo(i){return new this(i).sin()}function po(i){return new this(i).sinh()}function fo(i){return new this(i).sqrt()}function go(i,e){return new this(i).sub(e)}function bo(){var i=0,e=arguments,t=new this(e[i]);for(V=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return V=!0,N(t,this.precision,this.rounding)}function yo(i){return new this(i).tan()}function wo(i){return new this(i).tanh()}function ho(i){return N(i=new this(i),i.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var Ct=T.constructor=Bi(Tn);Zt=new Ct(Zt);Yt=new Ct(Yt);var C=Ct;import{get as Ii,set as Ao}from"lodash";var Cn=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 Date.now().toString()}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}},Ci={},Po={};function pe(i){let e=Ii(Ci,i);if(!e){let t=Ii(Po,i);e=new Cn({name:i,logLevel:t}),Ao(Ci,i,e)}return e}import{PublicKey as Sc}from"@solana/web3.js";import Nc from"bn.js";import Oo from"big.js";import sn from"bn.js";import Ce from"bn.js";import{PublicKey as Rn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as To}from"@solana/spl-token";import{PublicKey as re,SystemProgram as Si,SYSVAR_RENT_PUBKEY as ko}from"@solana/web3.js";function Sn({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ws=[Sn({pubkey:To,isWritable:!1}),Sn({pubkey:Si.programId,isWritable:!1}),Sn({pubkey:ko,isWritable:!1})];function Kn({publicKey:i,transformSol:e}){let t=Ki(i.toString());if(t instanceof re)return e&&t.equals(St)?ee:t;if(e&&t.toString()===St.toBase58())return ee;if(typeof t=="string"){if(t===re.default.toBase58())return re.default;try{return new re(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ki(i){try{return new re(i)}catch{return i}}var tn=new re("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Gs=new re("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Kt=new re("SysvarRent111111111111111111111111111111111"),Us=new re("SysvarC1ock11111111111111111111111111111111"),Tt=new re("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Xs=new re("Sysvar1nstructions1111111111111111111111111"),Hs=Si.programId,zs=new re("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),js=new re("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Zs=new re("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ys=new re("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Qs=new re("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Js=new re("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$s=new re("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ea=new re("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ta=new re("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),na=new re("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ia=new re("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ee=new re("So11111111111111111111111111111111111111112"),St=re.default;function mt(i){return Kn({publicKey:i,transformSol:!0})}import{PublicKey as xo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ni}from"@solana/spl-token";var Nn={chainId:101,address:xo.default.toBase58(),programId:Ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ni.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Ln=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===St.toBase58()||e instanceof Rn&&St.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new Rn(rt.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?Rn.default:Kn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Xe=Ln;Xe.WSOL=new Ln(G(K({},rt),{mint:rt.address}));import rn from"big.js";import Co from"bn.js";import So from"decimal.js-light";import Bo from"toformat";var Io=Bo,Nt=Io;var nn=pe("module/fraction"),Mn=Nt(rn),Rt=Nt(So),Ko={[0]:Rt.ROUND_DOWN,[1]:Rt.ROUND_HALF_UP,[2]:Rt.ROUND_UP},No={[0]:rn.roundDown,[1]:rn.roundHalfUp,[2]:rn.roundUp},Y=class{constructor(e,t=new Co(1)){this.numerator=he(e),this.denominator=he(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(he(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(he(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||nn.logWithError(`${e} is not an integer.`),e<=0&&nn.logWithError(`${e} is not positive.`),Rt.set({precision:e+1,rounding:Ko[n]});let r=new Rt(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)||nn.logWithError(`${e} is not an integer.`),e<0&&nn.logWithError(`${e} is negative.`),Mn.DP=e,Mn.RM=No[n]||1,new Mn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Lo=pe("Raydium_price"),Ee=class extends Y{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new Y(Fn(n.decimals),Fn(r.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ee({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Lo.logWithError("mul token not equals");let n=super.mul(t);return new Ee({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 On=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},on=On;on.SOL=new On(Nn);import Mo from"bn.js";var Ri=new Y(new Mo(100)),dt=class extends Y{toSignificant(e=5,t,n){return this.mul(Ri).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ri).toFixed(e,t,n)}};var Fo=new Ce(0),$a=new Ce(1),ec=new Ce(2),tc=new Ce(3),nc=new Ce(5),En=new Ce(10),ic=new Ce(100),rc=new Ce(1e3),oc=new Ce(1e4),Li=9007199254740991;function he(i){let e=pe("Raydium_parseBigNumberish");if(i instanceof Ce)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ce(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Li||i<=-Li)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ce(String(i))):typeof i=="bigint"?new Ce(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ce(0))}function Fn(i){return En.pow(he(i))}var Eo=pe("Raydium_amount"),Mi=Nt(Oo);function Do(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")):Eo.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Ae=class extends Y{constructor(t,n,r=!0,o){let s=new sn(0),a=En.pow(new sn(t.decimals));if(r)s=he(n);else{let c=new sn(0),u=new sn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,l]=Do(n.toString(),t.decimals);c=he(m),u=he(l)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=pe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 Mi.DP=this.token.decimals,new Mi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Ft,sendAndConfirmTransaction as Vn,Transaction as Ot,TransactionMessage as Et,VersionedTransaction as Dt}from"@solana/web3.js";import jo from"axios";var me={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 _o,ComputeBudgetProgram as Fi,Transaction as Ei,TransactionMessage as vo,Keypair as Di,VersionedTransaction as _i}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";var Oi=pe("Raydium_txUtil"),vi=1644;function an(i){let e=[],t=[];return i.microLamports&&(e.push(Fi.setComputeUnitPrice({microLamports:i.microLamports})),t.push(me.SetComputeUnitPrice)),i.units&&(e.push(Fi.setComputeUnitLimit({units:i.units})),t.push(me.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function kt(i,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:r.blockhash)||(await i.getRecentBlockhash(t)).blockhash}catch{return(await i.getRecentBlockhash(t)).blockhash}}function qo(i,e){i.length<1&&Oi.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Oi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ei;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<vi}catch{return!1}}function Se(i,e){let[t,n]=_o.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Lt({instructions:i,payer:e,signers:t}){return qo(i,[e,...t])}function Mt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Di.generate().publicKey.toString()}){let o=new vo({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new _i(o).serialize()).toString("base64").length<vi}catch{return!1}}var Wo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function pt(i){let e=[];return i.forEach(t=>{t instanceof Ei&&(t.recentBlockhash||(t.recentBlockhash=Vo.toBase58()),t.feePayer||(t.feePayer=Di.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof _i&&(n=Wo(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Wi,AddressLookupTableAccount as cn}from"@solana/web3.js";import{PublicKey as Vi}from"@solana/web3.js";import{MINT_SIZE as Go,TOKEN_PROGRAM_ID as Uo,getTransferFeeConfig as Xo,unpackMint as Ho}from"@solana/spl-token";var Dn=pe("Raydium_accountInfo_util");async function Ye(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=K({batchRequest:!1},t),s=_n(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(l=>{let d=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=_n(c,10);a=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(d=>{if(d){let{data:p,executable:g,lamports:f,owner:y,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&Dn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new Vi(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&Dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function ot(i,e,t){let n=await Ye(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>G(K({},r),{accountInfo:n[o]}))}async function qi({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await ot(i,e.map(c=>({pubkey:mt(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Go){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Ho(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=G(K({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Uo,feeConfig:(a=Xo(u))!=null?a:void 0})}return r[Vi.default.toBase58()]=r[ee.toBase58()],r}async function vn({connection:i,address:e}){let t=await Ye(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Wi(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new cn({key:s,state:cn.deserialize(o.data)});n[s.toString()]=a,un[s.toString()]=a}return n}var un={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new cn({key:new Wi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:cn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var ln=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.api=e.api}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await jo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=an(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Ft.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(K({},t||{})):this.build(t)}build(e){var n;let t=new Ot;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var u;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=r||{},c=o!=null?o:await kt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),pt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await Vn(this.connection,t,this.signers.find(l=>l.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(m=>m.transaction.instructions.length>0),s=[r,...o.map(m=>m.transaction)],a=[this.signers,...o.map(m=>m.signers)],c=[...this.instructionTypes,...o.map(m=>m.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async m=>{var y;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{},f=p!=null?p:await kt(this.connection,this.blockhashCommitment);if((y=this.owner)!=null&&y.isKeyPair){if(l){let b=[];for(let h of s){let w=await Vn(this.connection,h,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async b=>(b.recentBlockhash=f,await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((w,A)=>(w.recentBlockhash=f,a[A].length&&w.sign(...a[A]),w));pt(b);let h=await this.signAllTransactions(b);if(l){let w=0,A=[],k=async()=>{if(!h[w])return;let P=await this.connection.sendRawTransaction(h[w].serialize(),{skipPreflight:g});A.push({txId:P,status:"sent",signedTx:h[w]}),d==null||d([...A]),w++,this.connection.onSignature(P,I=>{let x=A.findIndex(O=>O.txId===P);x>-1&&(A[x].status=I.err?"error":"success"),d==null||d([...A]),I.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:h}}else{let w=[];for(let A=0;A<h.length;A+=1){let k=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:g});w.push(k)}return{txIds:w,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=ht(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=K(K({},this.cluster==="devnet"?{}:un),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let g of a)s[g]===void 0&&c.push(new Ft(g));let u=await vn({connection:this.connection,address:c});for(let[g,f]of Object.entries(u))s[g]=f;let m=new Et({payerKey:this.feePayer,recentBlockhash:r?Ft.default.toBase58():await kt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let l=new Dt(m);return l.sign(this.signers),{builder:this,transaction:l,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var h;let{recentBlockHash:f,skipPreflight:y=!0,sendAndConfirm:b}=g||{};if(f&&(l.message.recentBlockhash=f),pt([l]),(h=this.owner)!=null&&h.isKeyPair){let w=await this.connection.sendTransaction(l,{skipPreflight:y});if(b){let{lastValidBlockHeight:A,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:A,signature:w},"confirmed")}return{txId:w,signedTx:l}}if(this.signAllTransactions){let w=await this.signAllTransactions([l]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:y}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(m=>m.builder.instructions.length>0),s=[r,...o.map(m=>m.transaction)],a=[this.signers,...o.map(m=>m.signers)],c=[...this.instructionTypes,...o.map(m=>m.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(m,l)=>{m.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async m=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),pt(s),(f=this.owner)!=null&&f.isKeyPair){if(l){let y=[];for(let b of s){let h=await this.connection.sendTransaction(b,{skipPreflight:g}),{lastValidBlockHeight:w,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:w,signature:h},"confirmed"),y.push(h)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(l){let b=0,h=[],w=async()=>{if(!y[b])return;let A=await this.connection.sendTransaction(y[b],{skipPreflight:g});h.push({txId:A,status:"sent",signedTx:y[b]}),d==null||d([...h]),b++,this.connection.onSignature(A,k=>{let P=h.findIndex(I=>I.txId===A);P>-1&&(h[P].status=k.err?"error":"success"),d==null||d([...h]),k.err||w()},"processed"),this.connection.getSignatureStatus(A)};return w(),{txIds:[],signedTxs:y}}else{let b=[];for(let h=0;h<y.length;h+=1){let w=await this.connection.sendTransaction(y[h],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var m;let u=e||{},{computeBudgetConfig:t}=u,n=ht(u,["computeBudgetConfig"]),r=t?an(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,d)=>G(K({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],p=t?[...r.instructions,...d]:d,f=[...new Set(d.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>new Ft(y));if(c.length<12&&Lt({instructions:p,payer:this.feePayer,signers:f})||Lt({instructions:d,payer:this.feePayer,signers:f}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Lt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:f})?s.push(new Ot().add(...r.instructions,...c)):s.push(new Ot().add(...c)),a.push(Array.from(new Set(c.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(y=>o[y]).filter(y=>y!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(p=>p.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Lt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new Ot().add(...r.instructions,...c)):s.push(new Ot().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),(m=this.owner)!=null&&m.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||l.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:d,onTxUpdate:p,recentBlockHash:g,skipPreflight:f=!0}=l||{},y=g!=null?g:await kt(this.connection,this.blockhashCommitment);if(s.forEach(async(h,w)=>{h.recentBlockhash=y,a[w].length&&h.sign(...a[w])}),pt(s),(b=this.owner)!=null&&b.isKeyPair){if(d){let h=[];for(let w of s){let A=await Vn(this.connection,w,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(A)}return{txIds:h,signedTxs:s}}return{txIds:await Promise.all(s.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let h=await this.signAllTransactions(s);if(d){let w=0,A=[],k=async()=>{if(!h[w])return;let P=await this.connection.sendRawTransaction(h[w].serialize(),{skipPreflight:f});A.push({txId:P,status:"sent",signedTx:h[w]}),p==null||p([...A]),w++,this.connection.onSignature(P,I=>{let x=A.findIndex(O=>O.txId===P);x>-1&&(A[x].status=I.err?"error":"success"),p==null||p([...A]),I.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.txId),signedTxs:h}}else{let w=[];for(let A=0;A<h.length;A+=1){let k=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:f});w.push(k)}return{txIds:w,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var b;let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=y,o=ht(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=K(K({},this.cluster==="devnet"?{}:un),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let h of a)s[h]===void 0&&c.push(new Ft(h));let u=await vn({connection:this.connection,address:c});for(let[h,w]of Object.entries(u))s[h]=w;let m=t?an(t):{instructions:[],instructionTypes:[]},l=await kt(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,w)=>G(K({},h),{[w.publicKey.toBase58()]:w}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(h=>{let w=[...f,h],A=t?[...m.instructions,...w]:w;if(f.length<12&&Mt({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Mt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(h);else{if(f.length===0)throw Error("item ins too big");let k={};for(let P of[...new Set(a)])s[P]!==void 0&&(k[P]=s[P]);if(t&&Mt({instructions:[...m.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let P=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...m.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Dt(P))}else{let P=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Dt(P))}g.push(Array.from(new Set(f.map(P=>P.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==void 0)),f=[h]}}),f.length>0){let w=[...new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Mt({instructions:[...m.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let A=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...m.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Dt(A))}else{let A=new Et({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Dt(A))}g.push(w)}return(b=this.owner)!=null&&b.signer&&g.forEach(h=>{h.some(w=>w.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async h=>{var I;let{sequentially:w,onTxUpdate:A,recentBlockHash:k,skipPreflight:P=!0}=h||{};if(p.map(async(x,O)=>{g[O].length&&x.sign(g[O]),k&&(x.message.recentBlockhash=k)}),pt(p),(I=this.owner)!=null&&I.isKeyPair){if(w){let x=[];for(let O of p){let E=await this.connection.sendTransaction(O,{skipPreflight:P}),{lastValidBlockHeight:R,blockhash:Z}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:Z,lastValidBlockHeight:R,signature:E},"confirmed"),x.push(E)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:P}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(w){let O=0,E=[],R=async()=>{if(!x[O])return;let Z=await this.connection.sendTransaction(x[O],{skipPreflight:P});E.push({txId:Z,status:"sent",signedTx:x[O]}),A==null||A([...E]),O++,this.connection.onSignature(Z,ne=>{let le=E.findIndex(ie=>ie.txId===Z);le>-1&&(E[le].status=ne.err?"error":"success"),A==null||A([...E]),ne.err||R()},"processed"),this.connection.getSignatureStatus(Z)};return R(),{txIds:[],signedTxs:x}}else{let O=[];for(let E=0;E<x.length;E+=1){let R=await this.connection.sendTransaction(x[E],{skipPreflight:P});O.push(R)}return{txIds:O,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function _n(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 z}from"@solana/web3.js";var wu=new z("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),hu=new z("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Au=new z("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pu=new z("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Tu=new z("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ku=new z("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),xu=new z("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Bu=new z("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Iu=new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Cu=new z("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Su=new z("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ku=new z("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Nu=new z("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ru=new z("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Lu=new z("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Mu=new z("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fu=new z("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ou=new z("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Eu=new z("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Zo=new z("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Yo=new z("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Qo=new z("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Du={SERUM_MARKET:z.default,OPENBOOK_MARKET:new z("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:z.default,FarmV3:new z("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new z("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new z("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new z("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new z("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new z("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new z("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Zo,CREATE_CPMM_POOL_AUTH:Yo,CREATE_CPMM_POOL_FEE_ACC:Qo,FEE_DESTINATION_ID:new z("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";function De(i,e,t){return Se([i.toBuffer(),(t!=null?t:$o).toBuffer(),e.toBuffer()],new Jo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import _e from"bn.js";var _t=1e4;function ae(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=G(K({},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 _e(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===_t){let c=new _e(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=qn(i.mul(new _e(_t)),new _e(_t-o.transferFeeBasisPoints)),u=new _e(o.maximumFee.toString()),m=c.sub(i).gt(u)?i.add(u):c,l=qn(m.mul(new _e(o.transferFeeBasisPoints)),new _e(_t)),d=l.gt(s)?s:l;return{amount:m,fee:d,expirationTime:a}}else{let c=qn(i.mul(new _e(o.transferFeeBasisPoints)),new _e(_t)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function ft(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function qn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new _e(0))?t.add(new _e(1)):t}import{PublicKey as ll}from"@solana/web3.js";import{MintLayout as dl,TOKEN_PROGRAM_ID as fl}from"@solana/spl-token";var Wn=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=ht(o,["address","programId","decimals"]);return K({chainId:101,address:mt(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Gn=i=>i?G(K({},i),{transferFeeConfigAuthority:i.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:i.withdrawWithheldAuthority.toBase58(),withheldAmount:i.withheldAmount.toString(),olderTransferFee:G(K({},i.olderTransferFee),{epoch:i.olderTransferFee.epoch.toString(),maximumFee:i.olderTransferFee.maximumFee.toString()}),newerTransferFee:G(K({},i.newerTransferFee),{epoch:i.newerTransferFee.epoch.toString(),maximumFee:i.newerTransferFee.maximumFee.toString()})}):void 0;var Un=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),vt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=pe(t)}createTxBuilder(e){return this.scope.checkOwner(),new ln({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Un(e))}logInfo(...e){this.logger.info(Un(e))}logAndCreateError(...e){let t=Un(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import Ne from"bn.js";var j=new Ne(0),He=new Ne(1),Qe=new Ne(-1),Ke=new Ne(1).shln(64),mn=new Ne(1).shln(128),Xn=Ke.sub(He),Vt=64,Gi=mn.subn(1),xe=-443636,Be=-xe,st=new Ne("4295048016"),at=new Ne("79226673521066979257578248091"),Bl=new Ne("4295048017"),Il=new Ne("79226673521066979257578248090"),Ui=16,Xi="59543866431248",Hi="184467440737095516",zi="15793534762490258745",dn=new Ne(10).pow(new Ne(6)),es=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(es||{}),Cl={[500]:10,[3e3]:60,[1e4]:200},Sl={version:6,liquidity:j,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:j,feeGrowthGlobalX64B:j,protocolFeesTokenA:j,protocolFeesTokenB:j,swapInAmountTokenA:j,swapOutAmountTokenB:j,swapInAmountTokenB:j,swapOutAmountTokenA:j,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},ji={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},Kl=new Ne("18446744073700000000");import q from"bn.js";function Zi(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function Rl(i){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,i,!1),new Uint8Array(e)}function Ll(i){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,i,!1),new Uint8Array(e)}function pn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Hn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function zn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function qt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Yi(i,e){return qt(i,e)?null:Hn(i,e)}function Qi(i,e){return qt(i,e)?null:zn(i,e)}var ts=Buffer.from("amm_config","utf8"),ns=Buffer.from("pool","utf8"),is=Buffer.from("pool_vault","utf8"),rs=Buffer.from("pool_reward_vault","utf8"),Ji=Buffer.from("position","utf8"),os=Buffer.from("tick_array","utf8"),ss=Buffer.from("operation","utf8"),as=Buffer.from("pool_tick_array_bitmap_extension","utf8");function El(i,e){return Se([ts,Zi(e)],i)}function $i(i,e,t,n){return Se([ns,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function jn(i,e,t){return Se([is,e.toBuffer(),t.toBuffer()],i)}function er(i,e,t){return Se([rs,e.toBuffer(),t.toBuffer()],i)}function J(i,e,t){return Se([os,e.toBuffer(),pn(t)],i)}function gt(i,e,t,n){return Se([Ji,e.toBuffer(),pn(t),pn(n)],i)}function Re(i,e){return Se([Ji,e.toBuffer()],i)}function fn(i){return Se([Buffer.from("metadata","utf8"),Tt.toBuffer(),i.toBuffer()],Tt)}function Wt(i){return Se([ss],i)}function ve(i,e){return Se([as,e.toBuffer()],i)}import{PublicKey as Ve}from"@solana/web3.js";import ue from"bn.js";import xs from"bn.js";import{PublicKey as bs}from"@solana/web3.js";import rr,{isBN as or}from"bn.js";import{bits as vl,BitStructure as Vl,blob as cs,Blob as ql,cstr as Wl,f32 as Gl,f32be as Ul,f64 as Xl,f64be as Hl,greedy as zl,Layout as us,ns64 as jl,ns64be as Zl,nu64 as Yl,nu64be as Ql,offset as Jl,s16 as $l,s16be as em,s24 as tm,s24be as nm,s32 as ls,s32be as im,s40 as rm,s40be as om,s48 as sm,s48be as am,s8 as cm,seq as ms,struct as um,Structure as ds,u16 as ps,u16be as lm,u24 as mm,u24be as dm,u32 as pm,u32be as fm,u40 as gm,u40be as bm,u48 as ym,u48be as wm,u8 as fs,UInt as gs,union as hm,Union as Am,unionLayoutDiscriminator as Pm,utf8 as Tm}from"@solana/buffer-layout";var Zn=us,tr=ds;var Yn=gs;var nr=fs,xt=ps;var Pe=ls;var ir=ms;var Le=cs;var Gt=class extends Zn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new rr(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 rr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function ce(i){return new Yn(1,i)}function Je(i){return new Yn(4,i)}function D(i){return new Gt(8,!1,i)}function U(i){return new Gt(16,!1,i)}function sr(i){return new Gt(16,!0,i)}var gn=class extends Zn{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 oe(i){return new gn(Le(32),e=>new bs(e),e=>e.toBuffer(),i)}function ze(i){return new gn(nr(),ys,ws,i)}function ys(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ws(i){return i?1:0}var Qn=class extends tr{decode(e,t){return super.decode(e,t)}};function te(i,e,t){return new Qn(i,e,t)}function se(i,e,t){let n,r=typeof e=="number"?e:or(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=or(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 ir(i,r,t)}var Jn=14,$e=class{static maxTickInTickarrayBitmap(e){return e*fe*bt}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(!H.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-H.tickCount(n):t+H.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*fe,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let m=e.shln(1024-u-1),l=Yi(1024,m);if(l!==null){let d=(u-l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let m=e.shrn(u),l=Qi(1024,m);if(l!==null){let d=(u+l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-H.tickCount(n)}}}},Ut=class{static getBitmapOffset(e,t){if(!H.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=$e.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=$e.maxTickInTickarrayBitmap(e),n=-t;if(Be<=t)throw Error(`extensionTickBoundary check error: ${Be}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);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:S.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=H.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}=$e.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=S.mergeTickArrayBitmap(e).shln(bt-1-a),u=qt(512,c)?null:Hn(512,c);if(u!==null){let m=t-u*H.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o}}else{let c=S.mergeTickArrayBitmap(e).shrn(a),u=qt(512,c)?null:zn(512,c);if(u!==null){let m=t+u*H.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:s-H.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%$e.maxTickInTickarrayBitmap(t),r=Math.floor(n/H.tickCount(t));return e<0&&n!=0&&(r=bt-r),r}};var ar=te([Le(8),ce("bump"),xt("index"),oe(""),Je("protocolFeeRate"),Je("tradeFeeRate"),xt("tickSpacing"),se(D(),8,"")]),hs=te([Je("blockTimestamp"),U("sqrtPriceX64"),U("cumulativeTimePriceX64"),se(U(),1,"")]),$n=te([Le(8),ze("initialized"),oe("poolId"),se(hs,1e3,"observations"),se(U(),5,"")]),As=te([ce("rewardState"),D("openTime"),D("endTime"),D("lastUpdateTime"),U("emissionsPerSecondX64"),D("rewardTotalEmissioned"),D("rewardClaimed"),oe("tokenMint"),oe("tokenVault"),oe("creator"),U("rewardGrowthGlobalX64")]),bn=te([Le(8),ce("bump"),oe("ammConfig"),oe("creator"),oe("mintA"),oe("mintB"),oe("vaultA"),oe("vaultB"),oe("observationId"),ce("mintDecimalsA"),ce("mintDecimalsB"),xt("tickSpacing"),U("liquidity"),U("sqrtPriceX64"),Pe("tickCurrent"),xt("observationIndex"),xt("observationUpdateDuration"),U("feeGrowthGlobalX64A"),U("feeGrowthGlobalX64B"),D("protocolFeesTokenA"),D("protocolFeesTokenB"),U("swapInAmountTokenA"),U("swapOutAmountTokenB"),U("swapInAmountTokenB"),U("swapOutAmountTokenA"),ce("status"),se(ce(),7,""),se(As,3,"rewardInfos"),se(D(),16,"tickArrayBitmap"),D("totalFeesTokenA"),D("totalFeesClaimedTokenA"),D("totalFeesTokenB"),D("totalFeesClaimedTokenB"),D("fundFeesTokenA"),D("fundFeesTokenB"),D("startTime"),se(D(),15*4-3,"padding")]),Ps=te([U("growthInsideLastX64"),D("rewardAmountOwed")]),yn=te([Le(8),ce("bump"),oe("nftMint"),oe("poolId"),Pe("tickLower"),Pe("tickUpper"),U("liquidity"),U("feeGrowthInsideLastX64A"),U("feeGrowthInsideLastX64B"),D("tokenFeesOwedA"),D("tokenFeesOwedB"),se(Ps,3,"rewardInfos"),se(D(),8,"")]),Gm=te([Le(8),ce("bump"),oe("poolId"),Pe("tickLowerIndex"),Pe("tickUpperIndex"),U("liquidity"),U("feeGrowthInsideLastX64A"),U("feeGrowthInsideLastX64B"),D("tokenFeesOwedA"),D("tokenFeesOwedB"),se(U(),3,"rewardGrowthInside"),se(D(),8,"")]),Ts=te([Pe("tick"),sr("liquidityNet"),U("liquidityGross"),U("feeGrowthOutsideX64A"),U("feeGrowthOutsideX64B"),se(U(),3,"rewardGrowthsOutsideX64"),se(Je(),13,"")]),Xt=te([Le(8),oe("poolId"),Pe("startTickIndex"),se(Ts,fe,"ticks"),ce("initializedTickCount"),se(ce(),115,"")]),cr=te([Le(329),se(oe(),100,"whitelistMints")]),ur=te([Le(8),oe("poolId"),se(se(D(),8),Jn,"positiveTickArrayBitmap"),se(se(D(),8),Jn,"negativeTickArrayBitmap")]);var ks=15,H=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=S.getTickArrayStartIndexByTick(r,o),m=S.getInitializedTickArrayInRange(s,a,o,u,Math.floor(ks/2));for(let p=0;p<m.length;p++){let{publicKey:g}=J(t,n,m[p]);c.push(g)}let l=(await Ye(e,c)).map(p=>p!==null?Xt.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let g=l[p];g!==null&&(d[g.startTickIndex]=G(K({},g),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=S.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let m=n[u];if(m===void 0)continue;let{nextTick:l,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,m,s);[a,c,u]=[l,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/H.tickCount(t)),a=n?S.searchLowBitFromStart(r,o,s-1,1,t):S.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=fe-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<fe;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=J(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=S.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let m;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){m=d;break}c=c-1}else for(c=c+1;c<fe;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){m=d;break}c=c+1}let{publicKey:l}=J(e,t,a);return{initializedTick:m,tickArrayAddress:l,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(S.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=S.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return fe*e}};var fe=60,bt=512,S=class{static getTickArrayAddressByTick(e,t,n,r){let o=S.getTickArrayStartIndexByTick(n,r),{publicKey:s}=J(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=S.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=fe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=H.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)*H.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*fe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*fe,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*fe:e+t*fe}static mergeTickArrayBitmap(e){let t=new xs(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*fe));return[...S.searchLowBitFromStart(e,t,s-1,o,n),...S.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return S.searchHightBitFromStart(e,t,0,bt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=S.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=J(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>S.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[u].testn(m)&&a.push(n),n--,a.length===r)break}let c=H.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>S.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[u].testn(m)&&a.push(n),n++,a.length===r)break}let c=H.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<xe||e>Be}static nextInitTick(e,t,n,r,o){if(H.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<fe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=fe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<fe;){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=_.getSqrtPriceX64FromTick(t),o=_.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new C(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new C(1).div(t),o=yt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=_.getSqrtPriceX64FromTick(o),a=_.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new C(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=_.getSqrtPriceX64FromTick(t),o=_.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new C(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new C(1).div(t),o=yt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=_.getSqrtPriceX64FromTick(o),a=_.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new C(1).div(a)}}};import je from"bn.js";var Ht=class{static getfeeGrowthInside(e,t,n){let r=new je(0),o=new je(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 je(0),a=new je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}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,Ke),c=t.tokenFeesOwedA.add(a),u=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),m=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:m}}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,Ke),c=t.tokenFeesOwedA.add(a),u=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),m=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:m}}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 c=s[a],u=t.rewardInfos[a],m=v.wrappingSubU128(c,u.growthInsideLastX64),l=v.mulDivFloor(m,t.liquidity,Ke),d=u.rewardAmountOwed.add(l);o.push(d)}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 c=s[a],u=t.rewardInfos[a],m=v.wrappingSubU128(c,u.growthInsideLastX64),l=v.mulDivFloor(m,t.liquidity,Ke),d=u.rewardAmountOwed.add(l);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new je(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 c=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new je(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 c=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,b,h,w;let a=_.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),c=_.getSqrtPriceX64FromTick(t.tickLower),u=_.getSqrtPriceX64FromTick(t.tickUpper),m=o?1+r:1-r,l=X.getAmountsFromLiquidity(a,c,u,n,o),[d,p]=[ae(l.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ae(l.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,f]=[ae(new je(new C(l.amountA.toString()).mul(m).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ae(new je(new C(l.amountB.toString()).mul(m).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:ft(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as lr}from"@solana/spl-token";var ge=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:m,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,a);if(!u||m===void 0||!l)throw new Error("Invalid tick array");c.push(l);let{allTrade:d,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:y}=wt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,m,o,s);return c.push(...g),{allTrade:d,expectedAmountOut:p.mul(Qe),remainingAccounts:c,executionPrice:f,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!m)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=J(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(m);let{amountCalculated:l,accounts:d,sqrtPriceX64:p,feeAmount:g}=wt.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),u,o);return a.push(...d),{expectedAmountIn:l,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ge.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Ut.checkTickArrayIsInit(H.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):S.checkTickArrayIsInitialized(S.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=J(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,H.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=J(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/H.tickCount(e.tickSpacing)),r=t?S.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):S.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=H.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=$e.nextInitializedTickArrayStartIndex(S.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Ut.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Be)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let m=0;m<o.length;m++){let l=o[m],d=(u=(a=t.rewardDefaultInfos[m])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(l.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=G(K({},l),{perSecond:v.x64ToDecimal(l.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ve(d)});if(p.tokenMint.equals(Ve.default))continue;if(n<=p.openTime.toNumber()||r.eq(j)){s.push(p);continue}let g=new ue(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=v.mulDivFloor(f,p.emissionsPerSecondX64,r),b=p.rewardGrowthGlobalX64.add(y),h=v.mulDivFloor(f,p.emissionsPerSecondX64,Ke),w=p.rewardTotalEmissioned.add(h);s.push(G(K({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=S.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=$e.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=H.getArrayStartIndex(Be,e)+H.tickCount(e)),n<xe&&(n=H.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!H.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/H.tickCount(t)*bt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await ot(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=ur.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=S.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),m=S.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let l of m){let{publicKey:d}=J(c.programId,c.id,l);o.push({pubkey:d}),r[d.toString()]=c.id}}let s=await ot(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let m=Xt.decode(c.accountInfo.data);a[u.toString()][m.startTickIndex]=G(K({},m),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(m=>m.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(Re(p,d).publicKey);let m=await Ye(t,u,{batchRequest:r}),l={};for(let d of m){if(d===null)continue;let p=yn.decode(d.data),g=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,b=S._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),h=S._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:w,amountB:A}=X.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),k=1/(1-Math.sqrt(Math.sqrt(b.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:h.price,amountA:w,amountB:A,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>G(K({},x),{pendingReward:new ue(0)})),leverage:k,tokenFeeAmountA:new ue(0),tokenFeeAmountB:new ue(0)}];let P=await S.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),I=await S.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);l[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=P,l[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=I}if(o){let d=Object.values(l),p=await Ye(t,d,{batchRequest:r}),g={};for(let f=0;f<d.length;f++){let y=p[f];if(y===null)continue;let b=d[f].toString();g[b]=Xt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let b of y){let h=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,A=g[l[h].toString()],k=g[l[w].toString()],P=A.ticks[S.getTickOffsetInArray(b.tickLower,f.tickSpacing)],I=k.ticks[S.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await Ht.GetPositionFees(f,b,P,I),E=await Ht.GetPositionRewards(f,b,P,I);b.tokenFeeAmountA=x.gte(new ue(0))?x:new ue(0),b.tokenFeeAmountB=O.gte(new ue(0))?O:new ue(0);for(let R=0;R<E.length;R++)b.rewardInfos[R].pendingReward=E[R].gte(new ue(0))?E[R]:new ue(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new C(0),catchLiquidityInsufficient:c=!1}){var Z;let u,m=n.toBase58()===e.mintA.address,[l,d]=m?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new C(0))?u=m?st.add(new ue(1)):at.sub(new ue(1)):u=_.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ae(o,l,r,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:y,executionPrice:b,feeAmount:h}=ge.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((Z=p.fee)!=null?Z:j),u,c),w=ae(f,d,r,!1),A=_.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),k=m?A:new C(1).div(A),P=f.mul(new ue(Math.floor((1-s)*1e10))).div(new ue(1e10)),I=ae(P,d,r,!1),x=m?e.currentPrice:new C(1).div(e.currentPrice),O=new C(k).sub(x).abs(),E=x,R=new dt(new C(O).mul(10**15).toFixed(0),new C(E).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:w,minAmountOut:I,expirationTime:ft(p.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:R,fee:h,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,m]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,d]=[new Xe(G(K({},u),{mint:u.address,isToken2022:u.programId===lr.toBase58()})),new Xe(G(K({},m),{mint:m.address,isToken2022:m.programId===lr.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:h,executionPrice:w,priceImpact:A,fee:k,remainingAccounts:P,executionPriceX64:I}=ge.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ve(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),x=G(K({},g),{amount:new Ae(l,g.amount),fee:g.fee===void 0?void 0:new Ae(l,g.fee)}),O=G(K({},f),{amount:new Ae(d,f.amount),fee:f.fee===void 0?void 0:new Ae(d,f.fee)}),E=G(K({},y),{amount:new Ae(d,y.amount),fee:y.fee===void 0?void 0:new Ae(d,y.fee)}),R=new Ee({baseToken:l,denominator:new ue(10).pow(new ue(20+l.decimals)),quoteToken:d,numerator:h.mul(new C(10**(20+d.decimals))).toFixed(0)}),Z=new Ee({baseToken:l,denominator:new ue(10).pow(new ue(20+l.decimals)),quoteToken:d,numerator:w.mul(new C(10**(20+d.decimals))).toFixed(0)}),ne=new Ae(l,k);return{allTrade:p,realAmountIn:x,amountOut:O,minAmountOut:E,expirationTime:b,currentPrice:R,executionPrice:Z,priceImpact:A,fee:ne,remainingAccounts:P,executionPriceX64:I}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,f,y;let o=e[t],s=S.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=S.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),m=Math.min(a,o.priceMax)-c,l=a-s,d=o.priceMax-o.priceMin,p;return m<=0?p=0:l===m?p=d/m:d===m?p=m/l:p=m/d*(m/l),{feeApr:o.feeApr*p,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*p,((f=o.rewardApr[1])!=null?f:0)*p,((y=o.rewardApr[2])!=null?y:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,m=e[n],l=r[mt(e.mintA.address).toString()],d=r[mt(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!m||!l||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=_.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),y=_.getSqrtPriceX64FromTick(s),b=_.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=X.getAmountsFromLiquidityWithSlippage(f,y,b,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:k}=X.getAmountsFromLiquidityWithSlippage(f,y,b,o,!1,!1,0),P=new C(h.toString()).div(new C(10).pow(p)).mul(l.value).add(new C(w.toString()).div(new C(10).pow(g)).mul(d.value)),I=new C(A.toString()).div(new C(10).pow(p)).mul(l.value).add(new C(k.toString()).div(new C(10).pow(g)).mul(d.value)),x=new C(1).div(P.add(I)),E=new C(m.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),R=3600*24*365,Z=e.rewardDefaultInfos.map(ne=>{var Q,ci;let le=ne.mint.decimals,ie=r[ne.mint.address];return c<((Q=ne.startTime)!=null?Q:0)||c>((ci=ne.endTime)!=null?ci:0)||!ne.perSecond||!ie||le===void 0?0:new C(ie.value).mul(new C(ne.perSecond).mul(R)).div(new C(10).pow(le)).mul(x).mul(100).toNumber()});return{feeApr:E,rewardsApr:Z,apr:E+Z.reduce((ne,le)=>ne+le,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var b,h;let m=_.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),l=_.getSqrtPriceX64FromTick(n),d=_.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,g=ae(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,c,!u),f=new ue(new C(g.amount.sub((h=g.fee)!=null?h:j).toString()).mul(p).toFixed(0)),y;if(m.lte(l))y=t?X.getLiquidityFromTokenAmountA(l,d,f,!a):new ue(0);else if(m.lte(d)){let w=X.getLiquidityFromTokenAmountA(m,d,f,!a),A=X.getLiquidityFromTokenAmountB(l,m,f);y=t?w:A}else y=t?new ue(0):X.getLiquidityFromTokenAmountB(l,d,f);return ge.getAmountsFromLiquidity({epochInfo:c,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,b,h,w;let c=_.getSqrtPriceX64FromTick(n),u=_.getSqrtPriceX64FromTick(r),m=a?1+s:1-s,l=X.getAmountsFromLiquidity(_.priceToSqrtPriceX64(new C(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,p]=[ae(l.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ae(l.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,f]=[ae(l.amountA.muln(m),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ae(l.amountB.muln(m),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:ft(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ve(c.id));(await Ye(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=bn.decode(c.data))});let s=t.map(c=>ve(new Ve(c.programId),new Ve(c.id)).publicKey),a=await ge.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>G(K({},c),{[u.id]:G(K({},n[u.id]),{id:new Ve(u.id),version:6,programId:new Ve(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:G(K({},u.config),{id:new Ve(u.config.id),fundOwner:""}),currentPrice:new C(u.price),exBitmapInfo:a[ve(new Ve(u.programId),new Ve(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function Nd({poolInfo:i,tickLower:e,tickUpper:t,amountA:n,amountB:r,slippage:o,add:s,epochInfo:a,amountHasFee:c}){var w,A,k,P;let[u,m,l,d]=e<t?[e,t,n,r]:[t,e,r,n],p=_.priceToSqrtPriceX64(new C(i.price),i.mintA.decimals,i.mintB.decimals),g=_.getSqrtPriceX64FromTick(u),f=_.getSqrtPriceX64FromTick(m),[y,b]=[ae(l,(w=i.mintA.extensions)==null?void 0:w.feeConfig,a,!c),ae(d,(A=i.mintB.extensions)==null?void 0:A.feeConfig,a,!c)],h=X.getLiquidityFromTokenAmounts(p,g,f,y.amount.sub((k=y.fee)!=null?k:j),b.amount.sub((P=b.fee)!=null?P:j));return X.getAmountsOutFromLiquidity({poolInfo:i,tickLower:e,tickUpper:t,liquidity:h,slippage:o,add:s,epochInfo:a,amountAddFee:!c})}var ei={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function mr(i){return G(K({},i),{type:"Concentrated",programId:i.programId.toString(),id:i.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:i.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:i.ammConfig.tradeFeeRate,openTime:i.startTime.toString(),tvl:0,day:ei,week:ei,month:ei,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,config:G(K({},i.ammConfig),{id:i.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(j)||(o=o.add(He)),o}static mulDivFloor(e,t,n){if(n.eq(j))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(j))throw new Error("division by 0");return e.mul(t).add(n.sub(He)).div(n)}static x64ToDecimal(e,t){return new C(e.toString()).div(C.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new q(e.mul(C.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(mn).sub(t).mod(mn)}};function ye(i,e){return ti(i.mul(e),64,256)}function Bs(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function ti(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var _=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(C.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(C.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(j))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(j))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(j))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(j))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(j))return e;let o=t.shln(Vt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,He,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(Vt);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,He,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<xe||e>Be)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new q("18445821805675395072"):new q("18446744073709551616");return(t&2)!=0&&(n=ye(n,new q("18444899583751176192"))),(t&4)!=0&&(n=ye(n,new q("18443055278223355904"))),(t&8)!=0&&(n=ye(n,new q("18439367220385607680"))),(t&16)!=0&&(n=ye(n,new q("18431993317065453568"))),(t&32)!=0&&(n=ye(n,new q("18417254355718170624"))),(t&64)!=0&&(n=ye(n,new q("18387811781193609216"))),(t&128)!=0&&(n=ye(n,new q("18329067761203558400"))),(t&256)!=0&&(n=ye(n,new q("18212142134806163456"))),(t&512)!=0&&(n=ye(n,new q("17980523815641700352"))),(t&1024)!=0&&(n=ye(n,new q("17526086738831433728"))),(t&2048)!=0&&(n=ye(n,new q("16651378430235570176"))),(t&4096)!=0&&(n=ye(n,new q("15030750278694412288"))),(t&8192)!=0&&(n=ye(n,new q("12247334978884435968"))),(t&16384)!=0&&(n=ye(n,new q("8131365268886854656"))),(t&32768)!=0&&(n=ye(n,new q("3584323654725218816"))),(t&65536)!=0&&(n=ye(n,new q("696457651848324352"))),(t&131072)!=0&&(n=ye(n,new q("26294789957507116"))),(t&262144)!=0&&(n=ye(n,new q("37481735321082"))),e>0&&(n=Gi.div(n)),n}static getTickFromPrice(e,t,n){return _.getTickFromSqrtPriceX64(_.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(at)||e.lt(st))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new q(t-64),r=Bs(n,32,128),o=new q("8000000000000000","hex"),s=0,a=new q(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new q(0))&&s<Ui;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),l=r.add(u).mul(new q(Xi)),d=ti(l.sub(new q(Hi)),64,128).toNumber(),p=ti(l.add(new q(zi)),64,128).toNumber();return d==p?d:_.getSqrtPriceX64FromTick(p).lte(e)?p:d}},yt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=_.getTickFromSqrtPriceX64(_.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=yt.getTickWithPriceAndTickspacing(e,t,n,r),s=_.getSqrtPriceX64FromTick(o);return _.sqrtPriceX64ToPrice(s,n,r)}},X=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(j))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Vt),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),He,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(j))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Ke):v.mulDivFloor(n,t.sub(e),Ke)}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,He,Xn):a.shrn(Vt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Xn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return X.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=X.getLiquidityFromTokenAmountA(e,n,r,!1),a=X.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return X.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:X.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new q(0)};if(e.lt(n)){let s=X.getTokenAmountAFromLiquidity(e,n,r,o),a=X.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new q(0),amountB:X.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=X.getAmountsFromLiquidity(e,t,n,r,s),m=o?1+a:1-a,l=new q(new C(c.toString()).mul(m).toFixed(0)),d=new q(new C(u.toString()).mul(m).toFixed(0));return{amountSlippageA:l,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,A,k;let u=_.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),m=_.getSqrtPriceX64FromTick(t),l=_.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=X.getAmountsFromLiquidity(u,m,l,r,s),[g,f]=[ae(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),ae(p.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[y,b]=[ae(new q(new C(p.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,c),ae(new q(new C(p.amountB.toString()).mul(d).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,c)];return{liquidity:r,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:b,expirationTime:ft(g.expirationTime,f.expirationTime)}}},wt=class{static swapCompute(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f=!1){if(d.eq(j))throw new Error("amountSpecified must not be 0");if(g||(g=s?st.add(He):at.sub(He)),s){if(g.lt(st))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(l))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(at))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(l))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(j),b={amountSpecifiedRemaining:d,amountCalculated:j,sqrtPriceX64:l,tick:u>p?Math.min(p+H.tickCount(m)-1,u):p,accounts:[],liquidity:c,feeAmount:new q(0)},h=p,w=n[p],A=0,k=!s&&w.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(j)&&!b.sqrtPriceX64.eq(g);){A>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let I=S.nextInitTick(w,b.tick,m,s,k),x=I||null,O=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let R=ge.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:m,tickArrayBitmap:r,exBitmapInfo:o},h,s);if(!R.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}h=R.nextStartIndex;let{publicKey:Z}=J(e,t,h);O=Z,w=n[h];try{x=S.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}P.tickNext=x.tick,P.initialized=x.liquidityGross.gtn(0),p!==h&&O&&(b.accounts.push(O),p=h),P.tickNext<xe?P.tickNext=xe:P.tickNext>Be&&(P.tickNext=Be),P.sqrtPriceNextX64=_.getSqrtPriceX64FromTick(P.tickNext);let E;if(s&&P.sqrtPriceNextX64.lt(g)||!s&&P.sqrtPriceNextX64.gt(g)?E=g:E=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=wt.swapStepCompute(b.sqrtPriceX64,E,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let R=x.liquidityNet;s&&(R=R.mul(Qe)),b.liquidity=X.addDelta(b.liquidity,R)}k=P.tickNext!=b.tick&&!s&&w.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let R=_.getTickFromSqrtPriceX64(b.sqrtPriceX64);k=R!=b.tick&&!s&&w.startTickIndex===R,b.tick=R}++A}try{let{nextStartIndex:P,isExist:I}=H.nextInitializedTickArray(b.tick,m,s,r,o);I&&p!==P&&(b.accounts.push(J(e,t,P).publicKey),p=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:j,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new q(0),amountIn:new q(0),amountOut:new q(0),feeAmount:new q(0)},a=e.gte(t),c=r.gte(j);if(c){let m=v.mulDivFloor(r,dn.sub(new q(o.toString())),dn);s.amountIn=a?X.getTokenAmountAFromLiquidity(t,e,n,!0):X.getTokenAmountBFromLiquidity(e,t,n,!0),m.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=_.getNextSqrtPriceX64FromInput(e,n,m,a)}else s.amountOut=a?X.getTokenAmountBFromLiquidity(t,e,n,!1):X.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Qe).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=_.getNextSqrtPriceX64FromOutput(e,n,r.mul(Qe),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=X.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=X.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:X.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:X.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(Qe))&&(s.amountOut=r.mul(Qe)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new q(o),dn.sub(new q(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as Te,TOKEN_2022_PROGRAM_ID as lt,ASSOCIATED_TOKEN_PROGRAM_ID as wr}from"@solana/spl-token";import{PublicKey as B,TransactionInstruction as We,SystemProgram as Bt,Keypair as si}from"@solana/web3.js";import hr from"bn.js";import{PublicKey as Rs,Keypair as Ls}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ms}from"@solana/spl-token";import up from"bn.js";var Is=te([oe("mint"),oe("owner"),D("amount"),Je("delegateOption"),oe("delegate"),ce("state"),Je("isNativeOption"),D("isNative"),D("delegatedAmount"),Je("closeAuthorityOption"),oe("closeAuthority")]);function Cs(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function ni(i,...e){if(!Cs(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 ii(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 dr(i,e){ni(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var hn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),qe=(i,e)=>i<<32-e|i>>>e;var jd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ss(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function ri(i){return typeof i=="string"&&(i=Ss(i)),ni(i),i}var wn=class{clone(){return this._cloneInto()}},Zd={}.toString;function pr(i){let e=n=>i().update(ri(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Ks(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),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var fr=(i,e,t)=>i&e^~i&t,gr=(i,e,t)=>i&e^i&t^e&t,An=class extends wn{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=hn(this.buffer)}update(e){ii(this);let{view:t,buffer:n,blockLen:r}=this;e=ri(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=hn(e);for(;r<=o-s;s+=r)this.process(c,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){ii(this),dr(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 l=s;l<r;l++)t[l]=0;Ks(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=hn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,m=this.get();if(u>m.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,m[l],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 Ns=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]),ct=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ut=new Uint32Array(64),oi=class extends An{constructor(){super(64,32,8,!1),this.A=ct[0]|0,this.B=ct[1]|0,this.C=ct[2]|0,this.D=ct[3]|0,this.E=ct[4]|0,this.F=ct[5]|0,this.G=ct[6]|0,this.H=ct[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){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=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)ut[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let d=ut[l-15],p=ut[l-2],g=qe(d,7)^qe(d,18)^d>>>3,f=qe(p,17)^qe(p,19)^p>>>10;ut[l]=f+ut[l-7]+g+ut[l-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:m}=this;for(let l=0;l<64;l++){let d=qe(a,6)^qe(a,11)^qe(a,25),p=m+d+fr(a,c,u)+Ns[l]+ut[l]|0,f=(qe(n,2)^qe(n,13)^qe(n,22))+gr(n,r,o)|0;m=u,u=c,c=a,a=s+p|0,s=o,o=r,r=n,n=p+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,c=c+this.F|0,u=u+this.G|0,m=m+this.H|0,this.set(n,r,o,s,a,c,u,m)}roundClean(){ut.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var br=pr(()=>new oi);var pp=pe("Raydium_Util");function yr({fromPublicKey:i,programId:e=Ms}){let t=Ls.generate().publicKey.toBase58().slice(0,32);return{publicKey:Fs(i,t,e),seed:t}}function Fs(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=br(n);return new Rs(r)}var Ar=pe("Raydium_Clmm"),Ge={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},be=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g){let f=te([U("sqrtPriceX64"),D("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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let h=Buffer.from([...Ge.createPool,...b]);return new We({keys:y,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:m}=e,l=yr({fromPublicKey:r,programId:n}),[d,p]=[new B(o.address),new B(s.address)],g=[Bt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m?0:await t.getMinimumBalanceForRentExemption($n.span),space:$n.span,programId:n})],{publicKey:f}=$i(n,a,d,p),{publicKey:y}=jn(n,f,d),{publicKey:b}=jn(n,f,p);return g.push(this.createPoolInstruction(n,f,r,a,l.publicKey,d,y,new B(o.programId||Te),p,b,new B(s.programId||Te),ve(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[me.CreateAccount,me.ClmmCreatePool],address:{poolId:f,observationId:l.publicKey,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h,w,A,k,P,I,x,O,E){let R=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),U("liquidity"),D("amountMaxA"),D("amountMaxB"),ze("withMetadata"),ce("optionBaseFlag"),ze("baseFlag")]),Z=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ne=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:wr,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Z],le=Buffer.alloc(R.span);R.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:k,liquidity:P,amountMaxA:I,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},le);let ie=Buffer.from([...Ge.openPosition,...le]);return new We({keys:ne,programId:e,data:ie})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:m}){let l=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(m)g=new B((await m(1))[0]);else{let x=si.generate();l.push(x),g=x.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=J(d,p,f),{publicKey:h}=J(d,p,y),{publicKey:w}=De(n.wallet,g,Te),{publicKey:A}=fn(g),{publicKey:k}=Re(d,g),{publicKey:P}=gt(d,p,r,o),I=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,w,A,P,b,h,k,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),r,o,f,y,s,a,c,u);return{signers:l,instructions:[I],instructionTypes:[me.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:A,personalPosition:k,protocolPosition:P}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:m}){let l=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(m)g=new B((await m(1))[0]);else{let x=si.generate();l.push(x),g=x.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=J(d,p,f),{publicKey:h}=J(d,p,y),{publicKey:w}=De(n.wallet,g,Te),{publicKey:A}=fn(g),{publicKey:k}=Re(d,g),{publicKey:P}=gt(d,p,r,o),I=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,w,A,P,b,h,k,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),r,o,f,y,u,s,a,c,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ve(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:A,personalPosition:k,protocolPosition:P},instructions:[I],signers:l,instructionTypes:[me.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h,w,A,k,P,I,x,O,E){let R=te([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),U("liquidity"),D("amountMaxA"),D("amountMaxB"),ze("withMetadata"),ce("optionBaseFlag"),ze("baseFlag")]),Z=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ne=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:wr,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Z],le=Buffer.alloc(R.span);R.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:k,liquidity:new hr(0),amountMaxA:I==="MintA"?x:O,amountMaxB:I==="MintA"?O:x,withMetadata:P==="create",baseFlag:I==="MintA",optionBaseFlag:1},le);let ie=Buffer.from([...Ge.openPosition,...le]);return new We({keys:ne,programId:e,data:ie})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:m}){let l,d=[];if(m)l=new B((await m(1))[0]);else{let x=si.generate();d.push(x),l=x.publicKey}let[p,g]=[new B(e.programId),new B(e.id)],f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=J(p,g,f),{publicKey:h}=J(p,g,y),{publicKey:w}=De(n.wallet,l,Te),{publicKey:A}=fn(l),{publicKey:k}=Re(p,l),{publicKey:P}=gt(p,g,r,o),I=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,l,w,A,P,b,h,k,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(t.mintA.address),new B(t.mintB.address),r,o,f,y,s,a,c,u,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ve(p,g).publicKey:void 0);return{address:{nftMint:l,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:A,personalPosition:k,protocolPosition:P},instructions:[I],signers:d,instructionTypes:[me.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=te([]),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:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Ge.closePosition,...c]);return new We({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new B(e.programId),{publicKey:s}=De(n.wallet,r.nftMint,Te),{publicKey:a}=Re(o,r.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[me.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h){let w=te([U("liquidity"),D("amountMaxA"),D("amountMaxB"),ce("optionBaseFlag"),ze("baseFlag")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let I=Buffer.from([...Ge.increaseLiquidity,...P]);return new We({keys:k,programId:e,data:I})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new B(e.programId),new B(e.id)],m=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),l=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=J(c,u,m),{publicKey:p}=J(c,u,l),{publicKey:g}=De(r.wallet,n.nftMint,Te),{publicKey:f}=Re(c,n.nftMint),{publicKey:y}=gt(c,u,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(c,r.wallet,g,f,u,y,d,p,r.tokenAccountA,r.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,l])?ve(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},signers:[],instructions:[b],instructionTypes:[me.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new B(e.programId),new B(e.id)],m=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),l=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=J(c,u,m),{publicKey:p}=J(c,u,l),{publicKey:g}=De(r.wallet,n.nftMint,Te),{publicKey:f}=Re(c,n.nftMint),{publicKey:y}=gt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,g,f,u,y,d,p,r.tokenAccountA,r.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,l])?ve(c,u).publicKey:void 0)],signers:[],instructionTypes:[me.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h){let w=te([U("liquidity"),D("amountMaxA"),D("amountMaxB"),ce("optionBaseFlag"),ze("baseFlag")]),A=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(w.span);w.encode({liquidity:new hr(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},P);let I=Buffer.from([...Ge.increaseLiquidity,...P]);return new We({keys:k,programId:e,data:I})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b,h,w){let A=te([U("liquidity"),D("amountMinA"),D("amountMinB")]),k=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...k],I=Buffer.alloc(A.span);A.encode({liquidity:y,amountMinA:b,amountMinB:h},I);let x=Buffer.from([...Ge.decreaseLiquidity,...I]);return new We({keys:P,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,m]=[new B(e.programId),new B(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=J(u,m,l),{publicKey:g}=J(u,m,d),{publicKey:f}=De(r.wallet,n.nftMint,c),{publicKey:y}=Re(u,n.nftMint),{publicKey:b}=gt(u,m,n.tickLower,n.tickUpper),h=[];for(let A=0;A<e.rewardDefaultInfos.length;A++)h.push({poolRewardVault:new B(t.rewardInfos[A].vault),ownerRewardVault:r.rewardAccounts[A],rewardMint:new B(e.rewardDefaultInfos[A].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,r.wallet,f,y,m,b,p,g,r.tokenAccountA,r.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),h,o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?ve(u,m).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:w,instructionTypes:[me.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,m,l,d,p,g,f,y,b){let h=te([D("amount"),D("otherAmountThreshold"),U("sqrtPriceLimitX64"),ze("isBaseInput")]),w=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...l.map(I=>({pubkey:I,isSigner:!1,isWritable:!0}))],A=[{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:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},...w],k=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},k);let P=Buffer.from([...Ge.swap,...k]);return new We({keys:A,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[m,l]=[new B(e.programId),new B(e.id)],[d,p]=[new B(t.vault.A),new B(t.vault.B)],[g,f]=[new B(e.mintA.address),new B(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(m,r.wallet,l,new B(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?d:p,y?p:d,y?g:f,y?f:g,u,n,s,a,c,!0,ve(m,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[me.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,m,l,d){let p=te([D("openTime"),D("endTime"),U("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Bt.programId,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:he(m),endTime:he(l),emissionsPerSecondX64:d},f);let y=Buffer.from([...Ge.initReward,...f]);return new We({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a=er(o,s,r.mint).publicKey,c=Wt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new B(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[me.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,m,l,d){let p=te([ce("rewardIndex"),U("emissionsPerSecondX64"),D("openTime"),D("endTime")]),g=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:he(m),endTime:he(l)},f);let y=Buffer.from([...Ge.setRewardEmissions,...f]);return new We({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,c=new B(t.rewardInfos[d].vault),u=new B(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&Ar.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let m=Wt(o).publicKey,l=[this.setRewardInstruction(o,n.wallet,s,m,new B(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:m},signers:[],instructions:l,instructionTypes:[me.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=te([ce("rewardIndex")]),u=[{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:Te,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1}],m=Buffer.alloc(c.span);c.encode({rewardIndex:a},m);let l=Buffer.from([...Ge.collectReward,...m]);return new We({keys:u,programId:e,data:l})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new B(e.programId),new B(e.id)],a,c;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.toString()&&(a=m,c=new B(t.rewardInfos[m].vault));(a===void 0||c===void 0)&&Ar.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[me.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,m]=[new B(e.programId),new B(e.id)],[l,d]=[new B(t.vault.A),new B(t.vault.B)],[p,g]=[new B(e.mintA.address),new B(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(u,n.wallet,m,new B(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:l,f?l:d,f?p:g,f?g:p,c,l,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[me.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Me from"bn.js";import{AccountLayout as Pr,TOKEN_PROGRAM_ID as Tr}from"@solana/spl-token";var ai=class extends vt{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||W.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:m,txVersion:l}=e,d=this.createTxBuilder(),[p,g,f]=new Me(new W(r.address).toBuffer()).gt(new Me(new W(o.address).toBuffer()))?[o,r,new C(1).div(a)]:[r,o,a],y=_.priceToSqrtPriceX64(f,p.decimals,g.decimals),b=await be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:g,ammConfigId:s.id,initialPriceX64:y,startTime:c,forerunCreate:m});return d.addInstruction(b),d.addCustomComputeBudget(u),d.versionBuild({txVersion:l,extInfo:{address:G(K({},b.address),{programId:t.toString(),id:b.address.poolId.toString(),mintA:p,mintB:g,openTime:c.toString(),vault:{A:b.address.mintAVault.toString(),B:b.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:K({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:b.address.poolId.toString(),mintA:p,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},ji),forerunCreate:m}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,withMetadata:l="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),y=null,b=null,h=n.useSOLBalance&&e.mintA.address===ee.toString(),w=n.useSOLBalance&&e.mintB.address===ee.toString(),[A,k]=s==="MintA"?[a,c]:[c,a],{account:P,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||A.isZero()?{payer:this.scope.ownerPubKey,amount:A}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:m});P&&(y=P),f.addInstruction(I||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:m});x&&(b=x),f.addInstruction(O||{}),(!y||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:y==null?void 0:y.toBase58(),ownerTokenAccountB:b==null?void 0:b.toBase58()});let E=t||await this.getClmmPoolKeys(e.id),R=await be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:E,ownerInfo:G(K({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:l,getEphemeralSigners:d});return f.addInstruction(R),f.addCustomComputeBudget(p),f.versionBuild({txVersion:g,extInfo:R.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,withMetadata:l="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),f=null,y=null,b=n.useSOLBalance&&e.mintA.address===ee.toBase58(),h=n.useSOLBalance&&e.mintB.address===ee.toBase58(),{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:b?!1:u,checkCreateATAOwner:m});w&&(f=w),g.addInstruction(A||{});let{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:m});k&&(y=k),g.addInstruction(P||{}),(f===void 0||y===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=t||await this.getClmmPoolKeys(e.id),x=await be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:y},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:r,amountMaxB:o,withMetadata:l,getEphemeralSigners:p});return g.addInstruction(x),g.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,amountMaxA:o,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,computeBudgetConfig:l,txVersion:d}=e,p=this.createTxBuilder(),g,f,y=c.useSOLBalance&&t.mintA.address===ee.toString(),b=c.useSOLBalance&&t.mintB.address===ee.toString(),{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:y||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:m});h&&(g=h),p.addInstruction(w||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:m});A&&(f=A),p.addInstruction(k||{}),!g&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=n!=null?n:await this.getClmmPoolKeys(t.id),I=be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:f},liquidity:a,amountMaxA:o,amountMaxB:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:m,txVersion:l}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===ee.toString(),y=a.useSOLBalance&&t.mintB.address===ee.toString(),{account:b,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});b&&(p=b),d.addInstruction(h||{});let{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:y||(r==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(A||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getClmmPoolKeys(t.id),P=be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},base:r,baseAmount:o,otherAmountMax:s});return d.addInstruction(P),d.addCustomComputeBudget(m),d.versionBuild({txVersion:l,extInfo:{address:P.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:o,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:m=!1,computeBudgetConfig:l,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),g=o.useSOLBalance&&t.mintA.address===ee.toString(),f=o.useSOLBalance&&t.mintB.address===ee.toString(),y,b,{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:m});y=h,w&&p.addInstruction(w);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:m});b=A,k&&p.addInstruction(k);let P=[];for(let E of t.rewardDefaultInfos){let R=o.useSOLBalance&&E.mint.address===ee.toString(),Z;if(E.mint.address===t.mintA.address)Z=y;else if(E.mint.address===t.mintB.address)Z=b;else{let{account:ne,instructionParams:le}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(E.mint.programId),mint:new W(E.mint.address),notUseTokenAccount:R,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!R,associatedOnly:R?!1:u,checkCreateATAOwner:m});Z=ne,le&&p.addInstruction(le)}P.push(Z)}!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=n!=null?n:await this.getClmmPoolKeys(t.id),x=await be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b,rewardAccounts:P},liquidity:c,amountMinA:s,amountMinB:a});p.addInstruction({instructions:x.instructions,instructionTypes:[me.ClmmDecreasePosition]});let O=K({},x.address);if(o.closePosition){let E=await be.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:r});p.addInstruction({endInstructions:E.instructions,endInstructionTypes:E.instructionTypes}),O=K(K({},O),E.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:d,extInfo:{address:O}})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:r}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=be.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return o.addInstruction(a).versionBuild({txVersion:r,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===ee.toString(),m=n.perSecond.mul(n.endTime-n.openTime),{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(n.mint.address),mint:new W(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me(new C(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:o});d&&c.addInstruction(d),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),g=be.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{programId:new W(n.mint.programId),mint:new W(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:v.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){for(let l of r)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),m={};for(let l of r){let d=n.useSOLBalance&&l.mint.address===ee.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:g,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(l.mint.programId),mint:new W(l.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Me(new C(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:s});f&&u.addInstruction(f),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=t!=null?t:await this.getClmmPoolKeys(e.id),b=be.initRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{programId:new W(l.mint.programId),mint:new W(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:v.decimalToX64(l.perSecond)}});m=K(K({},m),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:m}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(ee),{account:m,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Me(new C(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:o});l&&c.addInstruction(l),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=be.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:v.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){let u=this.createTxBuilder(),m={};for(let l of r){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let d=n.useSOLBalance&&l.mint.address===ee.toString(),{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(l.mint.programId),mint:new W(l.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Me(new C(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:s});g&&u.addInstruction(g),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=t!=null?t:await this.getClmmPoolKeys(e.id),y=be.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new W(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:v.decimalToX64(l.perSecond)}});u.addInstruction(y),m=K(K({},m),y.address)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:m}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(ee),{account:u,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:r,checkCreateATAOwner:o});m&&a.addInstruction(m),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let l=await this.getClmmPoolKeys(e.id),d=be.collectRewardInstructions({poolInfo:e,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let m=t.useSOLBalance&&c.equals(ee),{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(u.mint.programId),mint:c,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:r,checkCreateATAOwner:o});l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),g=be.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardMint:c});s.addInstruction(g),a=K(K({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:r,amountOutMin:o,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:m=!0,checkCreateATAOwner:l=!1,txVersion:d}){let p=this.createTxBuilder(),g=n.toString()===e.mintA.address,f=c.useSOLBalance&&e.mintA.address===ee.toBase58(),y=c.useSOLBalance&&e.mintB.address===ee.toBase58(),b;!s||s.equals(new C(0))?b=g?st.add(new Me(1)):at.sub(new Me(1)):b=_.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let h;if(!h){let{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?r:0}:void 0,associatedOnly:f?!1:m,checkCreateATAOwner:l});h=k,P&&p.addInstruction(P)}let w;if(!w){let{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:y||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:r}:void 0,associatedOnly:y?!1:m,checkCreateATAOwner:l});w=k,P&&p.addInstruction(P)}(!h||!w)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:h,ownerTokenAccountB:w,mintAUseSOLBalance:f,mintBUseSOLBalance:y,associatedOnly:m});let A=t!=null?t:await this.getClmmPoolKeys(e.id);return p.addInstruction(be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:A,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:w},inputMint:new W(n),amountIn:r,amountOutMin:o,sqrtPriceLimitX64:b,remainingAccounts:u})),p.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let l of this.scope.account.tokenAccountRawInfos)r?De(this.scope.ownerPubKey,l.accountInfo.mint,s).publicKey.equals(l.pubkey)&&(u[l.accountInfo.mint.toString()]=l.pubkey):u[l.accountInfo.mint.toString()]=l.pubkey;let m=this.createTxBuilder();for(let l of Object.values(e)){if(t[l.id]===void 0||!t[l.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(A=>!A.rewardAmountOwed.isZero())))continue;let d=l,p=n.useSOLBalance&&d.mintA.address===ee.toString(),g=n.useSOLBalance&&d.mintB.address===ee.toString(),f=u[d.mintA.address];if(!f){let{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new W(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=w,A&&m.addInstruction(A)}let y=u[d.mintB.address];if(!y){let{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new W(d.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:r,checkCreateATAOwner:o});y=w,A&&m.addInstruction(A)}u[d.mintA.address]=f,u[d.mintB.address]=y;let b=[];for(let w of d.rewardDefaultInfos){let A=n.useSOLBalance&&w.mint.address===ee.toString(),k=u[w.mint.address];if(!k){let{account:P,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(w.mint.programId),mint:new W(w.mint.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:A?!1:r});k=P,I&&m.addInstruction(I)}u[w.mint.address]=k,b.push(k)}let h=await this.getClmmPoolKeys(d.id);for(let w of t[l.id]){let A=be.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:y,rewardAccounts:b},liquidity:new Me(0),amountMinA:new Me(0),amountMinB:new Me(0)});m.addInstruction(A)}}return a===0?m.sizeCheckBuildV0({computeBudgetConfig:c}):m.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Wt(e).publicKey);return t?cr.decode(t.data).whitelistMints.filter(r=>!r.equals(W.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Me(1))).map(s=>Re(new W(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=yn.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await ot(this.scope.connection,e.map(o=>({pubkey:new W(o)})),t),r={};for(let o=0;o<e.length;o++){let s=n[o];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[o]));let a=bn.decode(s.accountInfo.data),c=_.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();r[String(e[o])]=G(K({},a),{currentPrice:c,programId:s.accountInfo.owner})}return r}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),r=await ot(this.scope.connection,Array.from(n).map(c=>({pubkey:new W(c)}))),o={};r.forEach(c=>{!c.accountInfo||(o[c.pubkey.toBase58()]=ar.decode(c.accountInfo.data))});let s=await ge.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var l,d,p,g;let[u,m]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:Wn({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||Tr.toBase58(),extensions:{feeConfig:(l=t[u])!=null&&l.feeConfig?Gn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:Wn({address:m,decimals:e[c].mintDecimalsB,programId:t[m].programId.toBase58()||Tr.toBase58(),extensions:{feeConfig:(p=t[m])!=null&&p.feeConfig?Gn((g=t[m])==null?void 0:g.feeConfig):void 0}}),price:e[c].currentPrice,config:G(K({},o[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await ge.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var m;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),r=await qi({connection:this.scope.connection,mints:Array.from(n).map(l=>new W(l))}),{computeClmmPoolInfo:o,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:r}),a=await ot(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=mr(o[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(Pr.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(Pr.decode((m=a[1].accountInfo)==null?void 0:m.data).amount.toString());let u=G(K({},o[e]),{id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},rewardInfos:[],config:c.config});return{poolInfo:c,poolKeys:u,computePoolInfo:o[e],tickData:s}}};export{ts as AMM_CONFIG_SEED,Ui as BIT_PRECISION,ai as Clmm,ar as ClmmConfigLayout,be as ClmmInstrument,Jn as EXTENSION_TICKARRAY_BITMAP_SIZE,dn as FEE_RATE_DENOMINATOR,ks as FETCH_TICKARRAY_COUNT,es as Fee,Xi as LOG_B_2_X32,Hi as LOG_B_P_ERR_MARGIN_LOWER_X64,zi as LOG_B_P_ERR_MARGIN_UPPER_X64,X as LiquidityMath,at as MAX_SQRT_PRICE_X64,Il as MAX_SQRT_PRICE_X64_SUB_ONE,Be as MAX_TICK,st as MIN_SQRT_PRICE_X64,Bl as MIN_SQRT_PRICE_X64_ADD_ONE,xe as MIN_TICK,v as MathUtil,Xn as MaxU64,Gi as MaxUint128,Qe as NEGATIVE_ONE,He as ONE,ss as OPERATION_SEED,$n as ObservationInfoLayout,hs as ObservationLayout,cr as OperationLayout,rs as POOL_REWARD_VAULT_SEED,ns as POOL_SEED,as as POOL_TICK_ARRAY_BITMAP_SEED,is as POOL_VAULT_SEED,Ji as POSITION_SEED,bn as PoolInfoLayout,ge as PoolUtils,yn as PositionInfoLayout,Ps as PositionRewardInfoLayout,Ht as PositionUtils,Gm as ProtocolPositionLayout,mn as Q128,Ke as Q64,As as RewardInfo,_ as SqrtPriceMath,wt as SwapMath,bt as TICK_ARRAY_BITMAP_SIZE,os as TICK_ARRAY_SEED,fe as TICK_ARRAY_SIZE,Cl as TICK_SPACINGS,$e as TickArrayBitmap,ur as TickArrayBitmapExtensionLayout,Ut as TickArrayBitmapExtensionUtils,Xt as TickArrayLayout,Ts as TickLayout,yt as TickMath,H as TickQuery,S as TickUtils,Vt as U64Resolution,Kl as U64_IGNORE_RANGE,j as ZERO,mr as clmmComputeInfoToApiInfo,Nd as getLiquidityFromAmounts,El as getPdaAmmConfigId,ve as getPdaExBitmapAccount,fn as getPdaMetadataKey,Wt as getPdaOperationAccount,Re as getPdaPersonalPositionAddress,$i as getPdaPoolId,er as getPdaPoolRewardVaulId,jn as getPdaPoolVaultId,gt as getPdaProtocolPositionAddress,J as getPdaTickArrayAddress,Rl as i16ToBytes,pn as i32ToBytes,qt as isZero,Hn as leadingZeros,Qi as leastSignificantBit,Sl as mockCreatePoolInfo,ji as mockV3CreatePoolInfo,Yi as mostSignificantBit,zn as trailingZeros,Zi as u16ToBytes,Ll as u32ToBytes};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map