@raydium-io/raydium-sdk-v2 0.1.44-alpha → 0.1.45-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 (106) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +1 -1
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/cpmm.js +1 -1
  40. package/lib/raydium/cpmm/cpmm.js.map +1 -1
  41. package/lib/raydium/cpmm/cpmm.mjs +1 -1
  42. package/lib/raydium/cpmm/cpmm.mjs.map +1 -1
  43. package/lib/raydium/cpmm/index.d.ts +1 -1
  44. package/lib/raydium/cpmm/layout.d.ts +1 -1
  45. package/lib/raydium/cpmm/type.d.ts +2 -1
  46. package/lib/raydium/cpmm/type.js.map +1 -1
  47. package/lib/raydium/farm/config.d.ts +1 -1
  48. package/lib/raydium/farm/farm.d.ts +3 -3
  49. package/lib/raydium/farm/index.d.ts +1 -1
  50. package/lib/raydium/farm/instruction.d.ts +1 -1
  51. package/lib/raydium/farm/layout.d.ts +1 -1
  52. package/lib/raydium/farm/type.d.ts +1 -1
  53. package/lib/raydium/farm/util.d.ts +1 -1
  54. package/lib/raydium/ido/ido.d.ts +3 -3
  55. package/lib/raydium/ido/index.d.ts +3 -3
  56. package/lib/raydium/ido/instruction.d.ts +1 -1
  57. package/lib/raydium/ido/type.d.ts +1 -1
  58. package/lib/raydium/index.d.ts +3 -3
  59. package/lib/raydium/index.js +1 -1
  60. package/lib/raydium/index.js.map +1 -1
  61. package/lib/raydium/index.mjs +1 -1
  62. package/lib/raydium/index.mjs.map +1 -1
  63. package/lib/raydium/liquidity/index.d.ts +1 -1
  64. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  65. package/lib/raydium/liquidity/layout.d.ts +6 -6
  66. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  67. package/lib/raydium/liquidity/type.d.ts +1 -1
  68. package/lib/raydium/liquidity/utils.d.ts +1 -1
  69. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  70. package/lib/raydium/marketV2/createMarket.js.map +1 -1
  71. package/lib/raydium/marketV2/createMarket.mjs.map +1 -1
  72. package/lib/raydium/marketV2/index.d.ts +3 -3
  73. package/lib/raydium/marketV2/index.js.map +1 -1
  74. package/lib/raydium/marketV2/index.mjs.map +1 -1
  75. package/lib/raydium/moduleBase.d.ts +3 -3
  76. package/lib/raydium/raydium.d.ts +3 -3
  77. package/lib/raydium/raydium.js +1 -1
  78. package/lib/raydium/raydium.js.map +1 -1
  79. package/lib/raydium/raydium.mjs +1 -1
  80. package/lib/raydium/raydium.mjs.map +1 -1
  81. package/lib/raydium/token/constant.d.ts +1 -1
  82. package/lib/raydium/token/index.d.ts +1 -1
  83. package/lib/raydium/token/token.d.ts +3 -3
  84. package/lib/raydium/token/type.d.ts +1 -1
  85. package/lib/raydium/token/utils.d.ts +1 -1
  86. package/lib/raydium/tradeV2/index.d.ts +2 -2
  87. package/lib/raydium/tradeV2/index.js.map +1 -1
  88. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  89. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  90. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  91. package/lib/raydium/tradeV2/trade.js +1 -1
  92. package/lib/raydium/tradeV2/trade.js.map +1 -1
  93. package/lib/raydium/tradeV2/trade.mjs +1 -1
  94. package/lib/raydium/tradeV2/trade.mjs.map +1 -1
  95. package/lib/raydium/tradeV2/type.d.ts +2 -2
  96. package/lib/raydium/type.d.ts +1 -1
  97. package/lib/raydium/utils1216/index.d.ts +3 -3
  98. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  99. package/lib/{raydium-026a0a95.d.ts → raydium-15ed5dcf.d.ts} +3 -3
  100. package/lib/{type-c1771287.d.ts → type-b868e5e7.d.ts} +1 -1
  101. package/package.json +1 -1
  102. package/src/raydium/cpmm/cpmm.ts +2 -1
  103. package/src/raydium/cpmm/type.ts +1 -0
  104. package/src/raydium/marketV2/createMarket.ts +2 -2
  105. package/src/raydium/tradeV2/trade.ts +4 -4
  106. package/lib/{api-51b11f0d.d.ts → api-00b0713a.d.ts} +5 -5
@@ -1,3 +1,3 @@
1
- var fo=Object.defineProperty,bo=Object.defineProperties;var yo=Object.getOwnPropertyDescriptors;var rn=Object.getOwnPropertySymbols;var vi=Object.prototype.hasOwnProperty,Di=Object.prototype.propertyIsEnumerable;var _i=(i,e,t)=>e in i?fo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,_=(i,e)=>{for(var t in e||(e={}))vi.call(e,t)&&_i(i,t,e[t]);if(rn)for(var t of rn(e))Di.call(e,t)&&_i(i,t,e[t]);return i},X=(i,e)=>bo(i,yo(e));var bt=(i,e)=>{var t={};for(var n in i)vi.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&rn)for(var n of rn(i))e.indexOf(n)<0&&Di.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as It}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as me,TOKEN_2022_PROGRAM_ID as Fn,createTransferInstruction as mo}from"@solana/spl-token";import{get as Vi,set as go}from"lodash";var vn=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}},Wi={},Ao={};function se(i){let e=Vi(Wi,i);if(!e){let t=Vi(Ao,i);e=new vn({name:i,logLevel:t}),go(Wi,i,e)}return e}import{PublicKey as Cs}from"@solana/web3.js";import Ns from"bn.js";import Is from"big.js";import yn from"bn.js";import Ne from"bn.js";var St=9e15,ct=1e9,Dn="0123456789abcdef",sn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",an="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-St,maxE:St,crypto:!1},Xi,$e,U=!0,cn="[DecimalError] ",ut=cn+"Invalid argument: ",zi=cn+"Precision limit exceeded",Qi=cn+"crypto unavailable",Hi="[object Decimal]",xe=Math.floor,be=Math.pow,Po=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ko=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,wo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Yi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,W=7,ho=9007199254740991,To=sn.length-1,Wn=an.length-1,B={toStringTag:Hi};B.absoluteValue=B.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),F(i)};B.ceil=function(){return F(new this.constructor(this),this.e+1,2)};B.clampedTo=B.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(ut+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};B.comparedTo=B.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};B.cosine=B.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())+W,n.rounding=1,t=Bo(n,er(n,t)),n.precision=i,n.rounding=e,F($e==2||$e==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};B.cubeRoot=B.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(U=!1,o=l.s*be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=be(t,1/3),i=xe((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 d(t),n.s=l.s):n=new d(o.toString()),s=(i=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=ae(u.plus(l).times(a),u.plus(c),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(F(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,i,d.rounding,e)};B.decimalPlaces=B.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-xe(this.e/W))*W,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};B.dividedBy=B.div=function(i){return ae(this,new this.constructor(i))};B.dividedToIntegerBy=B.divToInt=function(i){var e=this,t=e.constructor;return F(ae(e,new t(i),0,1,1),t.precision,t.rounding)};B.equals=B.eq=function(i){return this.cmp(i)===0};B.floor=function(){return F(new this.constructor(this),this.e+1,3)};B.greaterThan=B.gt=function(i){return this.cmp(i)>0};B.greaterThanOrEqualTo=B.gte=function(i){var e=this.cmp(i);return e==1||e===0};B.hyperbolicCosine=B.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/mn(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Kt(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return F(o,s.precision=t,s.rounding=n,!0)};B.hyperbolicSine=B.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=Kt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/mn(5,i)),r=Kt(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,F(r,e,t,!0)};B.hyperbolicTangent=B.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,ae(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};B.inverseCosine=B.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()?ve(t,r,o):new t(0):new t(NaN):e.isZero()?ve(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=ve(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};B.inverseHyperbolicCosine=B.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,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};B.inverseHyperbolicSine=B.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,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln())};B.inverseHyperbolicTangent=B.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?F(new o(r),i,e,!0):(o.precision=t=n-r.e,r=ae(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)};B.inverseSine=B.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=ve(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)))};B.inverseTangent=B.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=Wn)return s=ve(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=Wn)return s=ve(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/W+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/W),n=1,c=u.times(u),s=new l(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)),U=!0,F(s,l.precision=d,l.rounding=m,!0)};B.isFinite=function(){return!!this.d};B.isInteger=B.isInt=function(){return!!this.d&&xe(this.e/W)>this.d.length-2};B.isNaN=function(){return!this.s};B.isNegative=B.isNeg=function(){return this.s<0};B.isPositive=B.isPos=function(){return this.s>0};B.isZero=function(){return!!this.d&&this.d[0]===0};B.lessThan=B.lt=function(i){return this.cmp(i)<0};B.lessThanOrEqualTo=B.lte=function(i){return this.cmp(i)<1};B.logarithm=B.log=function(i){var e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(U=!1,a=d+p,s=at(u,a),n=e?un(l,a+10):at(i,a),c=ae(s,n,a,1),Ft(c.d,r=d,m))do if(a+=10,s=at(u,a),n=e?un(l,a+10):at(i,a),c=ae(s,n,a,1),!o){+we(c.d).slice(r+1,r+15)+1==1e14&&(c=F(c,d+1,0));break}while(Ft(c.d,r+=10,m));return U=!0,F(c,d,m)};B.minus=B.sub=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,b=p.constructor;if(i=new b(i),!p.d||!i.d)return!p.s||!i.s?i=new b(NaN):p.d?i.s=-i.s:i=new b(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,m=i.d,a=b.precision,c=b.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new b(p);else return new b(c===3?-0:0);return U?F(i,a,c):i}if(t=xe(i.e/W),l=xe(p.e/W),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/W),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=De-1;--u[r],u[n]+=De}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=ln(u,t),U?F(i,a,c):i):new b(c===3?-0:0)};B.modulo=B.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]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=ae(t,i.abs(),0,3,1),e.s*=i.s):e=ae(t,i,0,n.modulo,1),e=e.times(i),U=!0,t.minus(e))};B.naturalExponential=B.exp=function(){return qn(this)};B.naturalLogarithm=B.ln=function(){return at(this)};B.negated=B.neg=function(){var i=new this.constructor(this);return i.s=-i.s,F(i)};B.plus=B.add=function(i){var e,t,n,r,o,s,a,c,u,l,d=this,m=d.constructor;if(i=new m(i),!d.d||!i.d)return!d.s||!i.s?i=new m(NaN):d.d||(i=new m(i.d||d.s===i.s?d:NaN)),i;if(d.s!=i.s)return i.s=-i.s,d.minus(i);if(u=d.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(d)),U?F(i,a,c):i;if(o=xe(d.e/W),n=xe(i.e/W),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/W),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=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/De|0,u[r]%=De;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=ln(u,n),U?F(i,a,c):i};B.precision=B.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(ut+i);return t.d?(e=ji(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};B.round=function(){var i=this,e=i.constructor;return F(new e(i),i.e+1,e.rounding)};B.sine=B.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())+W,n.rounding=1,t=Io(n,er(n,t)),n.precision=i,n.rounding=e,F($e>2?t.neg():t,i,e,!0)):new n(NaN)};B.squareRoot=B.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!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=xe((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(F(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")&&(F(n,c+1,1),i=!n.times(n).eq(s));break}return U=!0,F(n,c,l.rounding,i)};B.tangent=B.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=ae(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,F($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};B.times=B.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,d=l.constructor,m=l.d,p=(i=new d(i)).d;if(i.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!i.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?i.s/0:i.s*0);for(t=xe(l.e/W)+xe(i.e/W),c=m.length,u=p.length,c<u&&(o=m,m=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]*m[r-n-1]+e,o[r--]=a%De|0,e=a/De|0;o[r]=(o[r]+e)%De|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=ln(o,t),U?F(i,d.precision,d.rounding):i};B.toBinary=function(i,e){return Un(this,2,i,e)};B.toDecimalPlaces=B.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ke(i,0,ct),e===void 0?e=n.rounding:Ke(e,0,8),F(t,i+t.e+1,e))};B.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Qe(n,!0):(Ke(i,0,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i+1,e),t=Qe(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};B.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Qe(r):(Ke(i,0,ct),e===void 0?e=o.rounding:Ke(e,0,8),n=F(new o(r),i+r.e+1,e),t=Qe(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};B.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,b=p.d,f=p.constructor;if(!b)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=ji(b)-p.e-1,s=o%W,e.d[0]=be(10,s<0?W+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(ut+a);i=a.gt(e)?o>0?e:u:a}for(U=!1,a=new f(we(b)),l=f.precision,f.precision=o=b.length*W*2;d=ae(a,e,0,1,1),r=t.plus(d.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(d.times(r)),c=r,r=e,e=a.minus(d.times(r)),a=r;return r=ae(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,m=ae(u,n,o,1).minus(p).abs().cmp(ae(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,U=!0,m};B.toHexadecimal=B.toHex=function(i,e){return Un(this,16,i,e)};B.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:Ke(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]?(U=!1,t=ae(t,i,0,e,1).times(i),U=!0,F(t)):(i.s=t.s,t=i),t};B.toNumber=function(){return+this};B.toOctal=function(i,e){return Un(this,8,i,e)};B.toPower=B.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(be(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return F(a,n,o);if(e=xe(i.e/W),e>=i.d.length-1&&(t=u<0?-u:u)<=ho)return r=Zi(c,a,t,n),i.s<0?new c(1).div(r):F(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=be(+a,u),e=t==0||!isFinite(t)?xe(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):(U=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=qn(i.times(at(a,n+t)),n),r.d&&(r=F(r,n+5,1),Ft(r.d,n,o)&&(e=n+10,r=F(qn(i.times(at(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=F(r,n+1,0)))),r.s=s,U=!0,c.rounding=o,F(r,n,o))};B.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Qe(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ke(i,1,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i,e),t=Qe(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};B.toSignificantDigits=B.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ke(i,1,ct),e===void 0?e=n.rounding:Ke(e,0,8)),F(new n(t),i,e)};B.toString=function(){var i=this,e=i.constructor,t=Qe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};B.truncated=B.trunc=function(){return F(new this.constructor(this),this.e+1,1)};B.valueOf=B.toJSON=function(){var i=this,e=i.constructor,t=Qe(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=W-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=W-n.length,t&&(o+=st(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(i,e,t){if(i!==~~i||i<e||i>t)throw Error(ut+i)}function Ft(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=W,r=0):(r=Math.ceil((e+1)/W),e%=W),o=be(10,W-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)==be(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)==be(10,e-3)-1,s}function on(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]+=Dn.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 Bo(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/mn(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Kt(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 ae=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,l,d,m,p,b,f,y,g,k,P,w,I,h,R,S,V,T,O,re,j=n.constructor,fe=n.s==r.s?1:-1,Z=n.d,D=r.d;if(!Z||!Z[0]||!D||!D[0])return new j(!n.s||!r.s||(Z?D&&Z[0]==D[0]:!D)?NaN:Z&&Z[0]==0||!D?fe*0:fe/0);for(c?(p=1,l=n.e-r.e):(c=De,p=W,l=xe(n.e/p)-xe(r.e/p)),O=D.length,V=Z.length,g=new j(fe),k=g.d=[],d=0;D[d]==(Z[d]||0);d++);if(D[d]>(Z[d]||0)&&l--,o==null?(h=o=j.precision,s=j.rounding):a?h=o+(n.e-r.e)+1:h=o,h<0)k.push(1),b=!0;else{if(h=h/p+2|0,d=0,O==1){for(m=0,D=D[0],h++;(d<V||m)&&h--;d++)R=m*c+(Z[d]||0),k[d]=R/D|0,m=R%D|0;b=m||d<V}else{for(m=c/(D[0]+1)|0,m>1&&(D=i(D,m,c),Z=i(Z,m,c),O=D.length,V=Z.length),S=O,P=Z.slice(0,O),w=P.length;w<O;)P[w++]=0;re=D.slice(),re.unshift(0),T=D[0],D[1]>=c/2&&++T;do m=0,u=e(D,P,O,w),u<0?(I=P[0],O!=w&&(I=I*c+(P[1]||0)),m=I/T|0,m>1?(m>=c&&(m=c-1),f=i(D,m,c),y=f.length,w=P.length,u=e(f,P,y,w),u==1&&(m--,t(f,O<y?re:D,y,c))):(m==0&&(u=m=1),f=D.slice()),y=f.length,y<w&&f.unshift(0),t(P,f,w,c),u==-1&&(w=P.length,u=e(D,P,O,w),u<1&&(m++,t(P,O<w?re:D,w,c))),w=P.length):u===0&&(m++,P=[0]),k[d++]=m,u&&P[0]?P[w++]=Z[S]||0:(P=[Z[S]],w=1);while((S++<V||P[0]!==void 0)&&h--);b=P[0]!==void 0}k[0]||k.shift()}if(p==1)g.e=l,Xi=b;else{for(d=1,m=k[0];m>=10;m/=10)d++;g.e=d+l*p-1,F(g,a?o+g.e+1:o,s,b)}return g}}();function F(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor;e:if(e!=null){if(d=i.d,!d)return i;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=W,s=e,l=d[m=0],c=l/be(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/W),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=W,s=o-W+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=W,s=o-W+r,c=s<0?0:l/be(10,r-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%be(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?l/be(10,r-s):0:d[m-1])%10&1||t==(i.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=i.e+1,d[0]=be(10,(W-e%W)%W),i.e=-e||0):d[0]=i.e=0,i;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=be(10,W-o),d[m]=s>0?(l/be(10,r-s)%be(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,d[0]==De&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=De)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return U&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function Qe(i,e,t){if(!i.isFinite())return $i(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)+st(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+st(-r-1)+o,t&&(n=t-s)>0&&(o+=st(n))):r>=s?(o+=st(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+st(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=st(n))),o}function ln(i,e){var t=i[0];for(e*=W;t>=10;t/=10)e++;return e}function un(i,e,t){if(e>To)throw U=!0,t&&(i.precision=t),Error(zi);return F(new i(sn),e,1,!0)}function ve(i,e,t){if(e>Wn)throw Error(zi);return F(new i(an),e,t,!0)}function ji(i){var e=i.length-1,t=e*W+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 st(i){for(var e="";i--;)e+="0";return e}function Zi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/W+4);for(U=!1;;){if(t%2&&(o=o.times(e),Gi(o.d,s)&&(r=!0)),t=xe(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Gi(e.d,s)}return U=!0,o}function qi(i){return i.d[i.d.length-1]&1}function Ji(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 qn(i,e){var t,n,r,o,s,a,c,u=0,l=0,d=0,m=i.constructor,p=m.rounding,b=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(U=!1,c=b):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),d+=5;for(n=Math.log(be(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=F(o.times(i),c,1),t=t.times(++l),a=s.plus(ae(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(r=d;r--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&Ft(s.d,c-n,p,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return F(s,m.precision=b,p,U=!0);else return m.precision=b,s}s=a}}function at(i,e){var t,n,r,o,s,a,c,u,l,d,m,p=1,b=10,f=i,y=f.d,g=f.constructor,k=g.rounding,P=g.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(U=!1,l=P):l=e,g.precision=l+=b,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 g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return u=un(g,l+2,P).times(o+""),f=at(new g(n+"."+t.slice(1)),l-b).plus(u),g.precision=P,e==null?F(f,P,k,U=!0):f;for(d=f,c=s=f=ae(f.minus(1),f.plus(1),l,1),m=F(f.times(f),l,1),r=3;;){if(s=F(s.times(m),l,1),u=c.plus(ae(s,new g(r),l,1)),we(u.d).slice(0,l)===we(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(un(g,l+2,P).times(o+""))),c=ae(c,new g(p),l,1),e==null)if(Ft(c.d,l-b,k,a))g.precision=l+=b,u=s=f=ae(d.minus(1),d.plus(1),l,1),m=F(f.times(f),l,1),r=a=1;else return F(c,g.precision=P,k,U=!0);else return g.precision=P,c;c=u,r+=2}}function $i(i){return String(i.s*i.s/0)}function Gn(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)%W,t<0&&(n+=W),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=W;n<r;)i.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),U&&(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 xo(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Yi.test(e))return Gn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(ko.test(e))t=16,e=e.toLowerCase();else if(Po.test(e))t=2;else if(wo.test(e))t=8;else throw Error(ut+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=Zi(n,new n(t),o,o*2)),u=on(e,t,De),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=ln(u,l),i.d=u,U=!1,s&&(i=ae(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?be(2,c):_t.pow(2,c))),U=!0,i)}function Io(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Kt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/mn(5,t)),e=Kt(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 Kt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,d=Math.ceil(l/W);for(U=!1,c=t.times(t),a=new i(n);;){if(s=ae(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=ae(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return U=!0,s.d.length=d+1,s}function mn(i,e){for(var t=i;--e;)t*=i;return t}function er(i,e){var t,n=e.s<0,r=ve(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(r),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return $e=qi(t)?n?2:3:n?4:1,e;$e=qi(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Un(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor,b=t!==void 0;if(b?(Ke(t,1,ct),n===void 0?n=p.rounding:Ke(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=$i(i);else{for(l=Qe(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new p(1),m.e=l.length-s,m.d=on(Qe(m),10,r),m.e=m.d.length),d=on(l,10,r),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=d,i.e=o,i=ae(i,m,t,n,0,r),d=i.d,o=i.e,u=Xi),s=d[t],a=r/2,u=u||d[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&&d[t-1]&1||n===(i.s<0?8:7)),d.length=t,u)for(;++d[--t]>r-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=Dn.charAt(d[s]);if(b){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=on(l,r,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Dn.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Gi(i,e){if(i.length>e)return i.length=e,!0}function So(i){return new this(i).abs()}function Ko(i){return new this(i).acos()}function Co(i){return new this(i).acosh()}function No(i,e){return new this(i).plus(e)}function Ro(i){return new this(i).asin()}function Lo(i){return new this(i).asinh()}function Oo(i){return new this(i).atan()}function Mo(i){return new this(i).atanh()}function Eo(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=ve(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?ve(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=ve(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(i,e,o,1)),e=ve(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(i,e,o,1)),t}function Fo(i){return new this(i).cbrt()}function _o(i){return F(i=new this(i),i.e+1,2)}function vo(i,e,t){return new this(i).clamp(e,t)}function Do(i){if(!i||typeof i!="object")throw Error(cn+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,ct,"rounding",0,8,"toExpNeg",-St,0,"toExpPos",0,St,"maxE",0,St,"minE",-St,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Vn[t]),(n=i[t])!==void 0)if(xe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ut+t+": "+n);if(t="crypto",r&&(this[t]=Vn[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(Qi);else this[t]=!1;else throw Error(ut+t+": "+n);return this}function Vo(i){return new this(i).cos()}function Wo(i){return new this(i).cosh()}function tr(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,Ui(o)){u.s=o.s,U?!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++;U?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 Gn(u,o.toString())}else if(c!=="string")throw Error(ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Yi.test(o)?Gn(u,o):xo(u,o)}if(r.prototype=B,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=Do,r.clone=tr,r.isDecimal=Ui,r.abs=So,r.acos=Ko,r.acosh=Co,r.add=No,r.asin=Ro,r.asinh=Lo,r.atan=Oo,r.atanh=Mo,r.atan2=Eo,r.cbrt=Fo,r.ceil=_o,r.clamp=vo,r.cos=Vo,r.cosh=Wo,r.div=qo,r.exp=Go,r.floor=Uo,r.hypot=Xo,r.ln=zo,r.log=Qo,r.log10=Yo,r.log2=Ho,r.max=jo,r.min=Zo,r.mod=Jo,r.mul=$o,r.pow=es,r.random=ts,r.round=ns,r.sign=is,r.sin=rs,r.sinh=os,r.sqrt=ss,r.sub=as,r.sum=us,r.tan=cs,r.tanh=ls,r.trunc=ms,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 qo(i,e){return new this(i).div(e)}function Go(i){return new this(i).exp()}function Uo(i){return F(i=new this(i),i.e+1,3)}function Xo(){var i,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function Ui(i){return i instanceof _t||i&&i.toStringTag===Hi||!1}function zo(i){return new this(i).ln()}function Qo(i,e){return new this(i).log(e)}function Ho(i){return new this(i).log(2)}function Yo(i){return new this(i).log(10)}function jo(){return Ji(this,arguments,"lt")}function Zo(){return Ji(this,arguments,"gt")}function Jo(i,e){return new this(i).mod(e)}function $o(i,e){return new this(i).mul(e)}function es(i,e){return new this(i).pow(e)}function ts(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ke(i,1,ct),n=Math.ceil(i/W),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(Qi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=W,n&&i&&(r=be(10,W-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-=W)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function ns(i){return F(i=new this(i),i.e+1,this.rounding)}function is(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function rs(i){return new this(i).sin()}function os(i){return new this(i).sinh()}function ss(i){return new this(i).sqrt()}function as(i,e){return new this(i).sub(e)}function us(){var i=0,e=arguments,t=new this(e[i]);for(U=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return U=!0,F(t,this.precision,this.rounding)}function cs(i){return new this(i).tan()}function ls(i){return new this(i).tanh()}function ms(i){return F(i=new this(i),i.e+1,1)}B[Symbol.for("nodejs.util.inspect.custom")]=B.toString;B[Symbol.toStringTag]="Decimal";var _t=B.constructor=tr(Vn);sn=new _t(sn);an=new _t(an);var M=_t;import{PublicKey as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ds}from"@solana/spl-token";import{PublicKey as le,SystemProgram as nr,SYSVAR_RENT_PUBKEY as ps}from"@solana/web3.js";function x({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var uu=[x({pubkey:ds,isWritable:!1}),x({pubkey:nr.programId,isWritable:!1}),x({pubkey:ps,isWritable:!1})];function Xn({publicKey:i,transformSol:e}){let t=zn(i.toString());if(t instanceof le)return e&&t.equals(vt)?Ve:t;if(e&&t.toString()===vt.toBase58())return Ve;if(typeof t=="string"){if(t===le.default.toBase58())return le.default;try{return new le(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function zn(i){try{return new le(i)}catch{return i}}var dn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Qn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),yt=new le("SysvarRent111111111111111111111111111111111"),cu=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),lu=new le("Sysvar1nstructions1111111111111111111111111"),fs=nr.programId,mu=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),du=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),pu=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),fu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),bu=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),yu=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),gu=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Au=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Pu=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ku=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),wu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ve=new le("So11111111111111111111111111111111111111112"),vt=le.default;function He(i){return Xn({publicKey:i,transformSol:!0})}import{PublicKey as bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Hn={chainId:101,address:bs.default.toBase58(),programId:ir.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ir.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 jn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===vt.toBase58()||e instanceof Yn&&vt.equals(e)){this.decimals=Ye.decimals,this.symbol=Ye.symbol,this.name=Ye.name,this.mint=new Yn(Ye.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?Yn.default:Xn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=jn;Re.WSOL=new jn(X(_({},Ye),{mint:Ye.address}));import fn from"big.js";import As from"bn.js";import Ps from"decimal.js-light";import ys from"toformat";var gs=ys,Dt=gs;var pn=se("module/fraction"),Zn=Dt(fn),Vt=Dt(Ps),ks={[0]:Vt.ROUND_DOWN,[1]:Vt.ROUND_HALF_UP,[2]:Vt.ROUND_UP},ws={[0]:fn.roundDown,[1]:fn.roundHalfUp,[2]:fn.roundUp},ie=class{constructor(e,t=new As(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ie(this.denominator,this.numerator)}add(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.add(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.sub(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||pn.logWithError(`${e} is not an integer.`),e<=0&&pn.logWithError(`${e} is not positive.`),Vt.set({precision:e+1,rounding:ks[n]});let r=new Vt(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)||pn.logWithError(`${e} is not an integer.`),e<0&&pn.logWithError(`${e} is negative.`),Zn.DP=e,Zn.RM=ws[n]||1,new Zn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ts=se("Raydium_price"),Ce=class extends ie{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new ie(Jn(n.decimals),Jn(r.decimals))}get raw(){return new ie(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ts.logWithError("mul token not equals");let n=super.mul(t);return new Ce({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var $n=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},bn=$n;bn.SOL=new $n(Hn);import Bs from"bn.js";var rr=new ie(new Bs(100)),lt=class extends ie{toSignificant(e=5,t,n){return this.mul(rr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(rr).toFixed(e,t,n)}};var or=new Ne(0),xs=new Ne(1),gc=new Ne(2),Ac=new Ne(3),Pc=new Ne(5),ei=new Ne(10),kc=new Ne(100),wc=new Ne(1e3),hc=new Ne(1e4),sr=9007199254740991;function ue(i){let e=se("Raydium_parseBigNumberish");if(i instanceof Ne)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ne(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=sr||i<=-sr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ne(String(i))):typeof i=="bigint"?new Ne(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ne(0))}function Jn(i){return ei.pow(ue(i))}var Ss=se("Raydium_amount"),ur=Dt(Is);function Ks(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")):Ss.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ce=class extends ie{constructor(t,n,r=!0,o){let s=new yn(0),a=ei.pow(new yn(t.decimals));if(r)s=ue(n);else{let c=new yn(0),u=new yn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Ks(n.toString(),t.decimals);c=ue(l),u=ue(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=se(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 ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ce(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 ur.DP=this.token.decimals,new ur(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ar(i){return typeof i=="object"&&i!==null&&![Re,ce,Cs,ie,Ns,Ce,lt].some(e=>typeof e=="object"&&i instanceof e)}function gt(i){return typeof i=="string"?zn(i):Array.isArray(i)?i.map(e=>gt(e)):ar(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,gt(t)])):i}import{PublicKey as Gt,sendAndConfirmTransaction as oi,Transaction as Ut,TransactionMessage as Xt,VersionedTransaction as zt}from"@solana/web3.js";import Vs from"axios";var J={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 Rs,ComputeBudgetProgram as cr,Transaction as mr,TransactionMessage as Ls,Keypair as dr,VersionedTransaction as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Os}from"@solana/spl-token";var lr=se("Raydium_txUtil"),fr=1644;function gn(i){let e=[],t=[];return i.microLamports&&(e.push(cr.setComputeUnitPrice({microLamports:i.microLamports})),t.push(J.SetComputeUnitPrice)),i.units&&(e.push(cr.setComputeUnitLimit({units:i.units})),t.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Nt(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 Ms(i,e){i.length<1&&lr.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&lr.logWithError(`no signers provided:, ${e.toString()}`);let t=new mr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<fr}catch{return!1}}function he(i,e){let[t,n]=Rs.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Wt({instructions:i,payer:e,signers:t}){return Ms(i,[e,...t])}function qt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=dr.generate().publicKey.toString()}){let o=new Ls({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new pr(o).serialize()).toString("base64").length<fr}catch{return!1}}var Es=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function At(i){let e=[];return i.forEach(t=>{t instanceof mr&&(t.recentBlockhash||(t.recentBlockhash=Os.toBase58()),t.feePayer||(t.feePayer=dr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof pr&&(n=Es(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as yr,AddressLookupTableAccount as An}from"@solana/web3.js";import{PublicKey as br}from"@solana/web3.js";import{MINT_SIZE as Fs,TOKEN_PROGRAM_ID as _s,getTransferFeeConfig as vs,unpackMint as Ds}from"@solana/spl-token";var ti=se("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=_({batchRequest:!1},t),s=ni(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=i._buildArgs([d.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=ni(c,10);a=(await(await Promise.all(u.map(async d=>await i._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:b,lamports:f,owner:y,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&ti.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:b,lamports:f,owner:new br(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Pt(i,e,t){let n=await et(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>X(_({},r),{accountInfo:n[o]}))}async function ii({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await Pt(i,e.map(c=>({pubkey:He(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Fs){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Ds(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=X(_({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||_s,feeConfig:(a=vs(u))!=null?a:void 0})}return r[br.default.toBase58()]=r[Ve.toBase58()],r}async function ri({connection:i,address:e}){let t=await et(i,[...new Set(e.map(r=>r.toString()))].map(r=>new yr(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new An({key:s,state:An.deserialize(o.data)});n[s.toString()]=a,Pn[s.toString()]=a}return n}var Pn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new An({key:new yr("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:An.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var kn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,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 Vs.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}=gn(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!==Gt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(_({},t||{})):this.build(t)}build(e){var n;let t=new Ut;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 Nt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),At([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await oi(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var y;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:b=!0}=l||{},f=p!=null?p:await Nt(this.connection,this.blockhashCommitment);if((y=this.owner)!=null&&y.isKeyPair){if(d){let g=[];for(let k of s){let P=await oi(this.connection,k,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});g.push(P)}return{txIds:g,signedTxs:s}}return{txIds:await await Promise.all(s.map(async g=>(g.recentBlockhash=f,await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((P,w)=>(P.recentBlockhash=f,a[w].length&&P.sign(...a[w]),P));At(g);let k=await this.signAllTransactions(g);if(d){let P=0,w=[],I=async()=>{if(!k[P])return;let h=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:b});w.push({txId:h,status:"sent",signedTx:k[P]}),m==null||m([...w]),P++,this.connection.onSignature(h,R=>{let S=w.findIndex(V=>V.txId===h);S>-1&&(w[S].status=R.err?"error":"success"),m==null||m([...w]),R.err||I()},"processed"),this.connection.getSignatureStatus(h)};return await I(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let I=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:b});P.push(I)}return{txIds:P,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var p;let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=m,o=bt(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=_(_({},this.cluster==="devnet"?{}:Pn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let b of a)s[b]===void 0&&c.push(new Gt(b));let u=await ri({connection:this.connection,address:c});for(let[b,f]of Object.entries(u))s[b]=f;let l=new Xt({payerKey:this.feePayer,recentBlockhash:r?Gt.default.toBase58():await Nt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let d=new zt(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var k;let{recentBlockHash:f,skipPreflight:y=!0,sendAndConfirm:g}=b||{};if(f&&(d.message.recentBlockhash=f),At([d]),(k=this.owner)!=null&&k.isKeyPair){let P=await this.connection.sendTransaction(d,{skipPreflight:y});if(g){let{lastValidBlockHeight:w,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:w,signature:P},"confirmed")}return{txId:P,signedTx:d}}if(this.signAllTransactions){let P=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:y}),signedTx:P[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(l=>l.builder.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var f;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:b=!0}=l||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),At(s),(f=this.owner)!=null&&f.isKeyPair){if(d){let y=[];for(let g of s){let k=await this.connection.sendTransaction(g,{skipPreflight:b}),{lastValidBlockHeight:P,blockhash:w}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:P,signature:k},"confirmed"),y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:b}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(d){let g=0,k=[],P=async()=>{if(!y[g])return;let w=await this.connection.sendTransaction(y[g],{skipPreflight:b});k.push({txId:w,status:"sent",signedTx:y[g]}),m==null||m([...k]),g++,this.connection.onSignature(w,I=>{let h=k.findIndex(R=>R.txId===w);h>-1&&(k[h].status=I.err?"error":"success"),m==null||m([...k]),I.err||P()},"processed"),this.connection.getSignatureStatus(w)};return P(),{txIds:[],signedTxs:y}}else{let g=[];for(let k=0;k<y.length;k+=1){let P=await this.connection.sendTransaction(y[k],{skipPreflight:b});g.push(P)}return{txIds:g,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let u=e||{},{computeBudgetConfig:t}=u,n=bt(u,["computeBudgetConfig"]),r=t?gn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((d,m)=>X(_({},d),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(d=>{let m=[...c,d],p=t?[...r.instructions,...m]:m,f=[...new Set(m.map(y=>y.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(y=>new Gt(y));if(c.length<12&&Wt({instructions:p,payer:this.feePayer,signers:f})||Wt({instructions:m,payer:this.feePayer,signers:f}))c.push(d);else{if(c.length===0)throw Error("item ins too big");Wt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:f})?s.push(new Ut().add(...r.instructions,...c)):s.push(new Ut().add(...c)),a.push(Array.from(new Set(c.map(y=>y.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(y=>o[y]).filter(y=>y!==void 0)),c=[d]}}),c.length>0){let m=[...new Set(c.map(p=>p.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Wt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Ut().add(...r.instructions,...c)):s.push(new Ut().add(...c)),a.push(m)}return s.forEach(d=>d.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(d=>{d.some(m=>m.publicKey.equals(this.owner.publicKey))||d.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async d=>{var g;let{sequentially:m,onTxUpdate:p,recentBlockHash:b,skipPreflight:f=!0}=d||{},y=b!=null?b:await Nt(this.connection,this.blockhashCommitment);if(s.forEach(async(k,P)=>{k.recentBlockhash=y,a[P].length&&k.sign(...a[P])}),At(s),(g=this.owner)!=null&&g.isKeyPair){if(m){let k=[];for(let P of s){let w=await oi(this.connection,P,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});k.push(w)}return{txIds:k,signedTxs:s}}return{txIds:await Promise.all(s.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let k=await this.signAllTransactions(s);if(m){let P=0,w=[],I=async()=>{if(!k[P])return;let h=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:f});w.push({txId:h,status:"sent",signedTx:k[P]}),p==null||p([...w]),P++,this.connection.onSignature(h,R=>{let S=w.findIndex(V=>V.txId===h);S>-1&&(w[S].status=R.err?"error":"success"),p==null||p([...w]),R.err||I()},"processed"),this.connection.getSignatureStatus(h)};return await I(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let I=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:f});P.push(I)}return{txIds:P,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var g;let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=y,o=bt(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=_(_({},this.cluster==="devnet"?{}:Pn),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let k of a)s[k]===void 0&&c.push(new Gt(k));let u=await ri({connection:this.connection,address:c});for(let[k,P]of Object.entries(u))s[k]=P;let l=t?gn(t):{instructions:[],instructionTypes:[]},d=await Nt(this.connection,this.blockhashCommitment),m=this.signers.reduce((k,P)=>X(_({},k),{[P.publicKey.toBase58()]:P}),{}),p=[],b=[],f=[];if(this.allInstructions.forEach(k=>{let P=[...f,k],w=t?[...l.instructions,...P]:P;if(f.length<12&&qt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||qt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(k);else{if(f.length===0)throw Error("item ins too big");let I={};for(let h of[...new Set(a)])s[h]!==void 0&&(I[h]=s[h]);if(t&&qt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let h=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zt(h))}else{let h=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zt(h))}b.push(Array.from(new Set(f.map(h=>h.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(h=>m[h]).filter(h=>h!==void 0)),f=[k]}}),f.length>0){let P=[...new Set(f.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(w=>m[w]).filter(w=>w!==void 0);if(t&&qt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let w=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zt(w))}else{let w=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zt(w))}b.push(P)}return(g=this.owner)!=null&&g.signer&&b.forEach(k=>{k.some(P=>P.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async k=>{var R;let{sequentially:P,onTxUpdate:w,recentBlockHash:I,skipPreflight:h=!0}=k||{};if(p.map(async(S,V)=>{b[V].length&&S.sign(b[V]),I&&(S.message.recentBlockhash=I)}),At(p),(R=this.owner)!=null&&R.isKeyPair){if(P){let S=[];for(let V of p){let T=await this.connection.sendTransaction(V,{skipPreflight:h}),{lastValidBlockHeight:O,blockhash:re}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:re,lastValidBlockHeight:O,signature:T},"confirmed"),S.push(T)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:h}))),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(P){let V=0,T=[],O=async()=>{if(!S[V])return;let re=await this.connection.sendTransaction(S[V],{skipPreflight:h});T.push({txId:re,status:"sent",signedTx:S[V]}),w==null||w([...T]),V++,this.connection.onSignature(re,j=>{let fe=T.findIndex(Z=>Z.txId===re);fe>-1&&(T[fe].status=j.err?"error":"success"),w==null||w([...T]),j.err||O()},"processed"),this.connection.getSignatureStatus(re)};return O(),{txIds:[],signedTxs:S}}else{let V=[];for(let T=0;T<S.length;T+=1){let O=await this.connection.sendTransaction(S[T],{skipPreflight:h});V.push(O)}return{txIds:V,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function ni(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 ee}from"@solana/web3.js";var Ll=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ol=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ml=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),El=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Fl=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),si=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ar=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_l=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Pr=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kr=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),vl=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Dl=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Vl=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Wl=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ql=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Gl=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wr=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ul=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Xl=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ws=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),qs=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Gs=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var zl={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ws,CREATE_CPMM_POOL_AUTH:qs,CREATE_CPMM_POOL_FEE_ACC:Gs,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Us}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xs}from"@solana/spl-token";function je(i,e,t){return he([i.toBuffer(),(t!=null?t:Xs).toBuffer(),e.toBuffer()],new Us("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var Qt=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=X(_({},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 We(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===Qt){let c=new We(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=ai(i.mul(new We(Qt)),new We(Qt-o.transferFeeBasisPoints)),u=new We(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,d=ai(l.mul(new We(o.transferFeeBasisPoints)),new We(Qt)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=ai(i.mul(new We(o.transferFeeBasisPoints)),new We(Qt)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function Ze(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function ai(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}var ui=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Rt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new kn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ui(e))}logInfo(...e){this.logger.info(ui(e))}logAndCreateError(...e){let t=ui(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as ma,createCloseAccountInstruction as da,createTransferInstruction as pa,TOKEN_PROGRAM_ID as Lt}from"@solana/spl-token";import{PublicKey as fa,SystemProgram as ba}from"@solana/web3.js";import ya from"bn.js";import{PublicKey as aa,Keypair as ua}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ca}from"@solana/spl-token";import _d from"bn.js";import{PublicKey as ea}from"@solana/web3.js";import xr,{isBN as Ir}from"bn.js";import{bits as hm,BitStructure as Tm,blob as zs,Blob as Bm,cstr as xm,f32 as Im,f32be as Sm,f64 as Km,f64be as Cm,greedy as Nm,Layout as Qs,ns64 as Rm,ns64be as Lm,nu64 as Om,nu64be as Mm,offset as Em,s16 as Fm,s16be as _m,s24 as vm,s24be as Dm,s32 as Hs,s32be as Vm,s40 as Wm,s40be as qm,s48 as Gm,s48be as Um,s8 as Xm,seq as Ys,struct as zm,Structure as js,u16 as Zs,u16be as Qm,u24 as Hm,u24be as Ym,u32 as jm,u32be as Zm,u40 as Jm,u40be as $m,u48 as ed,u48be as td,u8 as Js,UInt as $s,union as nd,Union as id,unionLayoutDiscriminator as rd,utf8 as od}from"@solana/buffer-layout";var ci=Qs,hr=js;var li=$s;var Tr=Js,mt=Zs;var Te=Hs;var Br=Ys;var ge=zs;var Ht=class extends ci{constructor(t,n,r){super(t,r);this.blob=ge(t),this.signed=n}decode(t,n=0){let r=new xr(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 xr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function z(i){return new li(1,i)}function Ee(i){return new li(4,i)}function A(i){return new Ht(8,!1,i)}function G(i){return new Ht(16,!1,i)}function Sr(i){return new Ht(16,!0,i)}var wn=class extends ci{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 K(i){return new wn(ge(32),e=>new ea(e),e=>e.toBuffer(),i)}function Fe(i){return new wn(Tr(),ta,na,i)}function ta(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function na(i){return i?1:0}var mi=class extends hr{decode(e,t){return super.decode(e,t)}};function v(i,e,t){return new mi(i,e,t)}function ne(i,e,t){let n,r=typeof e=="number"?e:Ir(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ir(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 Br(i,r,t)}var hn=v([K("mint"),K("owner"),A("amount"),Ee("delegateOption"),K("delegate"),z("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),K("closeAuthority")]);function ia(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function di(i,...e){if(!ia(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 pi(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 Kr(i,e){di(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Bn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),qe=(i,e)=>i<<32-e|i>>>e;var hd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ra(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function fi(i){return typeof i=="string"&&(i=ra(i)),di(i),i}var Tn=class{clone(){return this._cloneInto()}},Td={}.toString;function Cr(i){let e=n=>i().update(fi(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function oa(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 Nr=(i,e,t)=>i&e^~i&t,Rr=(i,e,t)=>i&e^i&t^e&t,xn=class extends Tn{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=Bn(this.buffer)}update(e){pi(this);let{view:t,buffer:n,blockLen:r}=this;e=fi(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=Bn(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){pi(this),Kr(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 d=s;d<r;d++)t[d]=0;oa(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Bn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],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 sa=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]),dt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),pt=new Uint32Array(64),bi=class extends xn{constructor(){super(64,32,8,!1),this.A=dt[0]|0,this.B=dt[1]|0,this.C=dt[2]|0,this.D=dt[3]|0,this.E=dt[4]|0,this.F=dt[5]|0,this.G=dt[6]|0,this.H=dt[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 d=0;d<16;d++,t+=4)pt[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=pt[d-15],p=pt[d-2],b=qe(m,7)^qe(m,18)^m>>>3,f=qe(p,17)^qe(p,19)^p>>>10;pt[d]=f+pt[d-7]+b+pt[d-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=qe(a,6)^qe(a,11)^qe(a,25),p=l+m+Nr(a,c,u)+sa[d]+pt[d]|0,f=(qe(n,2)^qe(n,13)^qe(n,22))+Rr(n,r,o)|0;l=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,l=l+this.H|0,this.set(n,r,o,s,a,c,u,l)}roundClean(){pt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Lr=Cr(()=>new bi);var Wd=se("Raydium_Util");function In({fromPublicKey:i,programId:e=ca}){let t=ua.generate().publicKey.toBase58().slice(0,32);return{publicKey:la(i,t,e),seed:t}}function la(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Lr(n);return new aa(r)}function ga(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Lt}=i;return ma(t,e,n,r)}function Ot(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Lt}=i;return da(e,t,r,n,o)}async function yi(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(hn.span,n),c=ue(t).add(new ya(a)),u=In({fromPublicKey:r,programId:Lt});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[ba.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:hn.span,programId:Lt}),ga({mint:new fa(Ye.address),tokenAccount:u.publicKey,owner:o,programId:Lt})],instructionTypes:[J.CreateAccount,J.InitAccount],endInstructionTypes:s?[]:[J.CloseAccount],endInstructions:s?[]:[Ot({tokenAccount:u.publicKey,payer:r,owner:o})]}}function gi({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Lt}){return pa(i,e,t,BigInt(String(n)),r,o)}import Or from"bn.js";var rp=new Or(25),op=new Or(1e4);var Ai=v([z("instruction"),A("amountIn"),A("minAmountOut")]),Pi=v([z("instruction"),A("maxAmountIn"),A("amountOut")]),dp=v([z("instruction"),z("nonce")]),Aa=v([z("instruction"),z("nonce"),A("startTime")]),Mr=v([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),A("swapBase2QuoteFee"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),A("lpReserve"),ne(A(),3,"padding")]),pp=v([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),ne(A(),64,"padding")]),Pa=v([z("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),ka=v([z("instruction"),A("amountIn")]);var fp=v([A("fee")]);import{PublicKey as lf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{PublicKey as Ap}from"@solana/web3.js";import{MintLayout as kp,TOKEN_PROGRAM_ID as hp}from"@solana/spl-token";var Er=i=>new Re({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),Yt=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=bt(o,["amount","isRaw","name"]);return new ce(new Re({mint:He(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var kt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=bt(o,["address","programId","decimals"]);return _({chainId:101,address:He(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as Np}from"@solana/web3.js";var Op=se("Raydium_liquidity_serum");import{PublicKey as wa}from"@solana/web3.js";var ki=new wa("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ha=5e4,Ta=v([A("x"),A("y"),A("price")]),vp=v([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),ne(Ta,ha,"DataElement")]);import{TOKEN_PROGRAM_ID as _r,ASSOCIATED_TOKEN_PROGRAM_ID as Wp}from"@solana/spl-token";import{PublicKey as Gp,TransactionInstruction as vr,SystemProgram as Up,SYSVAR_RENT_PUBKEY as Xp}from"@solana/web3.js";var Fr=se("Raydium_liquidity_instruction");function Ba({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=gt(i),s=Buffer.alloc(Ai.span);Ai.encode({instruction:9,amountIn:ue(t),minAmountOut:ue(n)},s);let a=[x({pubkey:_r,isWritable:!1}),x({pubkey:o.id}),x({pubkey:o.authority,isWritable:!1}),x({pubkey:o.openOrders})];return r===4&&a.push(x({pubkey:o.targetOrders})),a.push(x({pubkey:o.vault.A}),x({pubkey:o.vault.B})),r===5&&a.push(x({pubkey:ki})),a.push(x({pubkey:o.marketProgramId,isWritable:!1}),x({pubkey:o.marketId}),x({pubkey:o.marketBids}),x({pubkey:o.marketAsks}),x({pubkey:o.marketEventQueue}),x({pubkey:o.marketBaseVault}),x({pubkey:o.marketQuoteVault}),x({pubkey:o.marketAuthority,isWritable:!1}),x({pubkey:e.tokenAccountIn}),x({pubkey:e.tokenAccountOut}),x({pubkey:e.owner,isWritable:!1})),new vr({programId:o.programId,keys:a,data:s})}function xa({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=gt(i),s=Buffer.alloc(Pi.span);Pi.encode({instruction:11,maxAmountIn:ue(t),amountOut:ue(n)},s);let a=[x({pubkey:_r,isWritable:!1}),x({pubkey:o.id}),x({pubkey:o.authority,isWritable:!1}),x({pubkey:o.openOrders}),x({pubkey:o.targetOrders}),x({pubkey:o.vault.A}),x({pubkey:o.vault.B})];return r===5&&a.push(x({pubkey:ki})),a.push(x({pubkey:o.marketProgramId,isWritable:!1}),x({pubkey:o.marketId}),x({pubkey:o.marketBids}),x({pubkey:o.marketAsks}),x({pubkey:o.marketEventQueue}),x({pubkey:o.marketBaseVault}),x({pubkey:o.marketQuoteVault}),x({pubkey:o.marketAuthority,isWritable:!1}),x({pubkey:e.tokenAccountIn}),x({pubkey:e.tokenAccountOut}),x({pubkey:e.owner,isWritable:!1,isSigner:!0})),new vr({programId:o.programId,keys:a,data:s})}function Dr(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ba(X(_({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return xa(X(_({},a),{maxAmountIn:r,amountOut:o}),t);Fr.logWithError("invalid params","params",i)}throw Fr.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import Af from"bn.js";function Sa({programId:i}){let{publicKey:e}=he([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Vr({programId:i}){return he([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var wi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Wr=i=>{let e={},t=Ia.toBase58();return Object.keys(i).map(n=>{let r=i[n],[o,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:kt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:kt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new M(r.mintAAmount.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new M(r.mintBAmount.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new M(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:wi,week:wi,month:wi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Sa({programId:r.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:kt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import Fa from"bn.js";function Sn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function hi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Ti(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function jt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function qr(i,e){return jt(i,e)?null:hi(i,e)}function Gr(i,e){return jt(i,e)?null:Ti(i,e)}var Lf=Buffer.from("amm_config","utf8"),Ka=Buffer.from("pool","utf8"),Ca=Buffer.from("pool_vault","utf8"),Na=Buffer.from("pool_reward_vault","utf8"),Ur=Buffer.from("position","utf8"),Ra=Buffer.from("tick_array","utf8"),La=Buffer.from("operation","utf8"),Oa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Xr(i,e,t,n){return he([Ka,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Bi(i,e,t){return he([Ca,e.toBuffer(),t.toBuffer()],i)}function zr(i,e,t){return he([Na,e.toBuffer(),t.toBuffer()],i)}function oe(i,e,t){return he([Ra,e.toBuffer(),Sn(t)],i)}function wt(i,e,t,n){return he([Ur,e.toBuffer(),Sn(t),Sn(n)],i)}function Ge(i,e){return he([Ur,e.toBuffer()],i)}function Kn(i){return he([Buffer.from("metadata","utf8"),Ct.toBuffer(),i.toBuffer()],Ct)}function Cn(i){return he([La],i)}function Le(i,e){return he([Oa,e.toBuffer()],i)}import _e from"bn.js";var de=new _e(0),Oe=new _e(1),tt=new _e(-1),Me=new _e(1).shln(64),Nn=new _e(1).shln(128),xi=Me.sub(Oe),Zt=64,Qr=Nn.subn(1),Ie=-443636,Se=-Ie,nt=new _e("4295048016"),it=new _e("79226673521066979257578248091"),Rn=new _e("4295048017"),Ln=new _e("79226673521066979257578248090"),Hr=16,Yr="59543866431248",jr="184467440737095516",Zr="15793534762490258745",On=new _e(10).pow(new _e(6));var Ef=new _e("18446744073700000000");var Ma=15,$=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=E.getTickArrayStartIndexByTick(r,o),l=E.getInitializedTickArrayInRange(s,a,o,u,Math.floor(Ma/2));for(let p=0;p<l.length;p++){let{publicKey:b}=oe(t,n,l[p]);c.push(b)}let d=(await et(e,c)).map(p=>p!==null?Jt.decode(p.data):null),m={};for(let p=0;p<c.length;p++){let b=d[p];b!==null&&(m[b.startTickIndex]=X(_({},b),{address:c[p]}))}return m}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=E.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,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/$.tickCount(t)),a=n?E.searchLowBitFromStart(r,o,s-1,1,t):E.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=Ae-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<Ae;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=oe(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=E.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 l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<Ae;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=oe(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Se)return!1;let n=E.getTickArrayStartIndexByTick(Ie,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ae*e}};import Y from"bn.js";import{PublicKey as Ue}from"@solana/web3.js";import pe from"bn.js";var Ii=14,rt=class{static maxTickInTickarrayBitmap(e){return e*Ae*ht}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(!$.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-$.tickCount(n):t+$.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ae,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),d=qr(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=Gr(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-$.tickCount(n)}}}},$t=class{static getBitmapOffset(e,t){if(!$.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=rt.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=rt.maxTickInTickarrayBitmap(e),n=-t;if(Se<=t)throw Error(`extensionTickBoundary check error: ${Se}, ${t}`);if(n<=Ie)throw Error(`extensionTickBoundary check error: ${n}, ${Ie}`);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:E.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=$.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}=rt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=E.mergeTickArrayBitmap(e).shln(ht-1-a),u=jt(512,c)?null:hi(512,c);if(u!==null){let l=t-u*$.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=E.mergeTickArrayBitmap(e).shrn(a),u=jt(512,c)?null:Ti(512,c);if(u!==null){let l=t+u*$.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-$.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),r=Math.floor(n/$.tickCount(t));return e<0&&n!=0&&(r=ht-r),r}};import Je from"bn.js";var en=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=Q.wrappingSubU128(Q.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=Q.wrappingSubU128(Q.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=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}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],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}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(Q.wrappingSubU128(Q.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(Q.wrappingSubU128(Q.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,g,k,P;let a=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),c=H.getSqrtPriceX64FromTick(t.tickLower),u=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,d=te.getAmountsFromLiquidity(a,c,u,n,o),[m,p]=[ye(d.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ye(d.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[b,f]=[ye(new Je(new M(d.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),ye(new Je(new M(d.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:b,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Jr}from"@solana/spl-token";var Pe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:p,accounts:b,sqrtPriceX64:f,feeAmount:y}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,s);return c.push(...b),{allTrade:m,expectedAmountOut:p.mul(tt),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:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=oe(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:b}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(tt),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?$t.checkTickArrayIsInit($.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=oe(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,$.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=oe(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/$.tickCount(e.tickSpacing)),r=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.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=$.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=$t.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ie||t>Se)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 l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=X(_({},d),{perSecond:Q.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ue(m)});if(p.tokenMint.equals(Ue.default))continue;if(n<=p.openTime.toNumber()||r.eq(de)){s.push(p);continue}let b=new pe(Math.min(p.endTime.toNumber(),n)),f=b.sub(p.lastUpdateTime),y=Q.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(y),k=Q.mulDivFloor(f,p.emissionsPerSecondX64,Me),P=p.rewardTotalEmissioned.add(k);s.push(X(_({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:P,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=E.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>Se&&(t=$.getArrayStartIndex(Se,e)+$.tickCount(e)),n<Ie&&(n=$.getArrayStartIndex(Ie,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!$.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/$.tickCount(t)*ht}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Pt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=$r.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=E.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=E.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=oe(c.programId,c.id,d);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Pt(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 l=Jt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=X(_({},l),{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(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let p of s)u.push(Ge(p,m).publicKey);let l=await et(t,u,{batchRequest:r}),d={};for(let m of l){if(m===null)continue;let p=Si.decode(m.data),b=p.poolId.toString(),f=e.find(S=>S.state.id.toBase58()===b);if(f===void 0)continue;let y=f.state,g=E._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),k=E._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:w}=te.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(g.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:k.price,amountA:P,amountB:w,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(S=>X(_({},S),{pendingReward:new pe(0)})),leverage:I,tokenFeeAmountA:new pe(0),tokenFeeAmountB:new pe(0)}];let h=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),R=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=h,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=R}if(o){let m=Object.values(d),p=await et(t,m,{batchRequest:r}),b={};for(let f=0;f<m.length;f++){let y=p[f];if(y===null)continue;let g=m[f].toString();b[g]=Jt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let g of y){let k=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,P=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,w=b[d[k].toString()],I=b[d[P].toString()],h=w.ticks[E.getTickOffsetInArray(g.tickLower,f.tickSpacing)],R=I.ticks[E.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:S,tokenFeeAmountB:V}=await en.GetPositionFees(f,g,h,R),T=await en.GetPositionRewards(f,g,h,R);g.tokenFeeAmountA=S.gte(new pe(0))?S:new pe(0),g.tokenFeeAmountB=V.gte(new pe(0))?V:new pe(0);for(let O=0;O<T.length;O++)g.rewardInfos[O].pendingReward=T[O].gte(new pe(0))?T[O]:new pe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0),catchLiquidityInsufficient:c=!1}){var re;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=l?nt.add(new pe(1)):it.sub(new pe(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ye(o,d,r,!1),{allTrade:b,expectedAmountOut:f,remainingAccounts:y,executionPrice:g,feeAmount:k}=Pe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((re=p.fee)!=null?re:de),u,c),P=ye(f,m,r,!1),w=H.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),I=l?w:new M(1).div(w),h=f.mul(new pe(Math.floor((1-s)*1e10))).div(new pe(1e10)),R=ye(h,m,r,!1),S=l?e.currentPrice:new M(1).div(e.currentPrice),V=new M(I).sub(S).abs(),T=S,O=new lt(new M(V).mul(10**15).toFixed(0),new M(T).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:p,amountOut:P,minAmountOut:R,expirationTime:Ze(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:O,fee:k,remainingAccounts:y,executionPriceX64:g}}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,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new Re(X(_({},u),{mint:u.address,isToken2022:u.programId===Jr.toBase58()})),new Re(X(_({},l),{mint:l.address,isToken2022:l.programId===Jr.toBase58()}))],{allTrade:p,realAmountIn:b,amountOut:f,minAmountOut:y,expirationTime:g,currentPrice:k,executionPrice:P,priceImpact:w,fee:I,remainingAccounts:h,executionPriceX64:R}=Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ue(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),S=X(_({},b),{amount:new ce(d,b.amount),fee:b.fee===void 0?void 0:new ce(d,b.fee)}),V=X(_({},f),{amount:new ce(m,f.amount),fee:f.fee===void 0?void 0:new ce(m,f.fee)}),T=X(_({},y),{amount:new ce(m,y.amount),fee:y.fee===void 0?void 0:new ce(m,y.fee)}),O=new Ce({baseToken:d,denominator:new pe(10).pow(new pe(20+d.decimals)),quoteToken:m,numerator:k.mul(new M(10**(20+m.decimals))).toFixed(0)}),re=new Ce({baseToken:d,denominator:new pe(10).pow(new pe(20+d.decimals)),quoteToken:m,numerator:P.mul(new M(10**(20+m.decimals))).toFixed(0)}),j=new ce(d,I);return{allTrade:p,realAmountIn:S,amountOut:V,minAmountOut:T,expirationTime:g,currentPrice:O,executionPrice:re,priceImpact:w,fee:j,remainingAccounts:h,executionPriceX64:R}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,y;let o=e[t],s=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=E.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{feeApr:o.feeApr*p,rewardsApr:[((b=o.rewardApr[0])!=null?b: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,l=e[n],d=r[He(e.mintA.address).toString()],m=r[He(e.mintB.address).toString()],p=e.mintA.decimals,b=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),y=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:P}=te.getAmountsFromLiquidityWithSlippage(f,y,g,t,!1,!1,0),{amountSlippageA:w,amountSlippageB:I}=te.getAmountsFromLiquidityWithSlippage(f,y,g,o,!1,!1,0),h=new M(k.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(P.toString()).div(new M(10).pow(b)).mul(m.value)),R=new M(w.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(I.toString()).div(new M(10).pow(b)).mul(m.value)),S=new M(1).div(h.add(R)),T=new M(l.volumeFee).mul(365).div(u).mul(S).mul(100).toNumber(),O=3600*24*365,re=e.rewardDefaultInfos.map(j=>{var D,nn;let fe=j.mint.decimals,Z=r[j.mint.address];return c<((D=j.startTime)!=null?D:0)||c>((nn=j.endTime)!=null?nn:0)||!j.perSecond||!Z||fe===void 0?0:new M(Z.value).mul(new M(j.perSecond).mul(O)).div(new M(10).pow(fe)).mul(S).mul(100).toNumber()});return{feeApr:T,rewardsApr:re,apr:T+re.reduce((j,fe)=>j+fe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,k;let l=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),d=H.getSqrtPriceX64FromTick(n),m=H.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,b=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new pe(new M(b.amount.sub((k=b.fee)!=null?k:de).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?te.getLiquidityFromTokenAmountA(d,m,f,!a):new pe(0);else if(l.lte(m)){let P=te.getLiquidityFromTokenAmountA(l,m,f,!a),w=te.getLiquidityFromTokenAmountB(d,l,f);y=t?P:w}else y=t?new pe(0):te.getLiquidityFromTokenAmountB(d,m,f);return Pe.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,g,k,P;let c=H.getSqrtPriceX64FromTick(n),u=H.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,d=te.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,p]=[ye(d.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ye(d.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[b,f]=[ye(d.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),ye(d.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:p,amountSlippageA:b,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ue(c.id));(await et(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=Mt.decode(c.data))});let s=t.map(c=>Le(new Ue(c.programId),new Ue(c.id)).publicKey),a=await Pe.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>X(_({},c),{[u.id]:X(_({},n[u.id]),{id:new Ue(u.id),version:6,programId:new Ue(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:X(_({},u.config),{id:new Ue(u.config.id),fundOwner:""}),currentPrice:new M(u.price),exBitmapInfo:a[Le(new Ue(u.programId),new Ue(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]}};var Q=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(de)||(o=o.add(Oe)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(Oe)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new Y(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Nn).sub(t).mod(Nn)}};function ke(i,e){return Ki(i.mul(e),64,256)}function Ea(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ki(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return Q.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Q.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln(Zt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Q.mulDivCeil(s,e,a):Q.mulDivRoundingUp(s,Oe,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 Q.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Zt);if(r)return e.add(o.div(t));{let s=Q.mulDivRoundingUp(o,Oe,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ie||e>Se)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new Y("18445821805675395072"):new Y("18446744073709551616");return(t&2)!=0&&(n=ke(n,new Y("18444899583751176192"))),(t&4)!=0&&(n=ke(n,new Y("18443055278223355904"))),(t&8)!=0&&(n=ke(n,new Y("18439367220385607680"))),(t&16)!=0&&(n=ke(n,new Y("18431993317065453568"))),(t&32)!=0&&(n=ke(n,new Y("18417254355718170624"))),(t&64)!=0&&(n=ke(n,new Y("18387811781193609216"))),(t&128)!=0&&(n=ke(n,new Y("18329067761203558400"))),(t&256)!=0&&(n=ke(n,new Y("18212142134806163456"))),(t&512)!=0&&(n=ke(n,new Y("17980523815641700352"))),(t&1024)!=0&&(n=ke(n,new Y("17526086738831433728"))),(t&2048)!=0&&(n=ke(n,new Y("16651378430235570176"))),(t&4096)!=0&&(n=ke(n,new Y("15030750278694412288"))),(t&8192)!=0&&(n=ke(n,new Y("12247334978884435968"))),(t&16384)!=0&&(n=ke(n,new Y("8131365268886854656"))),(t&32768)!=0&&(n=ke(n,new Y("3584323654725218816"))),(t&65536)!=0&&(n=ke(n,new Y("696457651848324352"))),(t&131072)!=0&&(n=ke(n,new Y("26294789957507116"))),(t&262144)!=0&&(n=ke(n,new Y("37481735321082"))),e>0&&(n=Qr.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Y(t-64),r=Ea(n,32,128),o=new Y("8000000000000000","hex"),s=0,a=new Y(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Y(0))&&s<Hr;){c=c.mul(c);let b=c.shrn(127);c=c.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let u=a.shrn(32),d=r.add(u).mul(new Y(Yr)),m=Ki(d.sub(new Y(jr)),64,128).toNumber(),p=Ki(d.add(new Y(Zr)),64,128).toNumber();return m==p?m:H.getSqrtPriceX64FromTick(p).lte(e)?p:m}},Bt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=H.getTickFromSqrtPriceX64(H.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=Bt.getTickWithPriceAndTickspacing(e,t,n,r),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,r)}},te=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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Zt),s=t.sub(e);return r?Q.mulDivRoundingUp(Q.mulDivCeil(o,s,t),Oe,e):Q.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return r?Q.mulDivCeil(n,t.sub(e),Me):Q.mulDivFloor(n,t.sub(e),Me)}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?Q.mulDivRoundingUp(a,Oe,xi):a.shrn(Zt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Q.mulDivFloor(n,xi,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return te.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=te.getLiquidityFromTokenAmountA(e,n,r,!1),a=te.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return te.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:te.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new Y(0)};if(e.lt(n)){let s=te.getTokenAmountAFromLiquidity(e,n,r,o),a=te.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new Y(0),amountB:te.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=te.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,d=new Y(new M(c.toString()).mul(l).toFixed(0)),m=new Y(new M(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var k,P,w,I;let u=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),d=H.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,p=te.getAmountsFromLiquidity(u,l,d,r,s),[b,f]=[ye(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),ye(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[y,g]=[ye(new Y(new M(p.amountA.toString()).mul(m).toFixed(0)),(w=e.mintA.extensions)==null?void 0:w.feeConfig,a,c),ye(new Y(new M(p.amountB.toString()).mul(m).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,c)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:y,amountSlippageB:g,expirationTime:Ze(b.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f=!1){if(m.eq(de))throw new Error("amountSpecified must not be 0");if(b||(b=s?nt.add(Oe):it.sub(Oe)),s){if(b.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt(de),g={amountSpecifiedRemaining:m,amountCalculated:de,sqrtPriceX64:d,tick:u>p?Math.min(p+$.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new Y(0)},k=p,P=n[p],w=0,I=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(de)&&!g.sqrtPriceX64.eq(b);){w>10;let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let R=E.nextInitTick(P,g.tick,l,s,I),S=R||null,V=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let O=Pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!O.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}k=O.nextStartIndex;let{publicKey:re}=oe(e,t,k);V=re,P=n[k];try{S=E.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),p!==k&&V&&(g.accounts.push(V),p=k),h.tickNext<Ie?h.tickNext=Ie:h.tickNext>Se&&(h.tickNext=Se),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let T;if(s&&h.sqrtPriceNextX64.lt(b)||!s&&h.sqrtPriceNextX64.gt(b)?T=b:T=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=Tt.swapStepCompute(g.sqrtPriceX64,T,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(h.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let O=S.liquidityNet;s&&(O=O.mul(tt)),g.liquidity=te.addDelta(g.liquidity,O)}I=h.tickNext!=g.tick&&!s&&P.startTickIndex===h.tickNext,g.tick=s?h.tickNext-1:h.tickNext}else if(g.sqrtPriceX64!=h.sqrtPriceStartX64){let O=H.getTickFromSqrtPriceX64(g.sqrtPriceX64);I=O!=g.tick&&!s&&P.startTickIndex===O,g.tick=O}++w}try{let{nextStartIndex:h,isExist:R}=$.nextInitializedTickArray(g.tick,l,s,r,o);R&&p!==h&&(g.accounts.push(oe(e,t,h).publicKey),p=h)}catch{}return{allTrade:!0,amountSpecifiedRemaining:de,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new Y(0),amountIn:new Y(0),amountOut:new Y(0),feeAmount:new Y(0)},a=e.gte(t),c=r.gte(de);if(c){let l=Q.mulDivFloor(r,On.sub(new Y(o.toString())),On);s.amountIn=a?te.getTokenAmountAFromLiquidity(t,e,n,!0):te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?te.getTokenAmountBFromLiquidity(t,e,n,!1):te.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,r.mul(tt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=te.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=te.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:te.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:te.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(tt))&&(s.amountOut=r.mul(tt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Q.mulDivCeil(s.amountIn,new Y(o),On.sub(new Y(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ae=60,ht=512,E=class{static getTickArrayAddressByTick(e,t,n,r){let o=E.getTickArrayStartIndexByTick(n,r),{publicKey:s}=oe(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Ae)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=$.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)*$.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ae,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ae,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*Ae:e+t*Ae}static mergeTickArrayBitmap(e){let t=new Fa(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ae));return[...E.searchLowBitFromStart(e,t,s-1,o,n),...E.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,0,ht,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=E.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=oe(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=>E.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=$.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=>E.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=$.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ie||e>Se}static nextInitTick(e,t,n,r,o){if($.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<Ae;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ae-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ae;){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=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var _a=v([ge(8),z("bump"),mt("index"),K(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),mt("tickSpacing"),ne(A(),8,"")]),va=v([Ee("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ne(G(),1,"")]),Ci=v([ge(8),Fe("initialized"),K("poolId"),ne(va,1e3,"observations"),ne(G(),5,"")]),Da=v([z("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),G("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),G("rewardGrowthGlobalX64")]),Mt=v([ge(8),z("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),z("mintDecimalsA"),z("mintDecimalsB"),mt("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),Te("tickCurrent"),mt("observationIndex"),mt("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),z("status"),ne(z(),7,""),ne(Da,3,"rewardInfos"),ne(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),ne(A(),15*4-3,"padding")]),Va=v([G("growthInsideLastX64"),A("rewardAmountOwed")]),Si=v([ge(8),z("bump"),K("nftMint"),K("poolId"),Te("tickLower"),Te("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(Va,3,"rewardInfos"),ne(A(),8,"")]),Gb=v([ge(8),z("bump"),K("poolId"),Te("tickLowerIndex"),Te("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(G(),3,"rewardGrowthInside"),ne(A(),8,"")]),Wa=v([Te("tick"),Sr("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ne(G(),3,"rewardGrowthsOutsideX64"),ne(Ee(),13,"")]),Jt=v([ge(8),K("poolId"),Te("startTickIndex"),ne(Wa,Ae,"ticks"),z("initializedTickCount"),ne(z(),115,"")]),qa=v([ge(329),ne(K(),100,"whitelistMints")]),$r=v([ge(8),K("poolId"),ne(ne(A(),8),Ii,"positiveTickArrayBitmap"),ne(ne(A(),8),Ii,"negativeTickArrayBitmap")]);var zb=v([ge(8),z("bump"),Fe("disableCreatePool"),mt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),K("protocolOwner"),K("fundOwner"),ne(A(),16)]),eo=v([ge(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),z("bump"),z("status"),z("lpDecimals"),z("mintDecimalA"),z("mintDecimalB"),A("lpAmount"),A("protocolFeesMintA"),A("protocolFeesMintB"),A("fundFeesMintA"),A("fundFeesMintB"),A("openTime"),ne(A(),32)]);import{TransactionInstruction as Ga}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jb,TOKEN_2022_PROGRAM_ID as $b,ASSOCIATED_TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";var iy=se("Raydium_cpmm"),Ua={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function to(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b,f){let y=v([A("amountIn"),A("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],k=Buffer.alloc(y.span);return y.encode({amountIn:b,amounOutMin:f},k),new Ga({keys:g,programId:i,data:Buffer.from([...Ua.swapBaseInput,...k])})}var Xa=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),sy=Buffer.from("amm_config","utf8"),ay=Buffer.from("pool","utf8"),uy=Buffer.from("pool_lp_mint","utf8"),cy=Buffer.from("pool_vault","utf8"),ly=Buffer.from("observation","utf8");function no(i){return he([Xa],i)}import za from"bn.js";var py=new za(1e6);import Qa from"bn.js";var Py=new Qa(0);import{PublicKey as eg}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Be,TOKEN_2022_PROGRAM_ID as ft,ASSOCIATED_TOKEN_PROGRAM_ID as io}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as Xe,SystemProgram as Et,Keypair as Ni}from"@solana/web3.js";import ro from"bn.js";var oo=se("Raydium_Clmm"),ze={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},tn=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b){let f=v([G("sqrtPriceX64"),A("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:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:b},g);let k=Buffer.from([...ze.createPool,...g]);return new Xe({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=In({fromPublicKey:r,programId:n}),[m,p]=[new L(o.address),new L(s.address)],b=[Et.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ci.span),space:Ci.span,programId:n})],{publicKey:f}=Xr(n,a,m,p),{publicKey:y}=Bi(n,f,m),{publicKey:g}=Bi(n,f,p);return b.push(this.createPoolInstruction(n,f,r,a,d.publicKey,m,y,new L(o.programId||Be),p,g,new L(s.programId||Be),Le(n,f).publicKey,c,u)),{signers:[],instructions:b,instructionTypes:[J.CreateAccount,J.ClmmCreatePool],address:{poolId:f,observationId:d.publicKey,mintAVault:y,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k,P,w,I,h,R,S,V,T){let O=v([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],j=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:io,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...re],fe=Buffer.alloc(O.span);O.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:I,liquidity:h,amountMaxA:R,amountMaxB:S,withMetadata:V==="create",baseFlag:!1,optionBaseFlag:0},fe);let Z=Buffer.from([...ze.openPosition,...fe]);return new Xe({keys:j,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new L(e.programId),new L(e.id)],b;if(l)b=new L((await l(1))[0]);else{let S=Ni.generate();d.push(S),b=S.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=oe(m,p,f),{publicKey:k}=oe(m,p,y),{publicKey:P}=je(n.wallet,b,Be),{publicKey:w}=Kn(b),{publicKey:I}=Ge(m,b),{publicKey:h}=wt(m,p,r,o),R=this.openPositionFromLiquidityInstruction(m,n.feePayer,p,n.wallet,b,P,w,h,g,k,I,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),r,o,f,y,s,a,c,u);return{signers:d,instructions:[R],instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:P,metadataAccount:w,personalPosition:I,protocolPosition:h}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new L(e.programId),new L(e.id)],b;if(l)b=new L((await l(1))[0]);else{let S=Ni.generate();d.push(S),b=S.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=oe(m,p,f),{publicKey:k}=oe(m,p,y),{publicKey:P}=je(n.wallet,b,Be),{publicKey:w}=Kn(b),{publicKey:I}=Ge(m,b),{publicKey:h}=wt(m,p,r,o),R=this.openPositionFromBaseInstruction(m,n.feePayer,p,n.wallet,b,P,w,h,g,k,I,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),r,o,f,y,u,s,a,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(m,p).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:P,metadataAccount:w,personalPosition:I,protocolPosition:h},instructions:[R],signers:d,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k,P,w,I,h,R,S,V,T){let O=v([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],j=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:io,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...re],fe=Buffer.alloc(O.span);O.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:I,liquidity:new ro(0),amountMaxA:R==="MintA"?S:V,amountMaxB:R==="MintA"?V:S,withMetadata:h==="create",baseFlag:R==="MintA",optionBaseFlag:1},fe);let Z=Buffer.from([...ze.openPosition,...fe]);return new Xe({keys:j,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new L((await l(1))[0]);else{let S=Ni.generate();m.push(S),d=S.publicKey}let[p,b]=[new L(e.programId),new L(e.id)],f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=oe(p,b,f),{publicKey:k}=oe(p,b,y),{publicKey:P}=je(n.wallet,d,Be),{publicKey:w}=Kn(d),{publicKey:I}=Ge(p,d),{publicKey:h}=wt(p,b,r,o),R=this.openPositionFromLiquidityInstruction(p,n.wallet,b,n.wallet,d,P,w,h,g,k,I,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(t.mintA.address),new L(t.mintB.address),r,o,f,y,s,a,c,u,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(p,b).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:P,metadataAccount:w,personalPosition:I,protocolPosition:h},instructions:[R],signers:m,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=v([]),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:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...ze.closePosition,...c]);return new Xe({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new L(e.programId),{publicKey:s}=je(n.wallet,r.nftMint,Be),{publicKey:a}=Ge(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:[J.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k){let P=v([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...w],h=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:y,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},h);let R=Buffer.from([...ze.increaseLiquidity,...h]);return new Xe({keys:I,programId:e,data:R})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new L(e.programId),new L(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=oe(c,u,l),{publicKey:p}=oe(c,u,d),{publicKey:b}=je(r.wallet,n.nftMint,Be),{publicKey:f}=Ge(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(c,r.wallet,b,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[g],instructionTypes:[J.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 L(e.programId),new L(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=oe(c,u,l),{publicKey:p}=oe(c,u,d),{publicKey:b}=je(r.wallet,n.nftMint,Be),{publicKey:f}=Ge(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,b,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0)],signers:[],instructionTypes:[J.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k){let P=v([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...w],h=Buffer.alloc(P.span);P.encode({liquidity:new ro(0),amountMaxA:f==="MintA"?y:g,amountMaxB:f==="MintA"?g:y,baseFlag:f==="MintA",optionBaseFlag:1},h);let R=Buffer.from([...ze.increaseLiquidity,...h]);return new Xe({keys:I,programId:e,data:R})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k,P){let w=v([G("liquidity"),A("amountMinA"),A("amountMinB")]),I=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(V=>[{pubkey:V.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:V.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:V.rewardMint,isSigner:!1,isWritable:!1}]).flat()],h=[{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:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...I],R=Buffer.alloc(w.span);w.encode({liquidity:y,amountMinA:g,amountMinB:k},R);let S=Buffer.from([...ze.decreaseLiquidity,...R]);return new Xe({keys:h,programId:e,data:S})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new L(e.programId),new L(e.id)],d=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=oe(u,l,d),{publicKey:b}=oe(u,l,m),{publicKey:f}=je(r.wallet,n.nftMint,c),{publicKey:y}=Ge(u,n.nftMint),{publicKey:g}=wt(u,l,n.tickLower,n.tickUpper),k=[];for(let w=0;w<e.rewardDefaultInfos.length;w++)k.push({poolRewardVault:new L(t.rewardInfos[w].vault),ownerRewardVault:r.rewardAccounts[w],rewardMint:new L(e.rewardDefaultInfos[w].mint.address)});let P=[];return P.push(this.decreaseLiquidityInstruction(u,r.wallet,f,y,l,g,p,b,r.tokenAccountA,r.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),k,o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?Le(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:g},signers:[],instructions:P,instructionTypes:[J.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g){let k=v([A("amount"),A("otherAmountThreshold"),G("sqrtPriceLimitX64"),Fe("isBaseInput")]),P=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...d.map(R=>({pubkey:R,isSigner:!1,isWritable:!0}))],w=[{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:m,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},I);let h=Buffer.from([...ze.swap,...I]);return new Xe({keys:w,programId:e,data:h})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new L(e.programId),new L(e.id)],[m,p]=[new L(t.vault.A),new L(t.vault.B)],[b,f]=[new L(e.mintA.address),new L(e.mintB.address)],y=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,d,new L(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?m:p,y?p:m,y?b:f,y?f:b,u,n,s,a,c,!0,Le(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[J.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=v([A("openTime"),A("endTime"),G("emissionsPerSecondX64")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ue(l),endTime:ue(d),emissionsPerSecondX64:m},f);let y=Buffer.from([...ze.initReward,...f]);return new Xe({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new L(e.programId),new L(e.id)],a=zr(o,s,r.mint).publicKey,c=Cn(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new L(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:[J.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=v([z("rewardIndex"),G("emissionsPerSecondX64"),A("openTime"),A("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,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:m,openTime:ue(l),endTime:ue(d)},f);let y=Buffer.from([...ze.setRewardEmissions,...f]);return new Xe({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new L(e.programId),new L(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new L(t.rewardInfos[m].vault),u=new L(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&oo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Cn(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new L(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[J.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=v([z("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:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...ze.collectReward,...l]);return new Xe({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new L(e.programId),new L(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new L(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&oo.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:[J.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,l]=[new L(e.programId),new L(e.id)],[d,m]=[new L(t.vault.A),new L(t.vault.B)],[p,b]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(u,n.wallet,l,new L(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?m:d,f?d:m,f?p:b,f?b:p,c,d,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[J.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import gg from"bn.js";import{AccountLayout as Pg,TOKEN_PROGRAM_ID as kg}from"@solana/spl-token";import _n from"bn.js";var Ug=v([Ee("mintAuthorityOption"),K("mintAuthority"),A("supply"),z("decimals"),z("isInitialized"),Ee("freezeAuthorityOption"),K("freezeAuthority")]);import{TOKEN_PROGRAM_ID as Ha,TOKEN_2022_PROGRAM_ID as Ya,ASSOCIATED_TOKEN_PROGRAM_ID as ja}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as Za,SystemProgram as Ja}from"@solana/web3.js";import xt from"bn.js";function $a(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b){var h;let f=[],y=[x({pubkey:Ha,isWritable:!1}),x({pubkey:Ya,isWritable:!1}),x({pubkey:ja,isWritable:!1}),x({pubkey:Ja.programId,isWritable:!1}),x({pubkey:e,isSigner:!0})];y.push(x({pubkey:t})),y.push(x({pubkey:r}));let g=[c,u],k=[l,d],P=[o,s,a];for(let R=0;R<g.length;R++){let S=g[R],V=P[R]===S.mintA.address;if(y.push(x({pubkey:new q(S.programId),isWritable:!1})),R===g.length-1?y.push(x({pubkey:r})):y.push(x({pubkey:n})),y.push(x({pubkey:new q(P[R])})),y.push(x({pubkey:new q(P[R+1])})),S.version===6){let T=k[R];y.push(x({pubkey:new q(T.config.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(V?T.vault.A:T.vault.B)})),y.push(x({pubkey:new q(V?T.vault.B:T.vault.A)})),y.push(x({pubkey:new q(S.observationId)})),y.push(x({pubkey:Qn})),y.push(x({pubkey:Le(new q(S.programId),new q(S.id)).publicKey})),f.push(eu(S.sqrtPriceX64.toString(),V));for(let O of(h=b[R])!=null?h:[])y.push(x({pubkey:new q(O)}))}else if(S.version===5){let T=k[R];y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.authority),isWritable:!1})),y.push(x({pubkey:new q(T.marketProgramId)})),y.push(x({pubkey:new q(T.marketAuthority)})),y.push(x({pubkey:Pr,isWritable:!1})),y.push(x({pubkey:new q(T.openOrders)})),y.push(x({pubkey:new q(T.vault.A)})),y.push(x({pubkey:new q(T.vault.B)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.marketId)})),y.push(x({pubkey:new q(T.marketBids)})),y.push(x({pubkey:new q(T.marketAsks)})),y.push(x({pubkey:new q(T.marketEventQueue)})),y.push(x({pubkey:new q(T.marketBaseVault)})),y.push(x({pubkey:new q(T.marketQuoteVault)}))}else if(S.version===4){let T=k[R],O=S.status!==1;y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.authority),isWritable:!1})),y.push(x({pubkey:new q(O?T.id:T.marketProgramId)})),y.push(x({pubkey:new q(O?T.id:T.marketAuthority)})),y.push(x({pubkey:new q(O?T.id:T.openOrders)})),y.push(x({pubkey:new q(T.vault.A)})),y.push(x({pubkey:new q(T.vault.B)})),y.push(x({pubkey:new q(O?T.id:T.marketId)})),y.push(x({pubkey:new q(O?T.id:T.marketBids)})),y.push(x({pubkey:new q(O?T.id:T.marketAsks)})),y.push(x({pubkey:new q(O?T.id:T.marketEventQueue)})),y.push(x({pubkey:new q(O?T.id:T.marketBaseVault)})),y.push(x({pubkey:new q(O?T.id:T.marketQuoteVault)}))}else if(S.version===7){let T=k[R];y.push(x({pubkey:new q(T.authority)})),y.push(x({pubkey:new q(T.config.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(V?T.vault.A:T.vault.B)})),y.push(x({pubkey:new q(V?T.vault.B:T.vault.A)})),y.push(x({pubkey:new q(S.observationId)}))}else throw Error("pool type error")}let w=v([z("insId"),A("amountIn"),A("amountOut"),ne(G(),f.length,"clmmPriceLimit")]),I=Buffer.alloc(w.span);return w.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},I),new Za({keys:y,programId:i,data:I})}function eu(i,e){if(i)if(e){let t=new xt(i).div(new xt(25));return t.gt(Rn)?t:Rn}else{let t=new xt(i).mul(new xt(25));return t.lt(Ln)?t:Ln}else return e?Rn:Ln}function so({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],m=gt(d),p=t.equals(m.mintA.address)?nt.add(Oe):it.sub(Oe);return tn.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new xt(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[to(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,m?d.vaultA:d.vaultB,m?d.vaultB:d.vaultA,m?d.mintProgramA:d.mintProgramB,m?d.mintProgramB:d.mintProgramA,new q(d[m?"mintA":"mintB"].address),new q(d[m?"mintB":"mintA"].address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?J.CpmmSwapBaseIn:J.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[Dr({poolKeys:d,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new xt(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?J.AmmV5SwapBaseIn:J.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],b=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[$a(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,m,p,b,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new xt(0)),n.remainingAccounts)],instructionTypes:[J.RouteSwap],lookupTableAddress:[p.lookupTableAccount,b.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var ao={[si.toBase58()]:3},uo={3:si};var Ri=v([ge(5),ge(8),K("ownAddress"),A("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),K("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),ge(7)]),co={3:Ri};import{PublicKey as lo}from"@solana/web3.js";var Mn=se("Serum"),En=class{static getProgramId(e){let t=uo[e];return t||Mn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ao[t];return n||Mn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=co[e];return t||Mn.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,o;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));o=lo.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return Mn.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:lo.default,nonce:r}}};var ot=new _n(0),Li=class extends Rt{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(Ve));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,o=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await yi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=ue(t);for(let u=0;u<o.length;u++)c.gte(o[u].amount)?(s.addInstruction({instructions:[Ot({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(o[u].amount)):(s.addInstruction({instructions:[Ot({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),gi({destination:a.addresses.newAccount,source:o[u].publicKey,amount:c,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),o=this.createTxBuilder(),s=await yi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return o.addInstruction(s),r.length&&o.addInstruction({instructions:[gi({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ot({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),o.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(Ve),d=u.amount.token.mint.equals(Ve),m=c.amount.token.mint,p=u.amount.token.mint,{account:b,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Fn:me,mint:m,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),b===void 0)throw Error("input account check error");let y;if(e.routeType==="route")y=this.scope.account.getAssociatedTokenAccount(p,u.amount.token.isToken2022?Fn:me);else{let{account:w,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Fn:me,mint:p,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});y=w,I&&a.addInstruction(I)}d&&a.addInstruction({endInstructions:[Ot({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:y,programId:me})],endInstructionTypes:[J.CloseAccount]});let g;if(e.routeType==="route"){let w=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(w.mint,w.isToken2022?Fn:me)}let k=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=so({routeProgram:o,inputMint:m,swapInfo:X(_({},e),{poolInfo:[...e.poolInfoList],poolKey:k,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:b,routeToken:g,destinationToken:y}});if(e.feeConfig!==void 0){let w=this.createTxBuilder();w.addInstruction({instructions:[mo(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]}),w.addInstruction(P);let{transactions:I}=s===0?await w.sizeCheckBuildV0():await w.sizeCheckBuild();I.length<2&&a.addInstruction({instructions:[mo(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]})}return a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Ar,clmm:n=kr,cpmm:r=wr}=e||{},o=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Mr.offsetOf("baseMint"),length:64}}),s=v([K("baseMint"),K("quoteMint")]),a=o.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=v([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:Mt.span}],dataSlice:{offset:Mt.offsetOf("mintA"),length:64}})).map(p=>{let b=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:b.mintA,mintB:b.mintB}}),m=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:eo.offsetOf("mintA"),length:64}})).map(p=>{let b=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:b.mintA,mintB:b.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:o}){e=e.toString()===It.default.toString()?Ve:e,t=t.toString()===It.default.toString()?Ve:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].out.push(m)}}let d=[];for(let m of r)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,d.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let p=l[m];for(let b of p.in)for(let f of p.out)b.version===6&&a[b.id.toString()]===void 0?a[b.id.toString()]=b:b.version===7&&o[b.id.toString()]===void 0?c[b.id.toString()]=b:(b.version===4||b.version===5)&&s[b.id.toString()]===void 0&&(s[b.id.toString()]=b),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&o[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let o=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=Wr(o),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new It(f.mintA.address),programId:me,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new It(f.mintB.address),programId:me,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[y,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(me)?(r.delete(y),a[y]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(y),f.mintProgramB.equals(me)?(r.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(g)}),console.log("fetching mints info, total: ",r.size);let u=await ii({connection:this.scope.connection,mints:Array.from(r).map(f=>new It(f))});a=_(_({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),b=Object.keys(e.routePathDict).reduce((f,y)=>X(_({},f),{[y]:X(_({},e.routePathDict[y]),{mintProgram:a[y].programId,mDecimals:a[y].decimals,in:e.routePathDict[y].in.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[y].out.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:d,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:l,routePathDict:b}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,k,P,w,I,h,R,S,V;let d=l===void 0?new _n(0):e.raw.mul(new _n(l.feeBps.toNumber())).div(new _n(1e4)),m=e.raw.sub(d),p=new ce(e.token,m),b=l===void 0?void 0:{feeAmount:d,feeAccount:l.feeAccount},f=X(_({},t),{address:He(t.address).toString()}),y=[];for(let T of n)try{y.push(X(_({},this.computeAmountOut({itemPool:T,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:b}))}catch(O){this.logDebug("direct error",T.version,T.id.toString(),O.message)}this.logDebug("direct done");for(let[T,O]of Object.entries(r)){let re={chainId:101,address:T,programId:O.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:O.mDecimals,tags:[],extensions:{}},j=O.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:re,amountIn:p})}}catch(D){this.logDebug("route in error",Z.version,Z.id.toString(),D.message);return}}).sort((Z,D)=>{var Oi,Mi,Ei,Fi;let nn=Z===void 0?ot:Z.data.amountOut.amount.raw.sub((Mi=(Oi=Z.data.amountOut.fee)==null?void 0:Oi.raw)!=null?Mi:ot),po=D===void 0?ot:D.data.amountOut.amount.raw.sub((Fi=(Ei=D.data.amountOut.fee)==null?void 0:Ei.raw)!=null?Fi:ot);return nn.lt(po)?1:-1})[0];if(j===void 0)continue;let fe=new ce(Er(re),j.data.amountOut.amount.raw.sub((k=(g=j.data.amountOut.fee)==null?void 0:g.raw)!=null?k:ot));for(let Z of O.out)try{let D=this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:fe});y.push(X(_({},D),{allTrade:!!(j.data.allTrade&&D.allTrade),amountIn:j.data.amountIn,amountOut:D.amountOut,minAmountOut:D.minAmountOut,currentPrice:void 0,executionPrice:new M(new Ce({baseToken:j.data.amountIn.amount.token,denominator:j.data.amountIn.amount.raw,quoteToken:D.amountOut.amount.token,numerator:D.amountOut.amount.raw.sub((w=(P=D.amountOut.fee)==null?void 0:P.raw)!=null?w:ot)}).toFixed()),priceImpact:new M(j.data.priceImpact.add(D.priceImpact).toFixed()),fee:[j.data.fee[0],D.fee[0]],routeType:"route",poolInfoList:[j.pool,Z],remainingAccounts:[j.data.remainingAccounts[0],D.remainingAccounts[0]],minMiddleAmountFee:(I=D.amountOut.fee)!=null&&I.raw?new ce(j.data.amountOut.amount.token,((R=(h=j.data.amountOut.fee)==null?void 0:h.raw)!=null?R:ot).add((V=(S=D.amountOut.fee)==null?void 0:S.raw)!=null?V:ot)):void 0,middleToken:j.data.amountOut.amount.token,poolReady:j.data.poolReady&&D.poolReady,poolType:[j.data.poolType,D.poolType],feeConfig:b,expirationTime:Ze(j.data.expirationTime,D.expirationTime)}))}catch(D){this.logDebug("route out error",Z.version,Z.id.toString(),D.message)}}return y.filter(T=>(T.allTrade||this.logDebug(`pool ${T.poolInfoList.map(O=>O.id.toString()).join(",")} filter out since not all trade`),T.allTrade)).sort((T,O)=>T.amountOut.amount.raw.sub(O.amountOut.amount.raw).gt(ot)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:d,minAmountOut:m,expirationTime:p,currentPrice:b,executionPrice:f,priceImpact:y,fee:g,remainingAccounts:k,executionPriceX64:P}=Pe.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:d,minAmountOut:m,currentPrice:new M(b.toFixed()),executionPrice:new M(f.toFixed()),priceImpact:new M(y.toFixed()),fee:[g],remainingAccounts:[k],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ze(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:d,minAmountOut:m,priceImpact:p,fee:b}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Yt(X(_({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(_({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new ce(c.token,b)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:d,executionPrice:m,priceImpact:p,fee:b}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Yt(X(_({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(_({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:d,executionPrice:m,priceImpact:p,fee:[new ce(c.token,b)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await Pt(this.scope.connection,Array.from(s).map(l=>({pubkey:new It(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Ri.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:En.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:X(_({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=_({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Vr({programId:new It(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(d)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:no(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:kt({address:u.mintLp.toBase58(),programId:me.toBase58(),decimals:u.lpDecimals}),config:X(_({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};export{Li as default};
1
+ var fo=Object.defineProperty,bo=Object.defineProperties;var yo=Object.getOwnPropertyDescriptors;var rn=Object.getOwnPropertySymbols;var vi=Object.prototype.hasOwnProperty,Di=Object.prototype.propertyIsEnumerable;var _i=(i,e,t)=>e in i?fo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,_=(i,e)=>{for(var t in e||(e={}))vi.call(e,t)&&_i(i,t,e[t]);if(rn)for(var t of rn(e))Di.call(e,t)&&_i(i,t,e[t]);return i},X=(i,e)=>bo(i,yo(e));var bt=(i,e)=>{var t={};for(var n in i)vi.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&rn)for(var n of rn(i))e.indexOf(n)<0&&Di.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as It}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as me,TOKEN_2022_PROGRAM_ID as Fn,createTransferInstruction as mo}from"@solana/spl-token";import{get as Vi,set as go}from"lodash";var vn=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}},Wi={},Ao={};function se(i){let e=Vi(Wi,i);if(!e){let t=Vi(Ao,i);e=new vn({name:i,logLevel:t}),go(Wi,i,e)}return e}import{PublicKey as Cs}from"@solana/web3.js";import Ns from"bn.js";import Is from"big.js";import yn from"bn.js";import Ne from"bn.js";var St=9e15,ct=1e9,Dn="0123456789abcdef",sn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",an="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-St,maxE:St,crypto:!1},Xi,$e,U=!0,cn="[DecimalError] ",ut=cn+"Invalid argument: ",zi=cn+"Precision limit exceeded",Qi=cn+"crypto unavailable",Hi="[object Decimal]",xe=Math.floor,be=Math.pow,Po=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ko=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,wo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Yi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,W=7,ho=9007199254740991,To=sn.length-1,Wn=an.length-1,B={toStringTag:Hi};B.absoluteValue=B.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),F(i)};B.ceil=function(){return F(new this.constructor(this),this.e+1,2)};B.clampedTo=B.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(ut+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};B.comparedTo=B.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};B.cosine=B.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())+W,n.rounding=1,t=Bo(n,er(n,t)),n.precision=i,n.rounding=e,F($e==2||$e==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};B.cubeRoot=B.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(U=!1,o=l.s*be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=be(t,1/3),i=xe((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 d(t),n.s=l.s):n=new d(o.toString()),s=(i=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=ae(u.plus(l).times(a),u.plus(c),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(F(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,i,d.rounding,e)};B.decimalPlaces=B.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-xe(this.e/W))*W,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};B.dividedBy=B.div=function(i){return ae(this,new this.constructor(i))};B.dividedToIntegerBy=B.divToInt=function(i){var e=this,t=e.constructor;return F(ae(e,new t(i),0,1,1),t.precision,t.rounding)};B.equals=B.eq=function(i){return this.cmp(i)===0};B.floor=function(){return F(new this.constructor(this),this.e+1,3)};B.greaterThan=B.gt=function(i){return this.cmp(i)>0};B.greaterThanOrEqualTo=B.gte=function(i){var e=this.cmp(i);return e==1||e===0};B.hyperbolicCosine=B.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/mn(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Kt(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return F(o,s.precision=t,s.rounding=n,!0)};B.hyperbolicSine=B.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=Kt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/mn(5,i)),r=Kt(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,F(r,e,t,!0)};B.hyperbolicTangent=B.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,ae(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};B.inverseCosine=B.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()?ve(t,r,o):new t(0):new t(NaN):e.isZero()?ve(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=ve(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};B.inverseHyperbolicCosine=B.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,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};B.inverseHyperbolicSine=B.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,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln())};B.inverseHyperbolicTangent=B.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?F(new o(r),i,e,!0):(o.precision=t=n-r.e,r=ae(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)};B.inverseSine=B.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=ve(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)))};B.inverseTangent=B.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=Wn)return s=ve(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=Wn)return s=ve(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/W+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/W),n=1,c=u.times(u),s=new l(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)),U=!0,F(s,l.precision=d,l.rounding=m,!0)};B.isFinite=function(){return!!this.d};B.isInteger=B.isInt=function(){return!!this.d&&xe(this.e/W)>this.d.length-2};B.isNaN=function(){return!this.s};B.isNegative=B.isNeg=function(){return this.s<0};B.isPositive=B.isPos=function(){return this.s>0};B.isZero=function(){return!!this.d&&this.d[0]===0};B.lessThan=B.lt=function(i){return this.cmp(i)<0};B.lessThanOrEqualTo=B.lte=function(i){return this.cmp(i)<1};B.logarithm=B.log=function(i){var e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(U=!1,a=d+p,s=at(u,a),n=e?un(l,a+10):at(i,a),c=ae(s,n,a,1),Ft(c.d,r=d,m))do if(a+=10,s=at(u,a),n=e?un(l,a+10):at(i,a),c=ae(s,n,a,1),!o){+we(c.d).slice(r+1,r+15)+1==1e14&&(c=F(c,d+1,0));break}while(Ft(c.d,r+=10,m));return U=!0,F(c,d,m)};B.minus=B.sub=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,b=p.constructor;if(i=new b(i),!p.d||!i.d)return!p.s||!i.s?i=new b(NaN):p.d?i.s=-i.s:i=new b(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,m=i.d,a=b.precision,c=b.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new b(p);else return new b(c===3?-0:0);return U?F(i,a,c):i}if(t=xe(i.e/W),l=xe(p.e/W),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/W),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=De-1;--u[r],u[n]+=De}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=ln(u,t),U?F(i,a,c):i):new b(c===3?-0:0)};B.modulo=B.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]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=ae(t,i.abs(),0,3,1),e.s*=i.s):e=ae(t,i,0,n.modulo,1),e=e.times(i),U=!0,t.minus(e))};B.naturalExponential=B.exp=function(){return qn(this)};B.naturalLogarithm=B.ln=function(){return at(this)};B.negated=B.neg=function(){var i=new this.constructor(this);return i.s=-i.s,F(i)};B.plus=B.add=function(i){var e,t,n,r,o,s,a,c,u,l,d=this,m=d.constructor;if(i=new m(i),!d.d||!i.d)return!d.s||!i.s?i=new m(NaN):d.d||(i=new m(i.d||d.s===i.s?d:NaN)),i;if(d.s!=i.s)return i.s=-i.s,d.minus(i);if(u=d.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(d)),U?F(i,a,c):i;if(o=xe(d.e/W),n=xe(i.e/W),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/W),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=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/De|0,u[r]%=De;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=ln(u,n),U?F(i,a,c):i};B.precision=B.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(ut+i);return t.d?(e=ji(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};B.round=function(){var i=this,e=i.constructor;return F(new e(i),i.e+1,e.rounding)};B.sine=B.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())+W,n.rounding=1,t=Io(n,er(n,t)),n.precision=i,n.rounding=e,F($e>2?t.neg():t,i,e,!0)):new n(NaN)};B.squareRoot=B.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!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=xe((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(F(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")&&(F(n,c+1,1),i=!n.times(n).eq(s));break}return U=!0,F(n,c,l.rounding,i)};B.tangent=B.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=ae(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,F($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};B.times=B.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,d=l.constructor,m=l.d,p=(i=new d(i)).d;if(i.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!i.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?i.s/0:i.s*0);for(t=xe(l.e/W)+xe(i.e/W),c=m.length,u=p.length,c<u&&(o=m,m=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]*m[r-n-1]+e,o[r--]=a%De|0,e=a/De|0;o[r]=(o[r]+e)%De|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=ln(o,t),U?F(i,d.precision,d.rounding):i};B.toBinary=function(i,e){return Un(this,2,i,e)};B.toDecimalPlaces=B.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ke(i,0,ct),e===void 0?e=n.rounding:Ke(e,0,8),F(t,i+t.e+1,e))};B.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Qe(n,!0):(Ke(i,0,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i+1,e),t=Qe(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};B.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Qe(r):(Ke(i,0,ct),e===void 0?e=o.rounding:Ke(e,0,8),n=F(new o(r),i+r.e+1,e),t=Qe(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};B.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,p=this,b=p.d,f=p.constructor;if(!b)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=ji(b)-p.e-1,s=o%W,e.d[0]=be(10,s<0?W+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(ut+a);i=a.gt(e)?o>0?e:u:a}for(U=!1,a=new f(we(b)),l=f.precision,f.precision=o=b.length*W*2;d=ae(a,e,0,1,1),r=t.plus(d.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(d.times(r)),c=r,r=e,e=a.minus(d.times(r)),a=r;return r=ae(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,m=ae(u,n,o,1).minus(p).abs().cmp(ae(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,U=!0,m};B.toHexadecimal=B.toHex=function(i,e){return Un(this,16,i,e)};B.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:Ke(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]?(U=!1,t=ae(t,i,0,e,1).times(i),U=!0,F(t)):(i.s=t.s,t=i),t};B.toNumber=function(){return+this};B.toOctal=function(i,e){return Un(this,8,i,e)};B.toPower=B.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(be(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return F(a,n,o);if(e=xe(i.e/W),e>=i.d.length-1&&(t=u<0?-u:u)<=ho)return r=Zi(c,a,t,n),i.s<0?new c(1).div(r):F(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=be(+a,u),e=t==0||!isFinite(t)?xe(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):(U=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=qn(i.times(at(a,n+t)),n),r.d&&(r=F(r,n+5,1),Ft(r.d,n,o)&&(e=n+10,r=F(qn(i.times(at(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=F(r,n+1,0)))),r.s=s,U=!0,c.rounding=o,F(r,n,o))};B.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Qe(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ke(i,1,ct),e===void 0?e=r.rounding:Ke(e,0,8),n=F(new r(n),i,e),t=Qe(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};B.toSignificantDigits=B.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ke(i,1,ct),e===void 0?e=n.rounding:Ke(e,0,8)),F(new n(t),i,e)};B.toString=function(){var i=this,e=i.constructor,t=Qe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};B.truncated=B.trunc=function(){return F(new this.constructor(this),this.e+1,1)};B.valueOf=B.toJSON=function(){var i=this,e=i.constructor,t=Qe(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=W-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=W-n.length,t&&(o+=st(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(i,e,t){if(i!==~~i||i<e||i>t)throw Error(ut+i)}function Ft(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=W,r=0):(r=Math.ceil((e+1)/W),e%=W),o=be(10,W-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)==be(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)==be(10,e-3)-1,s}function on(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]+=Dn.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 Bo(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/mn(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Kt(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 ae=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,l,d,m,p,b,f,y,g,k,P,w,I,h,R,S,V,T,O,re,j=n.constructor,fe=n.s==r.s?1:-1,Z=n.d,D=r.d;if(!Z||!Z[0]||!D||!D[0])return new j(!n.s||!r.s||(Z?D&&Z[0]==D[0]:!D)?NaN:Z&&Z[0]==0||!D?fe*0:fe/0);for(c?(p=1,l=n.e-r.e):(c=De,p=W,l=xe(n.e/p)-xe(r.e/p)),O=D.length,V=Z.length,g=new j(fe),k=g.d=[],d=0;D[d]==(Z[d]||0);d++);if(D[d]>(Z[d]||0)&&l--,o==null?(h=o=j.precision,s=j.rounding):a?h=o+(n.e-r.e)+1:h=o,h<0)k.push(1),b=!0;else{if(h=h/p+2|0,d=0,O==1){for(m=0,D=D[0],h++;(d<V||m)&&h--;d++)R=m*c+(Z[d]||0),k[d]=R/D|0,m=R%D|0;b=m||d<V}else{for(m=c/(D[0]+1)|0,m>1&&(D=i(D,m,c),Z=i(Z,m,c),O=D.length,V=Z.length),S=O,P=Z.slice(0,O),w=P.length;w<O;)P[w++]=0;re=D.slice(),re.unshift(0),T=D[0],D[1]>=c/2&&++T;do m=0,u=e(D,P,O,w),u<0?(I=P[0],O!=w&&(I=I*c+(P[1]||0)),m=I/T|0,m>1?(m>=c&&(m=c-1),f=i(D,m,c),y=f.length,w=P.length,u=e(f,P,y,w),u==1&&(m--,t(f,O<y?re:D,y,c))):(m==0&&(u=m=1),f=D.slice()),y=f.length,y<w&&f.unshift(0),t(P,f,w,c),u==-1&&(w=P.length,u=e(D,P,O,w),u<1&&(m++,t(P,O<w?re:D,w,c))),w=P.length):u===0&&(m++,P=[0]),k[d++]=m,u&&P[0]?P[w++]=Z[S]||0:(P=[Z[S]],w=1);while((S++<V||P[0]!==void 0)&&h--);b=P[0]!==void 0}k[0]||k.shift()}if(p==1)g.e=l,Xi=b;else{for(d=1,m=k[0];m>=10;m/=10)d++;g.e=d+l*p-1,F(g,a?o+g.e+1:o,s,b)}return g}}();function F(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor;e:if(e!=null){if(d=i.d,!d)return i;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=W,s=e,l=d[m=0],c=l/be(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/W),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=W,s=o-W+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=W,s=o-W+r,c=s<0?0:l/be(10,r-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%be(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?l/be(10,r-s):0:d[m-1])%10&1||t==(i.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=i.e+1,d[0]=be(10,(W-e%W)%W),i.e=-e||0):d[0]=i.e=0,i;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=be(10,W-o),d[m]=s>0?(l/be(10,r-s)%be(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,d[0]==De&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=De)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return U&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function Qe(i,e,t){if(!i.isFinite())return $i(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)+st(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+st(-r-1)+o,t&&(n=t-s)>0&&(o+=st(n))):r>=s?(o+=st(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+st(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=st(n))),o}function ln(i,e){var t=i[0];for(e*=W;t>=10;t/=10)e++;return e}function un(i,e,t){if(e>To)throw U=!0,t&&(i.precision=t),Error(zi);return F(new i(sn),e,1,!0)}function ve(i,e,t){if(e>Wn)throw Error(zi);return F(new i(an),e,t,!0)}function ji(i){var e=i.length-1,t=e*W+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 st(i){for(var e="";i--;)e+="0";return e}function Zi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/W+4);for(U=!1;;){if(t%2&&(o=o.times(e),Gi(o.d,s)&&(r=!0)),t=xe(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Gi(e.d,s)}return U=!0,o}function qi(i){return i.d[i.d.length-1]&1}function Ji(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 qn(i,e){var t,n,r,o,s,a,c,u=0,l=0,d=0,m=i.constructor,p=m.rounding,b=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(U=!1,c=b):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),d+=5;for(n=Math.log(be(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=F(o.times(i),c,1),t=t.times(++l),a=s.plus(ae(o,t,c,1)),we(a.d).slice(0,c)===we(s.d).slice(0,c)){for(r=d;r--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&Ft(s.d,c-n,p,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return F(s,m.precision=b,p,U=!0);else return m.precision=b,s}s=a}}function at(i,e){var t,n,r,o,s,a,c,u,l,d,m,p=1,b=10,f=i,y=f.d,g=f.constructor,k=g.rounding,P=g.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(U=!1,l=P):l=e,g.precision=l+=b,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 g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return u=un(g,l+2,P).times(o+""),f=at(new g(n+"."+t.slice(1)),l-b).plus(u),g.precision=P,e==null?F(f,P,k,U=!0):f;for(d=f,c=s=f=ae(f.minus(1),f.plus(1),l,1),m=F(f.times(f),l,1),r=3;;){if(s=F(s.times(m),l,1),u=c.plus(ae(s,new g(r),l,1)),we(u.d).slice(0,l)===we(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(un(g,l+2,P).times(o+""))),c=ae(c,new g(p),l,1),e==null)if(Ft(c.d,l-b,k,a))g.precision=l+=b,u=s=f=ae(d.minus(1),d.plus(1),l,1),m=F(f.times(f),l,1),r=a=1;else return F(c,g.precision=P,k,U=!0);else return g.precision=P,c;c=u,r+=2}}function $i(i){return String(i.s*i.s/0)}function Gn(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)%W,t<0&&(n+=W),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=W;n<r;)i.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),U&&(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 xo(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Yi.test(e))return Gn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(ko.test(e))t=16,e=e.toLowerCase();else if(Po.test(e))t=2;else if(wo.test(e))t=8;else throw Error(ut+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=Zi(n,new n(t),o,o*2)),u=on(e,t,De),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=ln(u,l),i.d=u,U=!1,s&&(i=ae(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?be(2,c):_t.pow(2,c))),U=!0,i)}function Io(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Kt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/mn(5,t)),e=Kt(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 Kt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,d=Math.ceil(l/W);for(U=!1,c=t.times(t),a=new i(n);;){if(s=ae(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=ae(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return U=!0,s.d.length=d+1,s}function mn(i,e){for(var t=i;--e;)t*=i;return t}function er(i,e){var t,n=e.s<0,r=ve(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(r),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return $e=qi(t)?n?2:3:n?4:1,e;$e=qi(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Un(i,e,t,n){var r,o,s,a,c,u,l,d,m,p=i.constructor,b=t!==void 0;if(b?(Ke(t,1,ct),n===void 0?n=p.rounding:Ke(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=$i(i);else{for(l=Qe(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new p(1),m.e=l.length-s,m.d=on(Qe(m),10,r),m.e=m.d.length),d=on(l,10,r),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=d,i.e=o,i=ae(i,m,t,n,0,r),d=i.d,o=i.e,u=Xi),s=d[t],a=r/2,u=u||d[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&&d[t-1]&1||n===(i.s<0?8:7)),d.length=t,u)for(;++d[--t]>r-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=Dn.charAt(d[s]);if(b){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=on(l,r,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Dn.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Gi(i,e){if(i.length>e)return i.length=e,!0}function So(i){return new this(i).abs()}function Ko(i){return new this(i).acos()}function Co(i){return new this(i).acosh()}function No(i,e){return new this(i).plus(e)}function Ro(i){return new this(i).asin()}function Lo(i){return new this(i).asinh()}function Oo(i){return new this(i).atan()}function Mo(i){return new this(i).atanh()}function Eo(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=ve(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?ve(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=ve(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(i,e,o,1)),e=ve(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(i,e,o,1)),t}function Fo(i){return new this(i).cbrt()}function _o(i){return F(i=new this(i),i.e+1,2)}function vo(i,e,t){return new this(i).clamp(e,t)}function Do(i){if(!i||typeof i!="object")throw Error(cn+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,ct,"rounding",0,8,"toExpNeg",-St,0,"toExpPos",0,St,"maxE",0,St,"minE",-St,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Vn[t]),(n=i[t])!==void 0)if(xe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ut+t+": "+n);if(t="crypto",r&&(this[t]=Vn[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(Qi);else this[t]=!1;else throw Error(ut+t+": "+n);return this}function Vo(i){return new this(i).cos()}function Wo(i){return new this(i).cosh()}function tr(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,Ui(o)){u.s=o.s,U?!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++;U?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 Gn(u,o.toString())}else if(c!=="string")throw Error(ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Yi.test(o)?Gn(u,o):xo(u,o)}if(r.prototype=B,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=Do,r.clone=tr,r.isDecimal=Ui,r.abs=So,r.acos=Ko,r.acosh=Co,r.add=No,r.asin=Ro,r.asinh=Lo,r.atan=Oo,r.atanh=Mo,r.atan2=Eo,r.cbrt=Fo,r.ceil=_o,r.clamp=vo,r.cos=Vo,r.cosh=Wo,r.div=qo,r.exp=Go,r.floor=Uo,r.hypot=Xo,r.ln=zo,r.log=Qo,r.log10=Yo,r.log2=Ho,r.max=jo,r.min=Zo,r.mod=Jo,r.mul=$o,r.pow=es,r.random=ts,r.round=ns,r.sign=is,r.sin=rs,r.sinh=os,r.sqrt=ss,r.sub=as,r.sum=us,r.tan=cs,r.tanh=ls,r.trunc=ms,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 qo(i,e){return new this(i).div(e)}function Go(i){return new this(i).exp()}function Uo(i){return F(i=new this(i),i.e+1,3)}function Xo(){var i,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function Ui(i){return i instanceof _t||i&&i.toStringTag===Hi||!1}function zo(i){return new this(i).ln()}function Qo(i,e){return new this(i).log(e)}function Ho(i){return new this(i).log(2)}function Yo(i){return new this(i).log(10)}function jo(){return Ji(this,arguments,"lt")}function Zo(){return Ji(this,arguments,"gt")}function Jo(i,e){return new this(i).mod(e)}function $o(i,e){return new this(i).mul(e)}function es(i,e){return new this(i).pow(e)}function ts(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ke(i,1,ct),n=Math.ceil(i/W),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(Qi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=W,n&&i&&(r=be(10,W-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-=W)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function ns(i){return F(i=new this(i),i.e+1,this.rounding)}function is(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function rs(i){return new this(i).sin()}function os(i){return new this(i).sinh()}function ss(i){return new this(i).sqrt()}function as(i,e){return new this(i).sub(e)}function us(){var i=0,e=arguments,t=new this(e[i]);for(U=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return U=!0,F(t,this.precision,this.rounding)}function cs(i){return new this(i).tan()}function ls(i){return new this(i).tanh()}function ms(i){return F(i=new this(i),i.e+1,1)}B[Symbol.for("nodejs.util.inspect.custom")]=B.toString;B[Symbol.toStringTag]="Decimal";var _t=B.constructor=tr(Vn);sn=new _t(sn);an=new _t(an);var M=_t;import{PublicKey as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ds}from"@solana/spl-token";import{PublicKey as le,SystemProgram as nr,SYSVAR_RENT_PUBKEY as ps}from"@solana/web3.js";function x({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var uu=[x({pubkey:ds,isWritable:!1}),x({pubkey:nr.programId,isWritable:!1}),x({pubkey:ps,isWritable:!1})];function Xn({publicKey:i,transformSol:e}){let t=zn(i.toString());if(t instanceof le)return e&&t.equals(vt)?Ve:t;if(e&&t.toString()===vt.toBase58())return Ve;if(typeof t=="string"){if(t===le.default.toBase58())return le.default;try{return new le(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function zn(i){try{return new le(i)}catch{return i}}var dn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Qn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),yt=new le("SysvarRent111111111111111111111111111111111"),cu=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),lu=new le("Sysvar1nstructions1111111111111111111111111"),fs=nr.programId,mu=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),du=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),pu=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),fu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),bu=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),yu=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),gu=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Au=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Pu=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ku=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),wu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ve=new le("So11111111111111111111111111111111111111112"),vt=le.default;function He(i){return Xn({publicKey:i,transformSol:!0})}import{PublicKey as bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Hn={chainId:101,address:bs.default.toBase58(),programId:ir.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ir.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 jn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===vt.toBase58()||e instanceof Yn&&vt.equals(e)){this.decimals=Ye.decimals,this.symbol=Ye.symbol,this.name=Ye.name,this.mint=new Yn(Ye.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?Yn.default:Xn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=jn;Re.WSOL=new jn(X(_({},Ye),{mint:Ye.address}));import fn from"big.js";import As from"bn.js";import Ps from"decimal.js-light";import ys from"toformat";var gs=ys,Dt=gs;var pn=se("module/fraction"),Zn=Dt(fn),Vt=Dt(Ps),ks={[0]:Vt.ROUND_DOWN,[1]:Vt.ROUND_HALF_UP,[2]:Vt.ROUND_UP},ws={[0]:fn.roundDown,[1]:fn.roundHalfUp,[2]:fn.roundUp},ie=class{constructor(e,t=new As(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ie(this.denominator,this.numerator)}add(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.add(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ie?e:new ie(ue(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.sub(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ie?e:new ie(ue(e));return new ie(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||pn.logWithError(`${e} is not an integer.`),e<=0&&pn.logWithError(`${e} is not positive.`),Vt.set({precision:e+1,rounding:ks[n]});let r=new Vt(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)||pn.logWithError(`${e} is not an integer.`),e<0&&pn.logWithError(`${e} is negative.`),Zn.DP=e,Zn.RM=ws[n]||1,new Zn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ts=se("Raydium_price"),Ce=class extends ie{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new ie(Jn(n.decimals),Jn(r.decimals))}get raw(){return new ie(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ts.logWithError("mul token not equals");let n=super.mul(t);return new Ce({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var $n=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},bn=$n;bn.SOL=new $n(Hn);import Bs from"bn.js";var rr=new ie(new Bs(100)),lt=class extends ie{toSignificant(e=5,t,n){return this.mul(rr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(rr).toFixed(e,t,n)}};var or=new Ne(0),xs=new Ne(1),gc=new Ne(2),Ac=new Ne(3),Pc=new Ne(5),ei=new Ne(10),kc=new Ne(100),wc=new Ne(1e3),hc=new Ne(1e4),sr=9007199254740991;function ue(i){let e=se("Raydium_parseBigNumberish");if(i instanceof Ne)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ne(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=sr||i<=-sr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ne(String(i))):typeof i=="bigint"?new Ne(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ne(0))}function Jn(i){return ei.pow(ue(i))}var Ss=se("Raydium_amount"),ur=Dt(Is);function Ks(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")):Ss.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ce=class extends ie{constructor(t,n,r=!0,o){let s=new yn(0),a=ei.pow(new yn(t.decimals));if(r)s=ue(n);else{let c=new yn(0),u=new yn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Ks(n.toString(),t.decimals);c=ue(l),u=ue(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=se(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 ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ce(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 ur.DP=this.token.decimals,new ur(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ar(i){return typeof i=="object"&&i!==null&&![Re,ce,Cs,ie,Ns,Ce,lt].some(e=>typeof e=="object"&&i instanceof e)}function gt(i){return typeof i=="string"?zn(i):Array.isArray(i)?i.map(e=>gt(e)):ar(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,gt(t)])):i}import{PublicKey as Gt,sendAndConfirmTransaction as oi,Transaction as Ut,TransactionMessage as Xt,VersionedTransaction as zt}from"@solana/web3.js";import Vs from"axios";var J={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 Rs,ComputeBudgetProgram as cr,Transaction as mr,TransactionMessage as Ls,Keypair as dr,VersionedTransaction as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Os}from"@solana/spl-token";var lr=se("Raydium_txUtil"),fr=1644;function gn(i){let e=[],t=[];return i.microLamports&&(e.push(cr.setComputeUnitPrice({microLamports:i.microLamports})),t.push(J.SetComputeUnitPrice)),i.units&&(e.push(cr.setComputeUnitLimit({units:i.units})),t.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Nt(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 Ms(i,e){i.length<1&&lr.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&lr.logWithError(`no signers provided:, ${e.toString()}`);let t=new mr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<fr}catch{return!1}}function he(i,e){let[t,n]=Rs.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Wt({instructions:i,payer:e,signers:t}){return Ms(i,[e,...t])}function qt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=dr.generate().publicKey.toString()}){let o=new Ls({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new pr(o).serialize()).toString("base64").length<fr}catch{return!1}}var Es=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function At(i){let e=[];return i.forEach(t=>{t instanceof mr&&(t.recentBlockhash||(t.recentBlockhash=Os.toBase58()),t.feePayer||(t.feePayer=dr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof pr&&(n=Es(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as yr,AddressLookupTableAccount as An}from"@solana/web3.js";import{PublicKey as br}from"@solana/web3.js";import{MINT_SIZE as Fs,TOKEN_PROGRAM_ID as _s,getTransferFeeConfig as vs,unpackMint as Ds}from"@solana/spl-token";var ti=se("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=_({batchRequest:!1},t),s=ni(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=i._buildArgs([d.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=ni(c,10);a=(await(await Promise.all(u.map(async d=>await i._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:b,lamports:f,owner:y,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&ti.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:b,lamports:f,owner:new br(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Pt(i,e,t){let n=await et(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>X(_({},r),{accountInfo:n[o]}))}async function ii({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await Pt(i,e.map(c=>({pubkey:He(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Fs){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Ds(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=X(_({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||_s,feeConfig:(a=vs(u))!=null?a:void 0})}return r[br.default.toBase58()]=r[Ve.toBase58()],r}async function ri({connection:i,address:e}){let t=await et(i,[...new Set(e.map(r=>r.toString()))].map(r=>new yr(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new An({key:s,state:An.deserialize(o.data)});n[s.toString()]=a,Pn[s.toString()]=a}return n}var Pn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new An({key:new yr("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:An.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var kn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,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 Vs.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}=gn(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!==Gt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(_({},t||{})):this.build(t)}build(e){var n;let t=new Ut;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 Nt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),At([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await oi(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var y;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:b=!0}=l||{},f=p!=null?p:await Nt(this.connection,this.blockhashCommitment);if((y=this.owner)!=null&&y.isKeyPair){if(d){let g=[];for(let k of s){let P=await oi(this.connection,k,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});g.push(P)}return{txIds:g,signedTxs:s}}return{txIds:await await Promise.all(s.map(async g=>(g.recentBlockhash=f,await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((P,w)=>(P.recentBlockhash=f,a[w].length&&P.sign(...a[w]),P));At(g);let k=await this.signAllTransactions(g);if(d){let P=0,w=[],I=async()=>{if(!k[P])return;let h=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:b});w.push({txId:h,status:"sent",signedTx:k[P]}),m==null||m([...w]),P++,this.connection.onSignature(h,R=>{let S=w.findIndex(V=>V.txId===h);S>-1&&(w[S].status=R.err?"error":"success"),m==null||m([...w]),R.err||I()},"processed"),this.connection.getSignatureStatus(h)};return await I(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let I=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:b});P.push(I)}return{txIds:P,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var p;let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=m,o=bt(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=_(_({},this.cluster==="devnet"?{}:Pn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let b of a)s[b]===void 0&&c.push(new Gt(b));let u=await ri({connection:this.connection,address:c});for(let[b,f]of Object.entries(u))s[b]=f;let l=new Xt({payerKey:this.feePayer,recentBlockhash:r?Gt.default.toBase58():await Nt(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let d=new zt(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var k;let{recentBlockHash:f,skipPreflight:y=!0,sendAndConfirm:g}=b||{};if(f&&(d.message.recentBlockhash=f),At([d]),(k=this.owner)!=null&&k.isKeyPair){let P=await this.connection.sendTransaction(d,{skipPreflight:y});if(g){let{lastValidBlockHeight:w,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:w,signature:P},"confirmed")}return{txId:P,signedTx:d}}if(this.signAllTransactions){let P=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:y}),signedTx:P[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(l=>l.builder.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var f;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:b=!0}=l||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),At(s),(f=this.owner)!=null&&f.isKeyPair){if(d){let y=[];for(let g of s){let k=await this.connection.sendTransaction(g,{skipPreflight:b}),{lastValidBlockHeight:P,blockhash:w}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:P,signature:k},"confirmed"),y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:b}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(d){let g=0,k=[],P=async()=>{if(!y[g])return;let w=await this.connection.sendTransaction(y[g],{skipPreflight:b});k.push({txId:w,status:"sent",signedTx:y[g]}),m==null||m([...k]),g++,this.connection.onSignature(w,I=>{let h=k.findIndex(R=>R.txId===w);h>-1&&(k[h].status=I.err?"error":"success"),m==null||m([...k]),I.err||P()},"processed"),this.connection.getSignatureStatus(w)};return P(),{txIds:[],signedTxs:y}}else{let g=[];for(let k=0;k<y.length;k+=1){let P=await this.connection.sendTransaction(y[k],{skipPreflight:b});g.push(P)}return{txIds:g,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let u=e||{},{computeBudgetConfig:t}=u,n=bt(u,["computeBudgetConfig"]),r=t?gn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((d,m)=>X(_({},d),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(d=>{let m=[...c,d],p=t?[...r.instructions,...m]:m,f=[...new Set(m.map(y=>y.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(y=>new Gt(y));if(c.length<12&&Wt({instructions:p,payer:this.feePayer,signers:f})||Wt({instructions:m,payer:this.feePayer,signers:f}))c.push(d);else{if(c.length===0)throw Error("item ins too big");Wt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:f})?s.push(new Ut().add(...r.instructions,...c)):s.push(new Ut().add(...c)),a.push(Array.from(new Set(c.map(y=>y.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(y=>o[y]).filter(y=>y!==void 0)),c=[d]}}),c.length>0){let m=[...new Set(c.map(p=>p.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Wt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Ut().add(...r.instructions,...c)):s.push(new Ut().add(...c)),a.push(m)}return s.forEach(d=>d.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(d=>{d.some(m=>m.publicKey.equals(this.owner.publicKey))||d.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async d=>{var g;let{sequentially:m,onTxUpdate:p,recentBlockHash:b,skipPreflight:f=!0}=d||{},y=b!=null?b:await Nt(this.connection,this.blockhashCommitment);if(s.forEach(async(k,P)=>{k.recentBlockhash=y,a[P].length&&k.sign(...a[P])}),At(s),(g=this.owner)!=null&&g.isKeyPair){if(m){let k=[];for(let P of s){let w=await oi(this.connection,P,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});k.push(w)}return{txIds:k,signedTxs:s}}return{txIds:await Promise.all(s.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let k=await this.signAllTransactions(s);if(m){let P=0,w=[],I=async()=>{if(!k[P])return;let h=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:f});w.push({txId:h,status:"sent",signedTx:k[P]}),p==null||p([...w]),P++,this.connection.onSignature(h,R=>{let S=w.findIndex(V=>V.txId===h);S>-1&&(w[S].status=R.err?"error":"success"),p==null||p([...w]),R.err||I()},"processed"),this.connection.getSignatureStatus(h)};return await I(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let I=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:f});P.push(I)}return{txIds:P,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var g;let y=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=y,o=bt(y,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=_(_({},this.cluster==="devnet"?{}:Pn),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let k of a)s[k]===void 0&&c.push(new Gt(k));let u=await ri({connection:this.connection,address:c});for(let[k,P]of Object.entries(u))s[k]=P;let l=t?gn(t):{instructions:[],instructionTypes:[]},d=await Nt(this.connection,this.blockhashCommitment),m=this.signers.reduce((k,P)=>X(_({},k),{[P.publicKey.toBase58()]:P}),{}),p=[],b=[],f=[];if(this.allInstructions.forEach(k=>{let P=[...f,k],w=t?[...l.instructions,...P]:P;if(f.length<12&&qt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||qt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(k);else{if(f.length===0)throw Error("item ins too big");let I={};for(let h of[...new Set(a)])s[h]!==void 0&&(I[h]=s[h]);if(t&&qt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let h=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zt(h))}else{let h=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zt(h))}b.push(Array.from(new Set(f.map(h=>h.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(h=>m[h]).filter(h=>h!==void 0)),f=[k]}}),f.length>0){let P=[...new Set(f.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(w=>m[w]).filter(w=>w!==void 0);if(t&&qt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let w=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zt(w))}else{let w=new Xt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zt(w))}b.push(P)}return(g=this.owner)!=null&&g.signer&&b.forEach(k=>{k.some(P=>P.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async k=>{var R;let{sequentially:P,onTxUpdate:w,recentBlockHash:I,skipPreflight:h=!0}=k||{};if(p.map(async(S,V)=>{b[V].length&&S.sign(b[V]),I&&(S.message.recentBlockhash=I)}),At(p),(R=this.owner)!=null&&R.isKeyPair){if(P){let S=[];for(let V of p){let T=await this.connection.sendTransaction(V,{skipPreflight:h}),{lastValidBlockHeight:O,blockhash:re}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:re,lastValidBlockHeight:O,signature:T},"confirmed"),S.push(T)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:h}))),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(P){let V=0,T=[],O=async()=>{if(!S[V])return;let re=await this.connection.sendTransaction(S[V],{skipPreflight:h});T.push({txId:re,status:"sent",signedTx:S[V]}),w==null||w([...T]),V++,this.connection.onSignature(re,j=>{let fe=T.findIndex(Z=>Z.txId===re);fe>-1&&(T[fe].status=j.err?"error":"success"),w==null||w([...T]),j.err||O()},"processed"),this.connection.getSignatureStatus(re)};return O(),{txIds:[],signedTxs:S}}else{let V=[];for(let T=0;T<S.length;T+=1){let O=await this.connection.sendTransaction(S[T],{skipPreflight:h});V.push(O)}return{txIds:V,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function ni(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 ee}from"@solana/web3.js";var Ll=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ol=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ml=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),El=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Fl=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),si=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ar=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_l=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Pr=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kr=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),vl=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Dl=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Vl=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Wl=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ql=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Gl=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wr=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ul=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Xl=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ws=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),qs=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Gs=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var zl={SERUM_MARKET:ee.default,OPENBOOK_MARKET:new ee("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ee.default,FarmV3:new ee("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ee("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ee("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ee("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ee("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ee("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ee("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ws,CREATE_CPMM_POOL_AUTH:qs,CREATE_CPMM_POOL_FEE_ACC:Gs,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Us}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xs}from"@solana/spl-token";function je(i,e,t){return he([i.toBuffer(),(t!=null?t:Xs).toBuffer(),e.toBuffer()],new Us("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import We from"bn.js";var Qt=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=X(_({},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 We(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===Qt){let c=new We(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=ai(i.mul(new We(Qt)),new We(Qt-o.transferFeeBasisPoints)),u=new We(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,d=ai(l.mul(new We(o.transferFeeBasisPoints)),new We(Qt)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=ai(i.mul(new We(o.transferFeeBasisPoints)),new We(Qt)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function Ze(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function ai(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}var ui=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Rt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new kn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ui(e))}logInfo(...e){this.logger.info(ui(e))}logAndCreateError(...e){let t=ui(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as ma,createCloseAccountInstruction as da,createTransferInstruction as pa,TOKEN_PROGRAM_ID as Lt}from"@solana/spl-token";import{PublicKey as fa,SystemProgram as ba}from"@solana/web3.js";import ya from"bn.js";import{PublicKey as aa,Keypair as ua}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ca}from"@solana/spl-token";import _d from"bn.js";import{PublicKey as ea}from"@solana/web3.js";import xr,{isBN as Ir}from"bn.js";import{bits as hm,BitStructure as Tm,blob as zs,Blob as Bm,cstr as xm,f32 as Im,f32be as Sm,f64 as Km,f64be as Cm,greedy as Nm,Layout as Qs,ns64 as Rm,ns64be as Lm,nu64 as Om,nu64be as Mm,offset as Em,s16 as Fm,s16be as _m,s24 as vm,s24be as Dm,s32 as Hs,s32be as Vm,s40 as Wm,s40be as qm,s48 as Gm,s48be as Um,s8 as Xm,seq as Ys,struct as zm,Structure as js,u16 as Zs,u16be as Qm,u24 as Hm,u24be as Ym,u32 as jm,u32be as Zm,u40 as Jm,u40be as $m,u48 as ed,u48be as td,u8 as Js,UInt as $s,union as nd,Union as id,unionLayoutDiscriminator as rd,utf8 as od}from"@solana/buffer-layout";var ci=Qs,hr=js;var li=$s;var Tr=Js,mt=Zs;var Te=Hs;var Br=Ys;var ge=zs;var Ht=class extends ci{constructor(t,n,r){super(t,r);this.blob=ge(t),this.signed=n}decode(t,n=0){let r=new xr(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 xr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function z(i){return new li(1,i)}function Ee(i){return new li(4,i)}function A(i){return new Ht(8,!1,i)}function G(i){return new Ht(16,!1,i)}function Sr(i){return new Ht(16,!0,i)}var wn=class extends ci{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 K(i){return new wn(ge(32),e=>new ea(e),e=>e.toBuffer(),i)}function Fe(i){return new wn(Tr(),ta,na,i)}function ta(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function na(i){return i?1:0}var mi=class extends hr{decode(e,t){return super.decode(e,t)}};function v(i,e,t){return new mi(i,e,t)}function ne(i,e,t){let n,r=typeof e=="number"?e:Ir(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ir(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 Br(i,r,t)}var hn=v([K("mint"),K("owner"),A("amount"),Ee("delegateOption"),K("delegate"),z("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),K("closeAuthority")]);function ia(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function di(i,...e){if(!ia(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 pi(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 Kr(i,e){di(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Bn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),qe=(i,e)=>i<<32-e|i>>>e;var hd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ra(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function fi(i){return typeof i=="string"&&(i=ra(i)),di(i),i}var Tn=class{clone(){return this._cloneInto()}},Td={}.toString;function Cr(i){let e=n=>i().update(fi(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function oa(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 Nr=(i,e,t)=>i&e^~i&t,Rr=(i,e,t)=>i&e^i&t^e&t,xn=class extends Tn{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=Bn(this.buffer)}update(e){pi(this);let{view:t,buffer:n,blockLen:r}=this;e=fi(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=Bn(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){pi(this),Kr(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 d=s;d<r;d++)t[d]=0;oa(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Bn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],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 sa=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]),dt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),pt=new Uint32Array(64),bi=class extends xn{constructor(){super(64,32,8,!1),this.A=dt[0]|0,this.B=dt[1]|0,this.C=dt[2]|0,this.D=dt[3]|0,this.E=dt[4]|0,this.F=dt[5]|0,this.G=dt[6]|0,this.H=dt[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 d=0;d<16;d++,t+=4)pt[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=pt[d-15],p=pt[d-2],b=qe(m,7)^qe(m,18)^m>>>3,f=qe(p,17)^qe(p,19)^p>>>10;pt[d]=f+pt[d-7]+b+pt[d-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=qe(a,6)^qe(a,11)^qe(a,25),p=l+m+Nr(a,c,u)+sa[d]+pt[d]|0,f=(qe(n,2)^qe(n,13)^qe(n,22))+Rr(n,r,o)|0;l=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,l=l+this.H|0,this.set(n,r,o,s,a,c,u,l)}roundClean(){pt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Lr=Cr(()=>new bi);var Wd=se("Raydium_Util");function In({fromPublicKey:i,programId:e=ca}){let t=ua.generate().publicKey.toBase58().slice(0,32);return{publicKey:la(i,t,e),seed:t}}function la(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Lr(n);return new aa(r)}function ga(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Lt}=i;return ma(t,e,n,r)}function Ot(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Lt}=i;return da(e,t,r,n,o)}async function yi(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(hn.span,n),c=ue(t).add(new ya(a)),u=In({fromPublicKey:r,programId:Lt});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[ba.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:hn.span,programId:Lt}),ga({mint:new fa(Ye.address),tokenAccount:u.publicKey,owner:o,programId:Lt})],instructionTypes:[J.CreateAccount,J.InitAccount],endInstructionTypes:s?[]:[J.CloseAccount],endInstructions:s?[]:[Ot({tokenAccount:u.publicKey,payer:r,owner:o})]}}function gi({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Lt}){return pa(i,e,t,BigInt(String(n)),r,o)}import Or from"bn.js";var rp=new Or(25),op=new Or(1e4);var Ai=v([z("instruction"),A("amountIn"),A("minAmountOut")]),Pi=v([z("instruction"),A("maxAmountIn"),A("amountOut")]),dp=v([z("instruction"),z("nonce")]),Aa=v([z("instruction"),z("nonce"),A("startTime")]),Mr=v([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),A("swapBase2QuoteFee"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),A("lpReserve"),ne(A(),3,"padding")]),pp=v([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),G("swapBaseInAmount"),G("swapQuoteOutAmount"),G("swapQuoteInAmount"),G("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),ne(A(),64,"padding")]),Pa=v([z("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),ka=v([z("instruction"),A("amountIn")]);var fp=v([A("fee")]);import{PublicKey as lf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{PublicKey as Ap}from"@solana/web3.js";import{MintLayout as kp,TOKEN_PROGRAM_ID as hp}from"@solana/spl-token";var Er=i=>new Re({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),Yt=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=bt(o,["amount","isRaw","name"]);return new ce(new Re({mint:He(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var kt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=bt(o,["address","programId","decimals"]);return _({chainId:101,address:He(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as Np}from"@solana/web3.js";var Op=se("Raydium_liquidity_serum");import{PublicKey as wa}from"@solana/web3.js";var ki=new wa("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ha=5e4,Ta=v([A("x"),A("y"),A("price")]),vp=v([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),ne(Ta,ha,"DataElement")]);import{TOKEN_PROGRAM_ID as _r,ASSOCIATED_TOKEN_PROGRAM_ID as Wp}from"@solana/spl-token";import{PublicKey as Gp,TransactionInstruction as vr,SystemProgram as Up,SYSVAR_RENT_PUBKEY as Xp}from"@solana/web3.js";var Fr=se("Raydium_liquidity_instruction");function Ba({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=gt(i),s=Buffer.alloc(Ai.span);Ai.encode({instruction:9,amountIn:ue(t),minAmountOut:ue(n)},s);let a=[x({pubkey:_r,isWritable:!1}),x({pubkey:o.id}),x({pubkey:o.authority,isWritable:!1}),x({pubkey:o.openOrders})];return r===4&&a.push(x({pubkey:o.targetOrders})),a.push(x({pubkey:o.vault.A}),x({pubkey:o.vault.B})),r===5&&a.push(x({pubkey:ki})),a.push(x({pubkey:o.marketProgramId,isWritable:!1}),x({pubkey:o.marketId}),x({pubkey:o.marketBids}),x({pubkey:o.marketAsks}),x({pubkey:o.marketEventQueue}),x({pubkey:o.marketBaseVault}),x({pubkey:o.marketQuoteVault}),x({pubkey:o.marketAuthority,isWritable:!1}),x({pubkey:e.tokenAccountIn}),x({pubkey:e.tokenAccountOut}),x({pubkey:e.owner,isWritable:!1})),new vr({programId:o.programId,keys:a,data:s})}function xa({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=gt(i),s=Buffer.alloc(Pi.span);Pi.encode({instruction:11,maxAmountIn:ue(t),amountOut:ue(n)},s);let a=[x({pubkey:_r,isWritable:!1}),x({pubkey:o.id}),x({pubkey:o.authority,isWritable:!1}),x({pubkey:o.openOrders}),x({pubkey:o.targetOrders}),x({pubkey:o.vault.A}),x({pubkey:o.vault.B})];return r===5&&a.push(x({pubkey:ki})),a.push(x({pubkey:o.marketProgramId,isWritable:!1}),x({pubkey:o.marketId}),x({pubkey:o.marketBids}),x({pubkey:o.marketAsks}),x({pubkey:o.marketEventQueue}),x({pubkey:o.marketBaseVault}),x({pubkey:o.marketQuoteVault}),x({pubkey:o.marketAuthority,isWritable:!1}),x({pubkey:e.tokenAccountIn}),x({pubkey:e.tokenAccountOut}),x({pubkey:e.owner,isWritable:!1,isSigner:!0})),new vr({programId:o.programId,keys:a,data:s})}function Dr(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ba(X(_({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return xa(X(_({},a),{maxAmountIn:r,amountOut:o}),t);Fr.logWithError("invalid params","params",i)}throw Fr.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import Af from"bn.js";function Sa({programId:i}){let{publicKey:e}=he([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Vr({programId:i}){return he([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var wi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Wr=i=>{let e={},t=Ia.toBase58();return Object.keys(i).map(n=>{let r=i[n],[o,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:kt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:kt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new M(r.mintAAmount.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new M(r.mintBAmount.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new M(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:wi,week:wi,month:wi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Sa({programId:r.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:kt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import Fa from"bn.js";function Sn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function hi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Ti(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function jt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function qr(i,e){return jt(i,e)?null:hi(i,e)}function Gr(i,e){return jt(i,e)?null:Ti(i,e)}var Lf=Buffer.from("amm_config","utf8"),Ka=Buffer.from("pool","utf8"),Ca=Buffer.from("pool_vault","utf8"),Na=Buffer.from("pool_reward_vault","utf8"),Ur=Buffer.from("position","utf8"),Ra=Buffer.from("tick_array","utf8"),La=Buffer.from("operation","utf8"),Oa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Xr(i,e,t,n){return he([Ka,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Bi(i,e,t){return he([Ca,e.toBuffer(),t.toBuffer()],i)}function zr(i,e,t){return he([Na,e.toBuffer(),t.toBuffer()],i)}function oe(i,e,t){return he([Ra,e.toBuffer(),Sn(t)],i)}function wt(i,e,t,n){return he([Ur,e.toBuffer(),Sn(t),Sn(n)],i)}function Ge(i,e){return he([Ur,e.toBuffer()],i)}function Kn(i){return he([Buffer.from("metadata","utf8"),Ct.toBuffer(),i.toBuffer()],Ct)}function Cn(i){return he([La],i)}function Le(i,e){return he([Oa,e.toBuffer()],i)}import _e from"bn.js";var de=new _e(0),Oe=new _e(1),tt=new _e(-1),Me=new _e(1).shln(64),Nn=new _e(1).shln(128),xi=Me.sub(Oe),Zt=64,Qr=Nn.subn(1),Ie=-443636,Se=-Ie,nt=new _e("4295048016"),it=new _e("79226673521066979257578248091"),Rn=new _e("4295048017"),Ln=new _e("79226673521066979257578248090"),Hr=16,Yr="59543866431248",jr="184467440737095516",Zr="15793534762490258745",On=new _e(10).pow(new _e(6));var Ef=new _e("18446744073700000000");var Ma=15,$=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=E.getTickArrayStartIndexByTick(r,o),l=E.getInitializedTickArrayInRange(s,a,o,u,Math.floor(Ma/2));for(let p=0;p<l.length;p++){let{publicKey:b}=oe(t,n,l[p]);c.push(b)}let d=(await et(e,c)).map(p=>p!==null?Jt.decode(p.data):null),m={};for(let p=0;p<c.length;p++){let b=d[p];b!==null&&(m[b.startTickIndex]=X(_({},b),{address:c[p]}))}return m}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=E.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,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/$.tickCount(t)),a=n?E.searchLowBitFromStart(r,o,s-1,1,t):E.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=Ae-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<Ae;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=oe(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=E.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 l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<Ae;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=oe(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Se)return!1;let n=E.getTickArrayStartIndexByTick(Ie,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ae*e}};import Y from"bn.js";import{PublicKey as Ue}from"@solana/web3.js";import pe from"bn.js";var Ii=14,rt=class{static maxTickInTickarrayBitmap(e){return e*Ae*ht}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(!$.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-$.tickCount(n):t+$.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ae,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),d=qr(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=Gr(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-$.tickCount(n)}}}},$t=class{static getBitmapOffset(e,t){if(!$.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=rt.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=rt.maxTickInTickarrayBitmap(e),n=-t;if(Se<=t)throw Error(`extensionTickBoundary check error: ${Se}, ${t}`);if(n<=Ie)throw Error(`extensionTickBoundary check error: ${n}, ${Ie}`);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:E.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=$.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}=rt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=E.mergeTickArrayBitmap(e).shln(ht-1-a),u=jt(512,c)?null:hi(512,c);if(u!==null){let l=t-u*$.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=E.mergeTickArrayBitmap(e).shrn(a),u=jt(512,c)?null:Ti(512,c);if(u!==null){let l=t+u*$.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-$.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),r=Math.floor(n/$.tickCount(t));return e<0&&n!=0&&(r=ht-r),r}};import Je from"bn.js";var en=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=Q.wrappingSubU128(Q.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=Q.wrappingSubU128(Q.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=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Q.mulDivFloor(Q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),c=t.tokenFeesOwedA.add(a),u=Q.mulDivFloor(Q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}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],l=Q.wrappingSubU128(c,u.growthInsideLastX64),d=Q.mulDivFloor(l,t.liquidity,Me),m=u.rewardAmountOwed.add(d);o.push(m)}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(Q.wrappingSubU128(Q.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(Q.wrappingSubU128(Q.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,g,k,P;let a=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),c=H.getSqrtPriceX64FromTick(t.tickLower),u=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,d=te.getAmountsFromLiquidity(a,c,u,n,o),[m,p]=[ye(d.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ye(d.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[b,f]=[ye(new Je(new M(d.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),ye(new Je(new M(d.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:b,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Jr}from"@solana/spl-token";var Pe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:p,accounts:b,sqrtPriceX64:f,feeAmount:y}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,s);return c.push(...b),{allTrade:m,expectedAmountOut:p.mul(tt),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:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=oe(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:b}=Tt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(tt),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?$t.checkTickArrayIsInit($.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=oe(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,$.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=oe(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/$.tickCount(e.tickSpacing)),r=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.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=$.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=$t.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ie||t>Se)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 l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=X(_({},d),{perSecond:Q.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ue(m)});if(p.tokenMint.equals(Ue.default))continue;if(n<=p.openTime.toNumber()||r.eq(de)){s.push(p);continue}let b=new pe(Math.min(p.endTime.toNumber(),n)),f=b.sub(p.lastUpdateTime),y=Q.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(y),k=Q.mulDivFloor(f,p.emissionsPerSecondX64,Me),P=p.rewardTotalEmissioned.add(k);s.push(X(_({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:P,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=E.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>Se&&(t=$.getArrayStartIndex(Se,e)+$.tickCount(e)),n<Ie&&(n=$.getArrayStartIndex(Ie,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!$.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/$.tickCount(t)*ht}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Pt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=$r.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=E.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=E.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=oe(c.programId,c.id,d);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Pt(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 l=Jt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=X(_({},l),{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(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let p of s)u.push(Ge(p,m).publicKey);let l=await et(t,u,{batchRequest:r}),d={};for(let m of l){if(m===null)continue;let p=Si.decode(m.data),b=p.poolId.toString(),f=e.find(S=>S.state.id.toBase58()===b);if(f===void 0)continue;let y=f.state,g=E._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),k=E._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:w}=te.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(g.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:k.price,amountA:P,amountB:w,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(S=>X(_({},S),{pendingReward:new pe(0)})),leverage:I,tokenFeeAmountA:new pe(0),tokenFeeAmountB:new pe(0)}];let h=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),R=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=h,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=R}if(o){let m=Object.values(d),p=await et(t,m,{batchRequest:r}),b={};for(let f=0;f<m.length;f++){let y=p[f];if(y===null)continue;let g=m[f].toString();b[g]=Jt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let g of y){let k=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,P=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,w=b[d[k].toString()],I=b[d[P].toString()],h=w.ticks[E.getTickOffsetInArray(g.tickLower,f.tickSpacing)],R=I.ticks[E.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:S,tokenFeeAmountB:V}=await en.GetPositionFees(f,g,h,R),T=await en.GetPositionRewards(f,g,h,R);g.tokenFeeAmountA=S.gte(new pe(0))?S:new pe(0),g.tokenFeeAmountB=V.gte(new pe(0))?V:new pe(0);for(let O=0;O<T.length;O++)g.rewardInfos[O].pendingReward=T[O].gte(new pe(0))?T[O]:new pe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0),catchLiquidityInsufficient:c=!1}){var re;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=l?nt.add(new pe(1)):it.sub(new pe(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ye(o,d,r,!1),{allTrade:b,expectedAmountOut:f,remainingAccounts:y,executionPrice:g,feeAmount:k}=Pe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((re=p.fee)!=null?re:de),u,c),P=ye(f,m,r,!1),w=H.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),I=l?w:new M(1).div(w),h=f.mul(new pe(Math.floor((1-s)*1e10))).div(new pe(1e10)),R=ye(h,m,r,!1),S=l?e.currentPrice:new M(1).div(e.currentPrice),V=new M(I).sub(S).abs(),T=S,O=new lt(new M(V).mul(10**15).toFixed(0),new M(T).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:p,amountOut:P,minAmountOut:R,expirationTime:Ze(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:O,fee:k,remainingAccounts:y,executionPriceX64:g}}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,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new Re(X(_({},u),{mint:u.address,isToken2022:u.programId===Jr.toBase58()})),new Re(X(_({},l),{mint:l.address,isToken2022:l.programId===Jr.toBase58()}))],{allTrade:p,realAmountIn:b,amountOut:f,minAmountOut:y,expirationTime:g,currentPrice:k,executionPrice:P,priceImpact:w,fee:I,remainingAccounts:h,executionPriceX64:R}=Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ue(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),S=X(_({},b),{amount:new ce(d,b.amount),fee:b.fee===void 0?void 0:new ce(d,b.fee)}),V=X(_({},f),{amount:new ce(m,f.amount),fee:f.fee===void 0?void 0:new ce(m,f.fee)}),T=X(_({},y),{amount:new ce(m,y.amount),fee:y.fee===void 0?void 0:new ce(m,y.fee)}),O=new Ce({baseToken:d,denominator:new pe(10).pow(new pe(20+d.decimals)),quoteToken:m,numerator:k.mul(new M(10**(20+m.decimals))).toFixed(0)}),re=new Ce({baseToken:d,denominator:new pe(10).pow(new pe(20+d.decimals)),quoteToken:m,numerator:P.mul(new M(10**(20+m.decimals))).toFixed(0)}),j=new ce(d,I);return{allTrade:p,realAmountIn:S,amountOut:V,minAmountOut:T,expirationTime:g,currentPrice:O,executionPrice:re,priceImpact:w,fee:j,remainingAccounts:h,executionPriceX64:R}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,y;let o=e[t],s=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=E.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{feeApr:o.feeApr*p,rewardsApr:[((b=o.rewardApr[0])!=null?b: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,l=e[n],d=r[He(e.mintA.address).toString()],m=r[He(e.mintB.address).toString()],p=e.mintA.decimals,b=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),y=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:P}=te.getAmountsFromLiquidityWithSlippage(f,y,g,t,!1,!1,0),{amountSlippageA:w,amountSlippageB:I}=te.getAmountsFromLiquidityWithSlippage(f,y,g,o,!1,!1,0),h=new M(k.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(P.toString()).div(new M(10).pow(b)).mul(m.value)),R=new M(w.toString()).div(new M(10).pow(p)).mul(d.value).add(new M(I.toString()).div(new M(10).pow(b)).mul(m.value)),S=new M(1).div(h.add(R)),T=new M(l.volumeFee).mul(365).div(u).mul(S).mul(100).toNumber(),O=3600*24*365,re=e.rewardDefaultInfos.map(j=>{var D,nn;let fe=j.mint.decimals,Z=r[j.mint.address];return c<((D=j.startTime)!=null?D:0)||c>((nn=j.endTime)!=null?nn:0)||!j.perSecond||!Z||fe===void 0?0:new M(Z.value).mul(new M(j.perSecond).mul(O)).div(new M(10).pow(fe)).mul(S).mul(100).toNumber()});return{feeApr:T,rewardsApr:re,apr:T+re.reduce((j,fe)=>j+fe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,k;let l=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),d=H.getSqrtPriceX64FromTick(n),m=H.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,b=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new pe(new M(b.amount.sub((k=b.fee)!=null?k:de).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?te.getLiquidityFromTokenAmountA(d,m,f,!a):new pe(0);else if(l.lte(m)){let P=te.getLiquidityFromTokenAmountA(l,m,f,!a),w=te.getLiquidityFromTokenAmountB(d,l,f);y=t?P:w}else y=t?new pe(0):te.getLiquidityFromTokenAmountB(d,m,f);return Pe.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,g,k,P;let c=H.getSqrtPriceX64FromTick(n),u=H.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,d=te.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,p]=[ye(d.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ye(d.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[b,f]=[ye(d.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),ye(d.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:p,amountSlippageA:b,amountSlippageB:f,expirationTime:Ze(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ue(c.id));(await et(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=Mt.decode(c.data))});let s=t.map(c=>Le(new Ue(c.programId),new Ue(c.id)).publicKey),a=await Pe.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>X(_({},c),{[u.id]:X(_({},n[u.id]),{id:new Ue(u.id),version:6,programId:new Ue(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:X(_({},u.config),{id:new Ue(u.config.id),fundOwner:""}),currentPrice:new M(u.price),exBitmapInfo:a[Le(new Ue(u.programId),new Ue(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]}};var Q=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(de)||(o=o.add(Oe)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(Oe)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new Y(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Nn).sub(t).mod(Nn)}};function ke(i,e){return Ki(i.mul(e),64,256)}function Ea(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ki(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return Q.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Q.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln(Zt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Q.mulDivCeil(s,e,a):Q.mulDivRoundingUp(s,Oe,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 Q.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Zt);if(r)return e.add(o.div(t));{let s=Q.mulDivRoundingUp(o,Oe,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ie||e>Se)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new Y("18445821805675395072"):new Y("18446744073709551616");return(t&2)!=0&&(n=ke(n,new Y("18444899583751176192"))),(t&4)!=0&&(n=ke(n,new Y("18443055278223355904"))),(t&8)!=0&&(n=ke(n,new Y("18439367220385607680"))),(t&16)!=0&&(n=ke(n,new Y("18431993317065453568"))),(t&32)!=0&&(n=ke(n,new Y("18417254355718170624"))),(t&64)!=0&&(n=ke(n,new Y("18387811781193609216"))),(t&128)!=0&&(n=ke(n,new Y("18329067761203558400"))),(t&256)!=0&&(n=ke(n,new Y("18212142134806163456"))),(t&512)!=0&&(n=ke(n,new Y("17980523815641700352"))),(t&1024)!=0&&(n=ke(n,new Y("17526086738831433728"))),(t&2048)!=0&&(n=ke(n,new Y("16651378430235570176"))),(t&4096)!=0&&(n=ke(n,new Y("15030750278694412288"))),(t&8192)!=0&&(n=ke(n,new Y("12247334978884435968"))),(t&16384)!=0&&(n=ke(n,new Y("8131365268886854656"))),(t&32768)!=0&&(n=ke(n,new Y("3584323654725218816"))),(t&65536)!=0&&(n=ke(n,new Y("696457651848324352"))),(t&131072)!=0&&(n=ke(n,new Y("26294789957507116"))),(t&262144)!=0&&(n=ke(n,new Y("37481735321082"))),e>0&&(n=Qr.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Y(t-64),r=Ea(n,32,128),o=new Y("8000000000000000","hex"),s=0,a=new Y(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Y(0))&&s<Hr;){c=c.mul(c);let b=c.shrn(127);c=c.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let u=a.shrn(32),d=r.add(u).mul(new Y(Yr)),m=Ki(d.sub(new Y(jr)),64,128).toNumber(),p=Ki(d.add(new Y(Zr)),64,128).toNumber();return m==p?m:H.getSqrtPriceX64FromTick(p).lte(e)?p:m}},Bt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=H.getTickFromSqrtPriceX64(H.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=Bt.getTickWithPriceAndTickspacing(e,t,n,r),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,r)}},te=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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Zt),s=t.sub(e);return r?Q.mulDivRoundingUp(Q.mulDivCeil(o,s,t),Oe,e):Q.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return r?Q.mulDivCeil(n,t.sub(e),Me):Q.mulDivFloor(n,t.sub(e),Me)}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?Q.mulDivRoundingUp(a,Oe,xi):a.shrn(Zt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Q.mulDivFloor(n,xi,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return te.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=te.getLiquidityFromTokenAmountA(e,n,r,!1),a=te.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return te.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:te.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new Y(0)};if(e.lt(n)){let s=te.getTokenAmountAFromLiquidity(e,n,r,o),a=te.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new Y(0),amountB:te.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=te.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,d=new Y(new M(c.toString()).mul(l).toFixed(0)),m=new Y(new M(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var k,P,w,I;let u=H.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),d=H.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,p=te.getAmountsFromLiquidity(u,l,d,r,s),[b,f]=[ye(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),ye(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[y,g]=[ye(new Y(new M(p.amountA.toString()).mul(m).toFixed(0)),(w=e.mintA.extensions)==null?void 0:w.feeConfig,a,c),ye(new Y(new M(p.amountB.toString()).mul(m).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,c)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:y,amountSlippageB:g,expirationTime:Ze(b.expirationTime,f.expirationTime)}}},Tt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f=!1){if(m.eq(de))throw new Error("amountSpecified must not be 0");if(b||(b=s?nt.add(Oe):it.sub(Oe)),s){if(b.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt(de),g={amountSpecifiedRemaining:m,amountCalculated:de,sqrtPriceX64:d,tick:u>p?Math.min(p+$.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new Y(0)},k=p,P=n[p],w=0,I=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(de)&&!g.sqrtPriceX64.eq(b);){w>10;let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let R=E.nextInitTick(P,g.tick,l,s,I),S=R||null,V=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let O=Pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!O.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}k=O.nextStartIndex;let{publicKey:re}=oe(e,t,k);V=re,P=n[k];try{S=E.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),p!==k&&V&&(g.accounts.push(V),p=k),h.tickNext<Ie?h.tickNext=Ie:h.tickNext>Se&&(h.tickNext=Se),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let T;if(s&&h.sqrtPriceNextX64.lt(b)||!s&&h.sqrtPriceNextX64.gt(b)?T=b:T=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=Tt.swapStepCompute(g.sqrtPriceX64,T,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(h.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let O=S.liquidityNet;s&&(O=O.mul(tt)),g.liquidity=te.addDelta(g.liquidity,O)}I=h.tickNext!=g.tick&&!s&&P.startTickIndex===h.tickNext,g.tick=s?h.tickNext-1:h.tickNext}else if(g.sqrtPriceX64!=h.sqrtPriceStartX64){let O=H.getTickFromSqrtPriceX64(g.sqrtPriceX64);I=O!=g.tick&&!s&&P.startTickIndex===O,g.tick=O}++w}try{let{nextStartIndex:h,isExist:R}=$.nextInitializedTickArray(g.tick,l,s,r,o);R&&p!==h&&(g.accounts.push(oe(e,t,h).publicKey),p=h)}catch{}return{allTrade:!0,amountSpecifiedRemaining:de,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new Y(0),amountIn:new Y(0),amountOut:new Y(0),feeAmount:new Y(0)},a=e.gte(t),c=r.gte(de);if(c){let l=Q.mulDivFloor(r,On.sub(new Y(o.toString())),On);s.amountIn=a?te.getTokenAmountAFromLiquidity(t,e,n,!0):te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?te.getTokenAmountBFromLiquidity(t,e,n,!1):te.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,r.mul(tt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=te.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=te.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:te.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:te.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(tt))&&(s.amountOut=r.mul(tt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Q.mulDivCeil(s.amountIn,new Y(o),On.sub(new Y(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ae=60,ht=512,E=class{static getTickArrayAddressByTick(e,t,n,r){let o=E.getTickArrayStartIndexByTick(n,r),{publicKey:s}=oe(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Ae)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=$.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)*$.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ae,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ae,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*Ae:e+t*Ae}static mergeTickArrayBitmap(e){let t=new Fa(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ae));return[...E.searchLowBitFromStart(e,t,s-1,o,n),...E.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,0,ht,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=E.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=oe(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=>E.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=$.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=>E.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=$.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ie||e>Se}static nextInitTick(e,t,n,r,o){if($.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<Ae;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ae-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ae;){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=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=Bt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var _a=v([ge(8),z("bump"),mt("index"),K(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),mt("tickSpacing"),ne(A(),8,"")]),va=v([Ee("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ne(G(),1,"")]),Ci=v([ge(8),Fe("initialized"),K("poolId"),ne(va,1e3,"observations"),ne(G(),5,"")]),Da=v([z("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),G("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),G("rewardGrowthGlobalX64")]),Mt=v([ge(8),z("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),z("mintDecimalsA"),z("mintDecimalsB"),mt("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),Te("tickCurrent"),mt("observationIndex"),mt("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),z("status"),ne(z(),7,""),ne(Da,3,"rewardInfos"),ne(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),ne(A(),15*4-3,"padding")]),Va=v([G("growthInsideLastX64"),A("rewardAmountOwed")]),Si=v([ge(8),z("bump"),K("nftMint"),K("poolId"),Te("tickLower"),Te("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(Va,3,"rewardInfos"),ne(A(),8,"")]),Gb=v([ge(8),z("bump"),K("poolId"),Te("tickLowerIndex"),Te("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(G(),3,"rewardGrowthInside"),ne(A(),8,"")]),Wa=v([Te("tick"),Sr("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ne(G(),3,"rewardGrowthsOutsideX64"),ne(Ee(),13,"")]),Jt=v([ge(8),K("poolId"),Te("startTickIndex"),ne(Wa,Ae,"ticks"),z("initializedTickCount"),ne(z(),115,"")]),qa=v([ge(329),ne(K(),100,"whitelistMints")]),$r=v([ge(8),K("poolId"),ne(ne(A(),8),Ii,"positiveTickArrayBitmap"),ne(ne(A(),8),Ii,"negativeTickArrayBitmap")]);var zb=v([ge(8),z("bump"),Fe("disableCreatePool"),mt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),K("protocolOwner"),K("fundOwner"),ne(A(),16)]),eo=v([ge(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),z("bump"),z("status"),z("lpDecimals"),z("mintDecimalA"),z("mintDecimalB"),A("lpAmount"),A("protocolFeesMintA"),A("protocolFeesMintB"),A("fundFeesMintA"),A("fundFeesMintB"),A("openTime"),ne(A(),32)]);import{TransactionInstruction as Ga}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jb,TOKEN_2022_PROGRAM_ID as $b,ASSOCIATED_TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";var iy=se("Raydium_cpmm"),Ua={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function to(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b,f){let y=v([A("amountIn"),A("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],k=Buffer.alloc(y.span);return y.encode({amountIn:b,amounOutMin:f},k),new Ga({keys:g,programId:i,data:Buffer.from([...Ua.swapBaseInput,...k])})}var Xa=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),sy=Buffer.from("amm_config","utf8"),ay=Buffer.from("pool","utf8"),uy=Buffer.from("pool_lp_mint","utf8"),cy=Buffer.from("pool_vault","utf8"),ly=Buffer.from("observation","utf8");function no(i){return he([Xa],i)}import za from"bn.js";var py=new za(1e6);import Qa from"bn.js";var Py=new Qa(0);import{PublicKey as eg}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Be,TOKEN_2022_PROGRAM_ID as ft,ASSOCIATED_TOKEN_PROGRAM_ID as io}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as Xe,SystemProgram as Et,Keypair as Ni}from"@solana/web3.js";import ro from"bn.js";var oo=se("Raydium_Clmm"),ze={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},tn=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b){let f=v([G("sqrtPriceX64"),A("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:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:b},g);let k=Buffer.from([...ze.createPool,...g]);return new Xe({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=In({fromPublicKey:r,programId:n}),[m,p]=[new L(o.address),new L(s.address)],b=[Et.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ci.span),space:Ci.span,programId:n})],{publicKey:f}=Xr(n,a,m,p),{publicKey:y}=Bi(n,f,m),{publicKey:g}=Bi(n,f,p);return b.push(this.createPoolInstruction(n,f,r,a,d.publicKey,m,y,new L(o.programId||Be),p,g,new L(s.programId||Be),Le(n,f).publicKey,c,u)),{signers:[],instructions:b,instructionTypes:[J.CreateAccount,J.ClmmCreatePool],address:{poolId:f,observationId:d.publicKey,mintAVault:y,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k,P,w,I,h,R,S,V,T){let O=v([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],j=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:io,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...re],fe=Buffer.alloc(O.span);O.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:I,liquidity:h,amountMaxA:R,amountMaxB:S,withMetadata:V==="create",baseFlag:!1,optionBaseFlag:0},fe);let Z=Buffer.from([...ze.openPosition,...fe]);return new Xe({keys:j,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new L(e.programId),new L(e.id)],b;if(l)b=new L((await l(1))[0]);else{let S=Ni.generate();d.push(S),b=S.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=oe(m,p,f),{publicKey:k}=oe(m,p,y),{publicKey:P}=je(n.wallet,b,Be),{publicKey:w}=Kn(b),{publicKey:I}=Ge(m,b),{publicKey:h}=wt(m,p,r,o),R=this.openPositionFromLiquidityInstruction(m,n.feePayer,p,n.wallet,b,P,w,h,g,k,I,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),r,o,f,y,s,a,c,u);return{signers:d,instructions:[R],instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:P,metadataAccount:w,personalPosition:I,protocolPosition:h}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new L(e.programId),new L(e.id)],b;if(l)b=new L((await l(1))[0]);else{let S=Ni.generate();d.push(S),b=S.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=oe(m,p,f),{publicKey:k}=oe(m,p,y),{publicKey:P}=je(n.wallet,b,Be),{publicKey:w}=Kn(b),{publicKey:I}=Ge(m,b),{publicKey:h}=wt(m,p,r,o),R=this.openPositionFromBaseInstruction(m,n.feePayer,p,n.wallet,b,P,w,h,g,k,I,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),r,o,f,y,u,s,a,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(m,p).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:P,metadataAccount:w,personalPosition:I,protocolPosition:h},instructions:[R],signers:d,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k,P,w,I,h,R,S,V,T){let O=v([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],j=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:io,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...re],fe=Buffer.alloc(O.span);O.encode({tickLowerIndex:k,tickUpperIndex:P,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:I,liquidity:new ro(0),amountMaxA:R==="MintA"?S:V,amountMaxB:R==="MintA"?V:S,withMetadata:h==="create",baseFlag:R==="MintA",optionBaseFlag:1},fe);let Z=Buffer.from([...ze.openPosition,...fe]);return new Xe({keys:j,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new L((await l(1))[0]);else{let S=Ni.generate();m.push(S),d=S.publicKey}let[p,b]=[new L(e.programId),new L(e.id)],f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=oe(p,b,f),{publicKey:k}=oe(p,b,y),{publicKey:P}=je(n.wallet,d,Be),{publicKey:w}=Kn(d),{publicKey:I}=Ge(p,d),{publicKey:h}=wt(p,b,r,o),R=this.openPositionFromLiquidityInstruction(p,n.wallet,b,n.wallet,d,P,w,h,g,k,I,n.tokenAccountA,n.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(t.mintA.address),new L(t.mintB.address),r,o,f,y,s,a,c,u,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(p,b).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:g,tickArrayUpper:k,positionNftAccount:P,metadataAccount:w,personalPosition:I,protocolPosition:h},instructions:[R],signers:m,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=v([]),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:Et.programId,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...ze.closePosition,...c]);return new Xe({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new L(e.programId),{publicKey:s}=je(n.wallet,r.nftMint,Be),{publicKey:a}=Ge(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:[J.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k){let P=v([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...w],h=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:y,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},h);let R=Buffer.from([...ze.increaseLiquidity,...h]);return new Xe({keys:I,programId:e,data:R})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new L(e.programId),new L(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=oe(c,u,l),{publicKey:p}=oe(c,u,d),{publicKey:b}=je(r.wallet,n.nftMint,Be),{publicKey:f}=Ge(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(c,r.wallet,b,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[g],instructionTypes:[J.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 L(e.programId),new L(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=oe(c,u,l),{publicKey:p}=oe(c,u,d),{publicKey:b}=je(r.wallet,n.nftMint,Be),{publicKey:f}=Ge(c,n.nftMint),{publicKey:y}=wt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,b,f,u,y,m,p,r.tokenAccountA,r.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?Le(c,u).publicKey:void 0)],signers:[],instructionTypes:[J.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k){let P=v([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],I=[{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:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...w],h=Buffer.alloc(P.span);P.encode({liquidity:new ro(0),amountMaxA:f==="MintA"?y:g,amountMaxB:f==="MintA"?g:y,baseFlag:f==="MintA",optionBaseFlag:1},h);let R=Buffer.from([...ze.increaseLiquidity,...h]);return new Xe({keys:I,programId:e,data:R})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g,k,P){let w=v([G("liquidity"),A("amountMinA"),A("amountMinB")]),I=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(V=>[{pubkey:V.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:V.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:V.rewardMint,isSigner:!1,isWritable:!1}]).flat()],h=[{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:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...I],R=Buffer.alloc(w.span);w.encode({liquidity:y,amountMinA:g,amountMinB:k},R);let S=Buffer.from([...ze.decreaseLiquidity,...R]);return new Xe({keys:h,programId:e,data:S})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new L(e.programId),new L(e.id)],d=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=oe(u,l,d),{publicKey:b}=oe(u,l,m),{publicKey:f}=je(r.wallet,n.nftMint,c),{publicKey:y}=Ge(u,n.nftMint),{publicKey:g}=wt(u,l,n.tickLower,n.tickUpper),k=[];for(let w=0;w<e.rewardDefaultInfos.length;w++)k.push({poolRewardVault:new L(t.rewardInfos[w].vault),ownerRewardVault:r.rewardAccounts[w],rewardMint:new L(e.rewardDefaultInfos[w].mint.address)});let P=[];return P.push(this.decreaseLiquidityInstruction(u,r.wallet,f,y,l,g,p,b,r.tokenAccountA,r.tokenAccountB,new L(t.vault.A),new L(t.vault.B),new L(e.mintA.address),new L(e.mintB.address),k,o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?Le(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:g},signers:[],instructions:P,instructionTypes:[J.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,d,m,p,b,f,y,g){let k=v([A("amount"),A("otherAmountThreshold"),G("sqrtPriceLimitX64"),Fe("isBaseInput")]),P=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...d.map(R=>({pubkey:R,isSigner:!1,isWritable:!0}))],w=[{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:m,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},I);let h=Buffer.from([...ze.swap,...I]);return new Xe({keys:w,programId:e,data:h})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new L(e.programId),new L(e.id)],[m,p]=[new L(t.vault.A),new L(t.vault.B)],[b,f]=[new L(e.mintA.address),new L(e.mintB.address)],y=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,d,new L(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?m:p,y?p:m,y?b:f,y?f:b,u,n,s,a,c,!0,Le(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[J.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=v([A("openTime"),A("endTime"),G("emissionsPerSecondX64")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Et.programId,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ue(l),endTime:ue(d),emissionsPerSecondX64:m},f);let y=Buffer.from([...ze.initReward,...f]);return new Xe({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new L(e.programId),new L(e.id)],a=zr(o,s,r.mint).publicKey,c=Cn(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new L(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:[J.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let p=v([z("rewardIndex"),G("emissionsPerSecondX64"),A("openTime"),A("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:ft,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:m,openTime:ue(l),endTime:ue(d)},f);let y=Buffer.from([...ze.setRewardEmissions,...f]);return new Xe({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new L(e.programId),new L(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new L(t.rewardInfos[m].vault),u=new L(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&oo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Cn(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new L(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[J.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=v([z("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:Be,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...ze.collectReward,...l]);return new Xe({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new L(e.programId),new L(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new L(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&oo.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:[J.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,l]=[new L(e.programId),new L(e.id)],[d,m]=[new L(t.vault.A),new L(t.vault.B)],[p,b]=[new L(e.mintA.address),new L(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(u,n.wallet,l,new L(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?m:d,f?d:m,f?p:b,f?b:p,c,d,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[J.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import gg from"bn.js";import{AccountLayout as Pg,TOKEN_PROGRAM_ID as kg}from"@solana/spl-token";import _n from"bn.js";var Ug=v([Ee("mintAuthorityOption"),K("mintAuthority"),A("supply"),z("decimals"),z("isInitialized"),Ee("freezeAuthorityOption"),K("freezeAuthority")]);import{TOKEN_PROGRAM_ID as Ha,TOKEN_2022_PROGRAM_ID as Ya,ASSOCIATED_TOKEN_PROGRAM_ID as ja}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as Za,SystemProgram as Ja}from"@solana/web3.js";import xt from"bn.js";function $a(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b){var h;let f=[],y=[x({pubkey:Ha,isWritable:!1}),x({pubkey:Ya,isWritable:!1}),x({pubkey:ja,isWritable:!1}),x({pubkey:Ja.programId,isWritable:!1}),x({pubkey:e,isSigner:!0})];y.push(x({pubkey:t})),y.push(x({pubkey:r}));let g=[c,u],k=[l,d],P=[o,s,a];for(let R=0;R<g.length;R++){let S=g[R],V=P[R]===S.mintA.address;if(y.push(x({pubkey:new q(S.programId),isWritable:!1})),R===g.length-1?y.push(x({pubkey:r})):y.push(x({pubkey:n})),y.push(x({pubkey:new q(P[R])})),y.push(x({pubkey:new q(P[R+1])})),S.version===6){let T=k[R];y.push(x({pubkey:new q(T.config.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(V?T.vault.A:T.vault.B)})),y.push(x({pubkey:new q(V?T.vault.B:T.vault.A)})),y.push(x({pubkey:new q(S.observationId)})),y.push(x({pubkey:Qn})),y.push(x({pubkey:Le(new q(S.programId),new q(S.id)).publicKey})),f.push(eu(S.sqrtPriceX64.toString(),V));for(let O of(h=b[R])!=null?h:[])y.push(x({pubkey:new q(O)}))}else if(S.version===5){let T=k[R];y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.authority),isWritable:!1})),y.push(x({pubkey:new q(T.marketProgramId)})),y.push(x({pubkey:new q(T.marketAuthority)})),y.push(x({pubkey:Pr,isWritable:!1})),y.push(x({pubkey:new q(T.openOrders)})),y.push(x({pubkey:new q(T.vault.A)})),y.push(x({pubkey:new q(T.vault.B)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.marketId)})),y.push(x({pubkey:new q(T.marketBids)})),y.push(x({pubkey:new q(T.marketAsks)})),y.push(x({pubkey:new q(T.marketEventQueue)})),y.push(x({pubkey:new q(T.marketBaseVault)})),y.push(x({pubkey:new q(T.marketQuoteVault)}))}else if(S.version===4){let T=k[R],O=S.status!==1;y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(T.authority),isWritable:!1})),y.push(x({pubkey:new q(O?T.id:T.marketProgramId)})),y.push(x({pubkey:new q(O?T.id:T.marketAuthority)})),y.push(x({pubkey:new q(O?T.id:T.openOrders)})),y.push(x({pubkey:new q(T.vault.A)})),y.push(x({pubkey:new q(T.vault.B)})),y.push(x({pubkey:new q(O?T.id:T.marketId)})),y.push(x({pubkey:new q(O?T.id:T.marketBids)})),y.push(x({pubkey:new q(O?T.id:T.marketAsks)})),y.push(x({pubkey:new q(O?T.id:T.marketEventQueue)})),y.push(x({pubkey:new q(O?T.id:T.marketBaseVault)})),y.push(x({pubkey:new q(O?T.id:T.marketQuoteVault)}))}else if(S.version===7){let T=k[R];y.push(x({pubkey:new q(T.authority)})),y.push(x({pubkey:new q(T.config.id)})),y.push(x({pubkey:new q(T.id)})),y.push(x({pubkey:new q(V?T.vault.A:T.vault.B)})),y.push(x({pubkey:new q(V?T.vault.B:T.vault.A)})),y.push(x({pubkey:new q(S.observationId)}))}else throw Error("pool type error")}let w=v([z("insId"),A("amountIn"),A("amountOut"),ne(G(),f.length,"clmmPriceLimit")]),I=Buffer.alloc(w.span);return w.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},I),new Za({keys:y,programId:i,data:I})}function eu(i,e){if(i)if(e){let t=new xt(i).div(new xt(25));return t.gt(Rn)?t:Rn}else{let t=new xt(i).mul(new xt(25));return t.lt(Ln)?t:Ln}else return e?Rn:Ln}function so({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],m=gt(d),p=t.equals(m.mintA.address)?nt.add(Oe):it.sub(Oe);return tn.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new xt(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[to(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,m?d.vaultA:d.vaultB,m?d.vaultB:d.vaultA,m?d.mintProgramA:d.mintProgramB,m?d.mintProgramB:d.mintProgramA,new q(d[m?"mintA":"mintB"].address),new q(d[m?"mintB":"mintA"].address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?J.CpmmSwapBaseIn:J.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[Dr({poolKeys:d,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new xt(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?J.AmmV5SwapBaseIn:J.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],b=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[$a(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,m,p,b,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new xt(0)),n.remainingAccounts)],instructionTypes:[J.RouteSwap],lookupTableAddress:[p.lookupTableAccount,b.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var ao={[si.toBase58()]:3},uo={3:si};var Ri=v([ge(5),ge(8),K("ownAddress"),A("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),K("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),ge(7)]),co={3:Ri};import{PublicKey as lo}from"@solana/web3.js";var Mn=se("Serum"),En=class{static getProgramId(e){let t=uo[e];return t||Mn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ao[t];return n||Mn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=co[e];return t||Mn.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,o;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));o=lo.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return Mn.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:lo.default,nonce:r}}};var ot=new _n(0),Li=class extends Rt{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(Ve));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,o=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await yi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=ue(t);for(let u=0;u<o.length;u++)c.gte(o[u].amount)?(s.addInstruction({instructions:[Ot({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(o[u].amount)):(s.addInstruction({instructions:[Ot({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),gi({destination:a.addresses.newAccount,source:o[u].publicKey,amount:c,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),o=this.createTxBuilder(),s=await yi({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return o.addInstruction(s),r.length&&o.addInstruction({instructions:[gi({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ot({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),o.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(Ve),d=u.amount.token.mint.equals(Ve),m=c.amount.token.mint,p=u.amount.token.mint,{account:b,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Fn:me,mint:m,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),b===void 0)throw Error("input account check error");let y;if(e.routeType==="route")y=this.scope.account.getAssociatedTokenAccount(p,u.amount.token.isToken2022?Fn:me);else{let{account:w,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Fn:me,mint:p,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});y=w,I&&a.addInstruction(I)}d&&a.addInstruction({endInstructions:[Ot({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:y,programId:me})],endInstructionTypes:[J.CloseAccount]});let g;if(e.routeType==="route"){let w=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(w.mint,w.isToken2022?Fn:me)}let k=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=so({routeProgram:o,inputMint:m,swapInfo:X(_({},e),{poolInfo:[...e.poolInfoList],poolKey:k,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:b,routeToken:g,destinationToken:y}});if(e.feeConfig!==void 0){let w=this.createTxBuilder();w.addInstruction({instructions:[mo(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]}),w.addInstruction(P);let{transactions:I}=s===0?await w.sizeCheckBuildV0():await w.sizeCheckBuild();I.length<2&&a.addInstruction({instructions:[mo(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]})}return a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Ar,clmm:n=kr,cpmm:r=wr}=e||{},o=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Mr.offsetOf("baseMint"),length:64}}),s=v([K("baseMint"),K("quoteMint")]),a=o.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=v([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:Mt.span}],dataSlice:{offset:Mt.offsetOf("mintA"),length:64}})).map(p=>{let b=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:b.mintA,mintB:b.mintB}}),m=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:eo.offsetOf("mintA"),length:64}})).map(p=>{let b=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:b.mintA,mintB:b.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:o}){e=e.toString()===It.default.toString()?Ve:e,t=t.toString()===It.default.toString()?Ve:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:me,in:[],out:[],mDecimals:0}),l[p].out.push(m)}}let d=[];for(let m of r)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,d.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:me,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let p=l[m];for(let b of p.in)for(let f of p.out)b.version===6&&a[b.id.toString()]===void 0?a[b.id.toString()]=b:b.version===7&&c[b.id.toString()]===void 0?c[b.id.toString()]=b:(b.version===4||b.version===5)&&s[b.id.toString()]===void 0&&(s[b.id.toString()]=b),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&c[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let o=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=Wr(o),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new It(f.mintA.address),programId:me,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new It(f.mintB.address),programId:me,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[y,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(me)?(r.delete(y),a[y]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(y),f.mintProgramB.equals(me)?(r.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(g)}),console.log("fetching mints info, total: ",r.size);let u=await ii({connection:this.scope.connection,mints:Array.from(r).map(f=>new It(f))});a=_(_({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),b=Object.keys(e.routePathDict).reduce((f,y)=>X(_({},f),{[y]:X(_({},e.routePathDict[y]),{mintProgram:a[y].programId,mDecimals:a[y].decimals,in:e.routePathDict[y].in.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[y].out.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:d,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:l,routePathDict:b}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,k,P,w,I,h,R,S,V;let d=l===void 0?new _n(0):e.raw.mul(new _n(l.feeBps.toNumber())).div(new _n(1e4)),m=e.raw.sub(d),p=new ce(e.token,m),b=l===void 0?void 0:{feeAmount:d,feeAccount:l.feeAccount},f=X(_({},t),{address:He(t.address).toString()}),y=[];for(let T of n)try{y.push(X(_({},this.computeAmountOut({itemPool:T,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:b}))}catch(O){this.logDebug("direct error",T.version,T.id.toString(),O.message)}this.logDebug("direct done");for(let[T,O]of Object.entries(r)){let re={chainId:101,address:T,programId:O.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:O.mDecimals,tags:[],extensions:{}},j=O.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:re,amountIn:p})}}catch(D){this.logDebug("route in error",Z.version,Z.id.toString(),D.message);return}}).sort((Z,D)=>{var Oi,Mi,Ei,Fi;let nn=Z===void 0?ot:Z.data.amountOut.amount.raw.sub((Mi=(Oi=Z.data.amountOut.fee)==null?void 0:Oi.raw)!=null?Mi:ot),po=D===void 0?ot:D.data.amountOut.amount.raw.sub((Fi=(Ei=D.data.amountOut.fee)==null?void 0:Ei.raw)!=null?Fi:ot);return nn.lt(po)?1:-1})[0];if(j===void 0)continue;let fe=new ce(Er(re),j.data.amountOut.amount.raw.sub((k=(g=j.data.amountOut.fee)==null?void 0:g.raw)!=null?k:ot));for(let Z of O.out)try{let D=this.computeAmountOut({itemPool:Z,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:fe});y.push(X(_({},D),{allTrade:!!(j.data.allTrade&&D.allTrade),amountIn:j.data.amountIn,amountOut:D.amountOut,minAmountOut:D.minAmountOut,currentPrice:void 0,executionPrice:new M(new Ce({baseToken:j.data.amountIn.amount.token,denominator:j.data.amountIn.amount.raw,quoteToken:D.amountOut.amount.token,numerator:D.amountOut.amount.raw.sub((w=(P=D.amountOut.fee)==null?void 0:P.raw)!=null?w:ot)}).toFixed()),priceImpact:new M(j.data.priceImpact.add(D.priceImpact).toFixed()),fee:[j.data.fee[0],D.fee[0]],routeType:"route",poolInfoList:[j.pool,Z],remainingAccounts:[j.data.remainingAccounts[0],D.remainingAccounts[0]],minMiddleAmountFee:(I=D.amountOut.fee)!=null&&I.raw?new ce(j.data.amountOut.amount.token,((R=(h=j.data.amountOut.fee)==null?void 0:h.raw)!=null?R:ot).add((V=(S=D.amountOut.fee)==null?void 0:S.raw)!=null?V:ot)):void 0,middleToken:j.data.amountOut.amount.token,poolReady:j.data.poolReady&&D.poolReady,poolType:[j.data.poolType,D.poolType],feeConfig:b,expirationTime:Ze(j.data.expirationTime,D.expirationTime)}))}catch(D){this.logDebug("route out error",Z.version,Z.id.toString(),D.message)}}return y.filter(T=>(T.allTrade||this.logDebug(`pool ${T.poolInfoList.map(O=>O.id.toString()).join(",")} filter out since not all trade`),T.allTrade)).sort((T,O)=>T.amountOut.amount.raw.sub(O.amountOut.amount.raw).gt(ot)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:d,minAmountOut:m,expirationTime:p,currentPrice:b,executionPrice:f,priceImpact:y,fee:g,remainingAccounts:k,executionPriceX64:P}=Pe.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:d,minAmountOut:m,currentPrice:new M(b.toFixed()),executionPrice:new M(f.toFixed()),priceImpact:new M(y.toFixed()),fee:[g],remainingAccounts:[k],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ze(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:d,minAmountOut:m,priceImpact:p,fee:b}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Yt(X(_({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(_({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new ce(c.token,b)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:d,executionPrice:m,priceImpact:p,fee:b}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Yt(X(_({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(_({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:d,executionPrice:m,priceImpact:p,fee:[new ce(c.token,b)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=await this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await Pt(this.scope.connection,Array.from(s).map(l=>({pubkey:new It(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Ri.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:En.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:X(_({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=_({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Vr({programId:new It(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(d)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:no(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:kt({address:u.mintLp.toBase58(),programId:me.toBase58(),decimals:u.lpDecimals}),config:X(_({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};export{Li as default};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=trade.mjs.map