@raydium-io/raydium-sdk-v2 0.1.39-alpha → 0.1.40-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 (97) 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/{api-25cae0da.d.ts → api-f02449a3.d.ts} +13 -13
  5. package/lib/common/accountInfo.d.ts +1 -1
  6. package/lib/common/bignumber.d.ts +1 -1
  7. package/lib/common/fractionUtil.d.ts +1 -1
  8. package/lib/common/index.d.ts +1 -1
  9. package/lib/common/transfer.d.ts +1 -1
  10. package/lib/common/txTool/txTool.d.ts +1 -1
  11. package/lib/common/txTool/txUtils.d.ts +1 -1
  12. package/lib/common/utility.d.ts +1 -1
  13. package/lib/index.d.ts +3 -3
  14. package/lib/index.js +1 -1
  15. package/lib/index.js.map +1 -1
  16. package/lib/index.mjs +1 -1
  17. package/lib/index.mjs.map +1 -1
  18. package/lib/module/amount.d.ts +1 -1
  19. package/lib/module/fraction.d.ts +1 -1
  20. package/lib/module/index.d.ts +1 -1
  21. package/lib/module/percent.d.ts +1 -1
  22. package/lib/module/price.d.ts +1 -1
  23. package/lib/raydium/account/account.d.ts +3 -3
  24. package/lib/raydium/account/index.d.ts +1 -1
  25. package/lib/raydium/account/instruction.d.ts +1 -1
  26. package/lib/raydium/account/layout.d.ts +2 -2
  27. package/lib/raydium/account/types.d.ts +1 -1
  28. package/lib/raydium/account/util.d.ts +1 -1
  29. package/lib/raydium/clmm/clmm.d.ts +3 -3
  30. package/lib/raydium/clmm/index.d.ts +3 -3
  31. package/lib/raydium/clmm/instrument.d.ts +2 -2
  32. package/lib/raydium/clmm/layout.d.ts +9 -9
  33. package/lib/raydium/clmm/type.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  38. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  39. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  40. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  41. package/lib/raydium/cpmm/index.d.ts +1 -1
  42. package/lib/raydium/cpmm/layout.d.ts +3 -3
  43. package/lib/raydium/cpmm/type.d.ts +1 -1
  44. package/lib/raydium/farm/config.d.ts +1 -1
  45. package/lib/raydium/farm/farm.d.ts +3 -3
  46. package/lib/raydium/farm/index.d.ts +1 -1
  47. package/lib/raydium/farm/instruction.d.ts +1 -1
  48. package/lib/raydium/farm/layout.d.ts +1 -1
  49. package/lib/raydium/farm/type.d.ts +1 -1
  50. package/lib/raydium/farm/util.d.ts +1 -1
  51. package/lib/raydium/ido/ido.d.ts +3 -3
  52. package/lib/raydium/ido/index.d.ts +3 -3
  53. package/lib/raydium/ido/instruction.d.ts +1 -1
  54. package/lib/raydium/ido/type.d.ts +1 -1
  55. package/lib/raydium/index.d.ts +3 -3
  56. package/lib/raydium/index.js +1 -1
  57. package/lib/raydium/index.js.map +1 -1
  58. package/lib/raydium/index.mjs +1 -1
  59. package/lib/raydium/index.mjs.map +1 -1
  60. package/lib/raydium/liquidity/index.d.ts +1 -1
  61. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  62. package/lib/raydium/liquidity/layout.d.ts +2 -2
  63. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  64. package/lib/raydium/liquidity/type.d.ts +1 -1
  65. package/lib/raydium/liquidity/utils.d.ts +1 -1
  66. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  67. package/lib/raydium/marketV2/index.d.ts +3 -3
  68. package/lib/raydium/moduleBase.d.ts +3 -3
  69. package/lib/raydium/raydium.d.ts +3 -3
  70. package/lib/raydium/raydium.js +1 -1
  71. package/lib/raydium/raydium.js.map +1 -1
  72. package/lib/raydium/raydium.mjs +1 -1
  73. package/lib/raydium/raydium.mjs.map +1 -1
  74. package/lib/raydium/serum/layout.d.ts +2 -2
  75. package/lib/raydium/token/constant.d.ts +1 -1
  76. package/lib/raydium/token/index.d.ts +1 -1
  77. package/lib/raydium/token/layout.d.ts +2 -2
  78. package/lib/raydium/token/token.d.ts +3 -3
  79. package/lib/raydium/token/type.d.ts +1 -1
  80. package/lib/raydium/token/utils.d.ts +1 -1
  81. package/lib/raydium/tradeV2/index.d.ts +2 -2
  82. package/lib/raydium/tradeV2/index.js.map +1 -1
  83. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  84. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  85. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  86. package/lib/raydium/tradeV2/trade.js +1 -1
  87. package/lib/raydium/tradeV2/trade.js.map +1 -1
  88. package/lib/raydium/tradeV2/trade.mjs +1 -1
  89. package/lib/raydium/tradeV2/trade.mjs.map +1 -1
  90. package/lib/raydium/tradeV2/type.d.ts +2 -2
  91. package/lib/raydium/type.d.ts +1 -1
  92. package/lib/raydium/utils1216/index.d.ts +3 -3
  93. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  94. package/lib/{raydium-810e369f.d.ts → raydium-6e4c8f65.d.ts} +4 -4
  95. package/lib/{type-bce9b6ba.d.ts → type-7700ca43.d.ts} +1 -1
  96. package/package.json +1 -1
  97. package/src/raydium/tradeV2/trade.ts +27 -4
@@ -1,3 +1,3 @@
1
- var go=Object.defineProperty,Ao=Object.defineProperties;var Po=Object.getOwnPropertyDescriptors;var rn=Object.getOwnPropertySymbols;var vi=Object.prototype.hasOwnProperty,Di=Object.prototype.propertyIsEnumerable;var _i=(i,e,t)=>e in i?go(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(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)=>Ao(i,Po(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 pe,TOKEN_2022_PROGRAM_ID as Ri,createTransferInstruction as bo}from"@solana/spl-token";import{get as Vi,set as ko}from"lodash";var _n=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={},wo={};function se(i){let e=Vi(Wi,i);if(!e){let t=Vi(wo,i);e=new _n({name:i,logLevel:t}),ko(Wi,i,e)}return e}import{PublicKey as Ls}from"@solana/web3.js";import Os from"bn.js";import Cs from"big.js";import yn from"bn.js";import Ne from"bn.js";var St=9e15,ct=1e9,vn="0123456789abcdef",sn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",an="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Dn={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,ho=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,To=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Bo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Yi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,q=7,xo=9007199254740991,Io=sn.length-1,Vn=an.length-1,T={toStringTag:Hi};T.absoluteValue=T.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),F(i)};T.ceil=function(){return F(new this.constructor(this),this.e+1,2)};T.clampedTo=T.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(ut+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};T.comparedTo=T.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};T.cosine=T.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+q,n.rounding=1,t=So(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)};T.cubeRoot=T.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)};T.decimalPlaces=T.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-xe(this.e/q))*q,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(i){return ae(this,new this.constructor(i))};T.dividedToIntegerBy=T.divToInt=function(i){var e=this,t=e.constructor;return F(ae(e,new t(i),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(i){return this.cmp(i)===0};T.floor=function(){return F(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(i){return this.cmp(i)>0};T.greaterThanOrEqualTo=T.gte=function(i){var e=this.cmp(i);return e==1||e===0};T.hyperbolicCosine=T.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/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)};T.hyperbolicSine=T.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=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)};T.hyperbolicTangent=T.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};T.inverseCosine=T.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?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))};T.inverseHyperbolicCosine=T.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?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)};T.inverseSine=T.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=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)))};T.inverseTangent=T.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<=Vn)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<=Vn)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/q+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/q),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)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&xe(this.e/q)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(i){return this.cmp(i)<0};T.lessThanOrEqualTo=T.lte=function(i){return this.cmp(i)<1};T.logarithm=T.log=function(i){var e,t,n,r,o,s,a,c,u=this,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)};T.minus=T.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/q),l=xe(p.e/q),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/q),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)};T.modulo=T.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?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))};T.naturalExponential=T.exp=function(){return Wn(this)};T.naturalLogarithm=T.ln=function(){return at(this)};T.negated=T.neg=function(){var i=new this.constructor(this);return i.s=-i.s,F(i)};T.plus=T.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/q),n=xe(i.e/q),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/q),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};T.precision=T.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};T.round=function(){var i=this,e=i.constructor;return F(new e(i),i.e+1,e.rounding)};T.sine=T.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+q,n.rounding=1,t=Co(n,er(n,t)),n.precision=i,n.rounding=e,F($e>2?t.neg():t,i,e,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,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)};T.tangent=T.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=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)};T.times=T.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/q)+xe(i.e/q),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};T.toBinary=function(i,e){return Gn(this,2,i,e)};T.toDecimalPlaces=T.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ke(i,0,ct),e===void 0?e=n.rounding:Ke(e,0,8),F(t,i+t.e+1,e))};T.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};T.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};T.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%q,e.d[0]=be(10,s<0?q+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*q*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};T.toHexadecimal=T.toHex=function(i,e){return Gn(this,16,i,e)};T.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding: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};T.toNumber=function(){return+this};T.toOctal=function(i,e){return Gn(this,8,i,e)};T.toPower=T.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(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/q),e>=i.d.length-1&&(t=u<0?-u:u)<=xo)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=Wn(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(Wn(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))};T.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};T.toSignificantDigits=T.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)};T.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};T.truncated=T.trunc=function(){return F(new this.constructor(this),this.e+1,1)};T.valueOf=T.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=q-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=q-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+=q,r=0):(r=Math.ceil((e+1)/q),e%=q),o=be(10,q-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]+=vn.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 So(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,K,h,R,I,W,B,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=q,l=xe(n.e/p)-xe(r.e/p)),O=D.length,W=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<W||m)&&h--;d++)R=m*c+(Z[d]||0),k[d]=R/D|0,m=R%D|0;b=m||d<W}else{for(m=c/(D[0]+1)|0,m>1&&(D=i(D,m,c),Z=i(Z,m,c),O=D.length,W=Z.length),I=O,P=Z.slice(0,O),w=P.length;w<O;)P[w++]=0;re=D.slice(),re.unshift(0),B=D[0],D[1]>=c/2&&++B;do m=0,u=e(D,P,O,w),u<0?(K=P[0],O!=w&&(K=K*c+(P[1]||0)),m=K/B|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[I]||0:(P=[Z[I]],w=1);while((I++<W||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+=q,s=e,l=d[m=0],c=l/be(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/q),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=q,s=o-q+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=q,s=o-q+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,(q-e%q)%q),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,q-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*=q;t>=10;t/=10)e++;return e}function un(i,e,t){if(e>Io)throw U=!0,t&&(i.precision=t),Error(zi);return F(new i(sn),e,1,!0)}function ve(i,e,t){if(e>Vn)throw Error(zi);return F(new i(an),e,t,!0)}function ji(i){var e=i.length-1,t=e*q+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/q+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 Wn(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 qn(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)%q,t<0&&(n+=q),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=q;n<r;)i.d.push(+e.slice(n,n+=q));e=e.slice(n),n=q-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 Ko(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 qn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(To.test(e))t=16,e=e.toLowerCase();else if(ho.test(e))t=2;else if(Bo.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 Co(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/q);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 Gn(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+=vn.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+=vn.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 No(i){return new this(i).abs()}function Ro(i){return new this(i).acos()}function Lo(i){return new this(i).acosh()}function Oo(i,e){return new this(i).plus(e)}function Mo(i){return new this(i).asin()}function Eo(i){return new this(i).asinh()}function Fo(i){return new this(i).atan()}function _o(i){return new this(i).atanh()}function vo(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 Do(i){return new this(i).cbrt()}function Vo(i){return F(i=new this(i),i.e+1,2)}function Wo(i,e,t){return new this(i).clamp(e,t)}function qo(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]=Dn[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]=Dn[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 Go(i){return new this(i).cos()}function Uo(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 qn(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)?qn(u,o):Ko(u,o)}if(r.prototype=T,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=qo,r.clone=tr,r.isDecimal=Ui,r.abs=No,r.acos=Ro,r.acosh=Lo,r.add=Oo,r.asin=Mo,r.asinh=Eo,r.atan=Fo,r.atanh=_o,r.atan2=vo,r.cbrt=Do,r.ceil=Vo,r.clamp=Wo,r.cos=Go,r.cosh=Uo,r.div=Xo,r.exp=zo,r.floor=Qo,r.hypot=Ho,r.ln=Yo,r.log=jo,r.log10=Jo,r.log2=Zo,r.max=$o,r.min=es,r.mod=ts,r.mul=ns,r.pow=is,r.random=rs,r.round=os,r.sign=ss,r.sin=as,r.sinh=us,r.sqrt=cs,r.sub=ls,r.sum=ms,r.tan=ds,r.tanh=ps,r.trunc=fs,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 Xo(i,e){return new this(i).div(e)}function zo(i){return new this(i).exp()}function Qo(i){return F(i=new this(i),i.e+1,3)}function Ho(){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 Yo(i){return new this(i).ln()}function jo(i,e){return new this(i).log(e)}function Zo(i){return new this(i).log(2)}function Jo(i){return new this(i).log(10)}function $o(){return Ji(this,arguments,"lt")}function es(){return Ji(this,arguments,"gt")}function ts(i,e){return new this(i).mod(e)}function ns(i,e){return new this(i).mul(e)}function is(i,e){return new this(i).pow(e)}function rs(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/q),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%=q,n&&i&&(r=be(10,q-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-=q)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<q&&(t-=q-n)}return s.e=t,s.d=a,s}function os(i){return F(i=new this(i),i.e+1,this.rounding)}function ss(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function as(i){return new this(i).sin()}function us(i){return new this(i).sinh()}function cs(i){return new this(i).sqrt()}function ls(i,e){return new this(i).sub(e)}function ms(){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 ds(i){return new this(i).tan()}function ps(i){return new this(i).tanh()}function fs(i){return F(i=new this(i),i.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var _t=T.constructor=tr(Dn);sn=new _t(sn);an=new _t(an);var M=_t;import{PublicKey as Hn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bs}from"@solana/spl-token";import{PublicKey as le,SystemProgram as nr,SYSVAR_RENT_PUBKEY as ys}from"@solana/web3.js";function x({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var cu=[x({pubkey:bs,isWritable:!1}),x({pubkey:nr.programId,isWritable:!1}),x({pubkey:ys,isWritable:!1})];function Un({publicKey:i,transformSol:e}){let t=Xn(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 Xn(i){try{return new le(i)}catch{return i}}var dn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),zn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),yt=new le("SysvarRent111111111111111111111111111111111"),lu=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),mu=new le("Sysvar1nstructions1111111111111111111111111"),gs=nr.programId,du=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),pu=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),fu=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),bu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),yu=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),gu=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Au=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Pu=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ku=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),wu=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),hu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ve=new le("So11111111111111111111111111111111111111112"),vt=le.default;function He(i){return Un({publicKey:i,transformSol:!0})}import{PublicKey as As}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Qn={chainId:101,address:As.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 Yn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===vt.toBase58()||e instanceof Hn&&vt.equals(e)){this.decimals=Ye.decimals,this.symbol=Ye.symbol,this.name=Ye.name,this.mint=new Hn(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?Hn.default:Un({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=Yn;Re.WSOL=new Yn(X(v({},Ye),{mint:Ye.address}));import fn from"big.js";import ws from"bn.js";import hs from"decimal.js-light";import Ps from"toformat";var ks=Ps,Dt=ks;var pn=se("module/fraction"),jn=Dt(fn),Vt=Dt(hs),Ts={[0]:Vt.ROUND_DOWN,[1]:Vt.ROUND_HALF_UP,[2]:Vt.ROUND_UP},Bs={[0]:fn.roundDown,[1]:fn.roundHalfUp,[2]:fn.roundUp},ie=class{constructor(e,t=new ws(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:Ts[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.`),jn.DP=e,jn.RM=Bs[n]||1,new jn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Is=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(Zn(n.decimals),Zn(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&&Is.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 Jn=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=Jn;bn.SOL=new Jn(Qn);import Ss from"bn.js";var rr=new ie(new Ss(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),Ks=new Ne(1),Ac=new Ne(2),Pc=new Ne(3),kc=new Ne(5),$n=new Ne(10),wc=new Ne(100),hc=new Ne(1e3),Tc=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 Zn(i){return $n.pow(ue(i))}var Ns=se("Raydium_amount"),ur=Dt(Cs);function Rs(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")):Ns.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=$n.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]=Rs(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,Ls,ie,Os,Ce,lt].some(e=>typeof e=="object"&&i instanceof e)}function gt(i){return typeof i=="string"?Xn(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 ri,Transaction as Ut,TransactionMessage as Xt,VersionedTransaction as zt}from"@solana/web3.js";import Gs 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 Ms,ComputeBudgetProgram as cr,Transaction as mr,TransactionMessage as Es,Keypair as dr,VersionedTransaction as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fs}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 _s(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]=Ms.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Wt({instructions:i,payer:e,signers:t}){return _s(i,[e,...t])}function qt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=dr.generate().publicKey.toString()}){let o=new Es({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 vs=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=Fs.toBase58()),t.feePayer||(t.feePayer=dr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof pr&&(n=vs(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 Ds,TOKEN_PROGRAM_ID as Vs,getTransferFeeConfig as Ws,unpackMint as qs}from"@solana/spl-token";var ei=se("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=v({batchRequest:!1},t),s=ti(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=ti(c,10);a=(await(await Promise.all(u.map(async d=>await i._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ei.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"&&ei.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&&ei.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(v({},r),{accountInfo:n[o]}))}async function ni({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<Ds){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=qs(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=X(v({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Vs,feeConfig:(a=Ws(u))!=null?a:void 0})}return r[br.default.toBase58()]=r[Ve.toBase58()],r}async function ii({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 Gs.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(v({},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 ri(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 ri(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=[],K=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 I=w.findIndex(W=>W.txId===h);I>-1&&(w[I].status=R.err?"error":"success"),m==null||m([...w]),R.err||K()},"processed"),this.connection.getSignatureStatus(h)};return await K(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let K=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:b});P.push(K)}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=v(v({},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 ii({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:K}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:K,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,K=>{let h=k.findIndex(R=>R.txId===w);h>-1&&(k[h].status=K.err?"error":"success"),m==null||m([...k]),K.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(v({},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 ri(this.connection,P,this.signers.find(K=>K.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=[],K=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 I=w.findIndex(W=>W.txId===h);I>-1&&(w[I].status=R.err?"error":"success"),p==null||p([...w]),R.err||K()},"processed"),this.connection.getSignatureStatus(h)};return await K(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let K=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:f});P.push(K)}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=v(v({},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 ii({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(v({},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 K={};for(let h of[...new Set(a)])s[h]!==void 0&&(K[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(K=>K.isSigner).map(K=>K.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:K,skipPreflight:h=!0}=k||{};if(p.map(async(I,W)=>{b[W].length&&I.sign(b[W]),K&&(I.message.recentBlockhash=K)}),At(p),(R=this.owner)!=null&&R.isKeyPair){if(P){let I=[];for(let W of p){let B=await this.connection.sendTransaction(W,{skipPreflight:h}),{lastValidBlockHeight:O,blockhash:re}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:re,lastValidBlockHeight:O,signature:B},"confirmed"),I.push(B)}return{txIds:I,signedTxs:p}}return{txIds:await Promise.all(p.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:h}))),signedTxs:p}}if(this.signAllTransactions){let I=await this.signAllTransactions(p);if(P){let W=0,B=[],O=async()=>{if(!I[W])return;let re=await this.connection.sendTransaction(I[W],{skipPreflight:h});B.push({txId:re,status:"sent",signedTx:I[W]}),w==null||w([...B]),W++,this.connection.onSignature(re,j=>{let fe=B.findIndex(Z=>Z.txId===re);fe>-1&&(B[fe].status=j.err?"error":"success"),w==null||w([...B]),j.err||O()},"processed"),this.connection.getSignatureStatus(re)};return O(),{txIds:[],signedTxs:I}}else{let W=[];for(let B=0;B<I.length;B+=1){let O=await this.connection.sendTransaction(I[B],{skipPreflight:h});W.push(O)}return{txIds:W,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function ti(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 Ol=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ml=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),El=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Fl=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),_l=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),oi=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ar=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),vl=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Pr=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kr=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Dl=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Vl=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Wl=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ql=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Gl=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ul=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wr=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Xl=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),zl=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Us=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Xs=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),zs=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Ql={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:Us,CREATE_CPMM_POOL_AUTH:Xs,CREATE_CPMM_POOL_FEE_ACC:zs,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Qs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hs}from"@solana/spl-token";function je(i,e,t){return he([i.toBuffer(),(t!=null?t:Hs).toBuffer(),e.toBuffer()],new Qs("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(v({},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=si(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=si(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=si(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 si(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new We(0))?t.add(new We(1)):t}var ai=(...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(ai(e))}logInfo(...e){this.logger.info(ai(e))}logAndCreateError(...e){let t=ai(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as fa,createCloseAccountInstruction as ba,createTransferInstruction as ya,TOKEN_PROGRAM_ID as Lt}from"@solana/spl-token";import{PublicKey as ga,SystemProgram as Aa}from"@solana/web3.js";import Pa from"bn.js";import{PublicKey as la,Keypair as ma}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as da}from"@solana/spl-token";import vd from"bn.js";import{PublicKey as ia}from"@solana/web3.js";import xr,{isBN as Ir}from"bn.js";import{bits as Tm,BitStructure as Bm,blob as Ys,Blob as xm,cstr as Im,f32 as Sm,f32be as Km,f64 as Cm,f64be as Nm,greedy as Rm,Layout as js,ns64 as Lm,ns64be as Om,nu64 as Mm,nu64be as Em,offset as Fm,s16 as _m,s16be as vm,s24 as Dm,s24be as Vm,s32 as Zs,s32be as Wm,s40 as qm,s40be as Gm,s48 as Um,s48be as Xm,s8 as zm,seq as Js,struct as Qm,Structure as $s,u16 as ea,u16be as Hm,u24 as Ym,u24be as jm,u32 as Zm,u32be as Jm,u40 as $m,u40be as ed,u48 as td,u48be as nd,u8 as ta,UInt as na,union as id,Union as rd,unionLayoutDiscriminator as od,utf8 as sd}from"@solana/buffer-layout";var ui=js,hr=$s;var ci=na;var Tr=ta,mt=ea;var Te=Zs;var Br=Js;var ge=Ys;var Ht=class extends ui{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 ci(1,i)}function Ee(i){return new ci(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 ui{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 S(i){return new wn(ge(32),e=>new ia(e),e=>e.toBuffer(),i)}function Fe(i){return new wn(Tr(),ra,oa,i)}function ra(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function oa(i){return i?1:0}var li=class extends hr{decode(e,t){return super.decode(e,t)}};function _(i,e,t){return new li(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=_([S("mint"),S("owner"),A("amount"),Ee("delegateOption"),S("delegate"),z("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),S("closeAuthority")]);function sa(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function mi(i,...e){if(!sa(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 di(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){mi(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 Td=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function aa(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function pi(i){return typeof i=="string"&&(i=aa(i)),mi(i),i}var Tn=class{clone(){return this._cloneInto()}},Bd={}.toString;function Cr(i){let e=n=>i().update(pi(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function ua(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){di(this);let{view:t,buffer:n,blockLen:r}=this;e=pi(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){di(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;ua(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 ca=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),fi=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)+ca[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 fi);var qd=se("Raydium_Util");function In({fromPublicKey:i,programId:e=da}){let t=ma.generate().publicKey.toBase58().slice(0,32);return{publicKey:pa(i,t,e),seed:t}}function pa(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Lr(n);return new la(r)}function ka(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Lt}=i;return fa(t,e,n,r)}function Ot(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Lt}=i;return ba(e,t,r,n,o)}async function bi(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 Pa(a)),u=In({fromPublicKey:r,programId:Lt});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Aa.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:hn.span,programId:Lt}),ka({mint:new ga(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 yi({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Lt}){return ya(i,e,t,BigInt(String(n)),r,o)}import Or from"bn.js";var op=new Or(25),sp=new Or(1e4);var gi=_([z("instruction"),A("amountIn"),A("minAmountOut")]),Ai=_([z("instruction"),A("maxAmountIn"),A("amountOut")]),pp=_([z("instruction"),z("nonce")]),wa=_([z("instruction"),z("nonce"),A("startTime")]),Mr=_([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"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),A("lpReserve"),ne(A(),3,"padding")]),fp=_([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"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),ne(A(),64,"padding")]),ha=_([z("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),Ta=_([z("instruction"),A("amountIn")]);var bp=_([A("fee")]);import{PublicKey as mf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ca}from"@solana/spl-token";import{PublicKey as Pp}from"@solana/web3.js";import{MintLayout as wp,TOKEN_PROGRAM_ID as Tp}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 v({chainId:101,address:He(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as Rp}from"@solana/web3.js";var Mp=se("Raydium_liquidity_serum");import{PublicKey as Ba}from"@solana/web3.js";var Pi=new Ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xa=5e4,Ia=_([A("x"),A("y"),A("price")]),Dp=_([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),ne(Ia,xa,"DataElement")]);import{TOKEN_PROGRAM_ID as _r,ASSOCIATED_TOKEN_PROGRAM_ID as qp}from"@solana/spl-token";import{PublicKey as Up,TransactionInstruction as vr,SystemProgram as Xp,SYSVAR_RENT_PUBKEY as zp}from"@solana/web3.js";var Fr=se("Raydium_liquidity_instruction");function Sa({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=gt(i),s=Buffer.alloc(gi.span);gi.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:Pi})),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 Ka({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=gt(i),s=Buffer.alloc(Ai.span);Ai.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:Pi})),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 Sa(X(v({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Ka(X(v({},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 Pf from"bn.js";function Na({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 ki={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Wr=i=>{let e={},t=Ca.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:ki,week:ki,month:ki,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Na({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 Da from"bn.js";function Sn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function wi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function hi(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:wi(i,e)}function Gr(i,e){return jt(i,e)?null:hi(i,e)}var Of=Buffer.from("amm_config","utf8"),Ra=Buffer.from("pool","utf8"),La=Buffer.from("pool_vault","utf8"),Oa=Buffer.from("pool_reward_vault","utf8"),Ur=Buffer.from("position","utf8"),Ma=Buffer.from("tick_array","utf8"),Ea=Buffer.from("operation","utf8"),Fa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Xr(i,e,t,n){return he([Ra,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Ti(i,e,t){return he([La,e.toBuffer(),t.toBuffer()],i)}function zr(i,e,t){return he([Oa,e.toBuffer(),t.toBuffer()],i)}function oe(i,e,t){return he([Ma,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([Ea],i)}function Le(i,e){return he([Fa,e.toBuffer()],i)}import _e from"bn.js";var me=new _e(0),Oe=new _e(1),tt=new _e(-1),Me=new _e(1).shln(64),Nn=new _e(1).shln(128),Bi=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 Ff=new _e("18446744073700000000");var _a=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(_a/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(v({},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 de from"bn.js";var xi=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:wi(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:hi(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(v({},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(me)){s.push(p);continue}let b=new de(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(v({},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(v({},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=Ii.decode(m.data),b=p.poolId.toString(),f=e.find(I=>I.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),K=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(I=>X(v({},I),{pendingReward:new de(0)})),leverage:K,tokenFeeAmountA:new de(0),tokenFeeAmountB:new de(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()],K=b[d[P].toString()],h=w.ticks[E.getTickOffsetInArray(g.tickLower,f.tickSpacing)],R=K.ticks[E.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:W}=await en.GetPositionFees(f,g,h,R),B=await en.GetPositionRewards(f,g,h,R);g.tokenFeeAmountA=I.gte(new de(0))?I:new de(0),g.tokenFeeAmountB=W.gte(new de(0))?W:new de(0);for(let O=0;O<B.length;O++)g.rewardInfos[O].pendingReward=B[O].gte(new de(0))?B[O]:new de(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 de(1)):it.sub(new de(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:me),u,c),P=ye(f,m,r,!1),w=H.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),K=l?w:new M(1).div(w),h=f.mul(new de(Math.floor((1-s)*1e10))).div(new de(1e10)),R=ye(h,m,r,!1),I=l?e.currentPrice:new M(1).div(e.currentPrice),W=new M(K).sub(I).abs(),B=I,O=new lt(new M(W).mul(10**15).toFixed(0),new M(B).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:p,amountOut:P,minAmountOut:R,expirationTime:Ze(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:K,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(v({},u),{mint:u.address,isToken2022:u.programId===Jr.toBase58()})),new Re(X(v({},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:K,remainingAccounts:h,executionPriceX64:R}=Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ue(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),I=X(v({},b),{amount:new ce(d,b.amount),fee:b.fee===void 0?void 0:new ce(d,b.fee)}),W=X(v({},f),{amount:new ce(m,f.amount),fee:f.fee===void 0?void 0:new ce(m,f.fee)}),B=X(v({},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 de(10).pow(new de(20+d.decimals)),quoteToken:m,numerator:k.mul(new M(10**(20+m.decimals))).toFixed(0)}),re=new Ce({baseToken:d,denominator:new de(10).pow(new de(20+d.decimals)),quoteToken:m,numerator:P.mul(new M(10**(20+m.decimals))).toFixed(0)}),j=new ce(d,K);return{allTrade:p,realAmountIn:I,amountOut:W,minAmountOut:B,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:K}=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(K.toString()).div(new M(10).pow(b)).mul(m.value)),I=new M(1).div(h.add(R)),B=new M(l.volumeFee).mul(365).div(u).mul(I).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(I).mul(100).toNumber()});return{feeApr:B,rewardsApr:re,apr:B+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 de(new M(b.amount.sub((k=b.fee)!=null?k:me).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?te.getLiquidityFromTokenAmountA(d,m,f,!a):new de(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 de(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(v({},c),{[u.id]:X(v({},n[u.id]),{id:new Ue(u.id),version:6,programId:new Ue(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:X(v({},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(me)||(o=o.add(Oe)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(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 Si(i.mul(e),64,256)}function va(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Si(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(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))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(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))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(me))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=va(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=Si(d.sub(new Y(jr)),64,128).toNumber(),p=Si(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(me))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(me))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,Bi):a.shrn(Zt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Q.mulDivFloor(n,Bi,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,K;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)),(K=e.mintB.extensions)==null?void 0:K.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(me))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(me),g={amountSpecifiedRemaining:m,amountCalculated:me,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,K=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(me)&&!g.sqrtPriceX64.eq(b);){w>10;let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let R=E.nextInitTick(P,g.tick,l,s,K),I=R||null,W=null;if(!(I!=null&&I.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);W=re,P=n[k];try{I=E.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}h.tickNext=I.tick,h.initialized=I.liquidityGross.gtn(0),p!==k&&W&&(g.accounts.push(W),p=k),h.tickNext<Ie?h.tickNext=Ie:h.tickNext>Se&&(h.tickNext=Se),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let B;if(s&&h.sqrtPriceNextX64.lt(b)||!s&&h.sqrtPriceNextX64.gt(b)?B=b:B=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=Tt.swapStepCompute(g.sqrtPriceX64,B,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=I.liquidityNet;s&&(O=O.mul(tt)),g.liquidity=te.addDelta(g.liquidity,O)}K=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);K=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:me,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(me);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 Da(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 Va=_([ge(8),z("bump"),mt("index"),S(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),mt("tickSpacing"),ne(A(),8,"")]),Wa=_([Ee("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ne(G(),1,"")]),Ki=_([ge(8),Fe("initialized"),S("poolId"),ne(Wa,1e3,"observations"),ne(G(),5,"")]),qa=_([z("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),G("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),G("rewardGrowthGlobalX64")]),Mt=_([ge(8),z("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("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(qa,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")]),Ga=_([G("growthInsideLastX64"),A("rewardAmountOwed")]),Ii=_([ge(8),z("bump"),S("nftMint"),S("poolId"),Te("tickLower"),Te("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(Ga,3,"rewardInfos"),ne(A(),8,"")]),Ub=_([ge(8),z("bump"),S("poolId"),Te("tickLowerIndex"),Te("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(G(),3,"rewardGrowthInside"),ne(A(),8,"")]),Ua=_([Te("tick"),Sr("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ne(G(),3,"rewardGrowthsOutsideX64"),ne(Ee(),13,"")]),Jt=_([ge(8),S("poolId"),Te("startTickIndex"),ne(Ua,Ae,"ticks"),z("initializedTickCount"),ne(z(),115,"")]),Xa=_([ge(329),ne(S(),100,"whitelistMints")]),$r=_([ge(8),S("poolId"),ne(ne(A(),8),xi,"positiveTickArrayBitmap"),ne(ne(A(),8),xi,"negativeTickArrayBitmap")]);var Qb=_([ge(8),z("bump"),Fe("disableCreatePool"),mt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),S("protocolOwner"),S("fundOwner"),ne(A(),16)]),eo=_([ge(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("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 to}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $b,TOKEN_2022_PROGRAM_ID as ey,ASSOCIATED_TOKEN_PROGRAM_ID as ty}from"@solana/spl-token";var ry=se("Raydium_cpmm"),no={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 io(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b,f){let y=_([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 to({keys:g,programId:i,data:Buffer.from([...no.swapBaseInput,...k])})}function ro(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b,f){let y=_([A("amountInMax"),A("amountOut")]),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({amountInMax:b,amountOut:f},k),new to({keys:g,programId:i,data:Buffer.from([...no.swapBaseOutput,...k])})}var za=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ay=Buffer.from("amm_config","utf8"),uy=Buffer.from("pool","utf8"),cy=Buffer.from("pool_lp_mint","utf8"),ly=Buffer.from("pool_vault","utf8"),my=Buffer.from("observation","utf8");function oo(i){return he([za],i)}import Qa from"bn.js";var fy=new Qa(1e6);import Ha from"bn.js";var ky=new Ha(0);import{PublicKey as tg}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Be,TOKEN_2022_PROGRAM_ID as ft,ASSOCIATED_TOKEN_PROGRAM_ID as so}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as Xe,SystemProgram as Et,Keypair as Ci}from"@solana/web3.js";import ao from"bn.js";var uo=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=_([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(Ki.span),space:Ki.span,programId:n})],{publicKey:f}=Xr(n,a,m,p),{publicKey:y}=Ti(n,f,m),{publicKey:g}=Ti(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,K,h,R,I,W,B){let O=_([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...B?[{pubkey:B,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:so,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:K,liquidity:h,amountMaxA:R,amountMaxB:I,withMetadata:W==="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 I=Ci.generate();d.push(I),b=I.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:K}=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,K,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:K,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 I=Ci.generate();d.push(I),b=I.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:K}=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,K,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:K,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,K,h,R,I,W,B){let O=_([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...B?[{pubkey:B,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:so,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:K,liquidity:new ao(0),amountMaxA:R==="MintA"?I:W,amountMaxB:R==="MintA"?W:I,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 I=Ci.generate();m.push(I),d=I.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:K}=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,K,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:K,protocolPosition:h},instructions:[R],signers:m,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=_([]),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=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],K=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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:K,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=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],K=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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 ao(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:K,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=_([G("liquidity"),A("amountMinA"),A("amountMinB")]),K=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(W=>[{pubkey:W.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.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},...K],R=Buffer.alloc(w.span);w.encode({liquidity:y,amountMinA:g,amountMinB:k},R);let I=Buffer.from([...ze.decreaseLiquidity,...R]);return new Xe({keys:h,programId:e,data:I})}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=_([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],K=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},K);let h=Buffer.from([...ze.swap,...K]);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=_([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=_([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)&&uo.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=_([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)&&uo.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 Ag from"bn.js";import{AccountLayout as kg,TOKEN_PROGRAM_ID as wg}from"@solana/spl-token";import Fn from"bn.js";var Xg=_([Ee("mintAuthorityOption"),S("mintAuthority"),A("supply"),z("decimals"),z("isInitialized"),Ee("freezeAuthorityOption"),S("freezeAuthority")]);import{TOKEN_PROGRAM_ID as Ya,TOKEN_2022_PROGRAM_ID as ja,ASSOCIATED_TOKEN_PROGRAM_ID as Za}from"@solana/spl-token";import{PublicKey as V,TransactionInstruction as Ja,SystemProgram as $a}from"@solana/web3.js";import xt from"bn.js";function eu(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b){var h;let f=[],y=[x({pubkey:Ya,isWritable:!1}),x({pubkey:ja,isWritable:!1}),x({pubkey:Za,isWritable:!1}),x({pubkey:$a.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 I=g[R],W=P[R]===I.mintA.address;if(y.push(x({pubkey:new V(I.programId),isWritable:!1})),R===g.length-1?y.push(x({pubkey:r})):y.push(x({pubkey:n})),y.push(x({pubkey:new V(P[R])})),y.push(x({pubkey:new V(P[R+1])})),I.version===6){let B=k[R];y.push(x({pubkey:new V(B.config.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(W?B.vault.A:B.vault.B)})),y.push(x({pubkey:new V(W?B.vault.B:B.vault.A)})),y.push(x({pubkey:new V(I.observationId)})),y.push(x({pubkey:zn})),y.push(x({pubkey:Le(new V(I.programId),new V(I.id)).publicKey})),f.push(tu(I.sqrtPriceX64.toString(),W));for(let O of(h=b[R])!=null?h:[])y.push(x({pubkey:new V(O)}))}else if(I.version===5){let B=k[R];y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.authority),isWritable:!1})),y.push(x({pubkey:new V(B.marketProgramId)})),y.push(x({pubkey:new V(B.marketAuthority)})),y.push(x({pubkey:Pr,isWritable:!1})),y.push(x({pubkey:new V(B.openOrders)})),y.push(x({pubkey:new V(B.vault.A)})),y.push(x({pubkey:new V(B.vault.B)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.marketId)})),y.push(x({pubkey:new V(B.marketBids)})),y.push(x({pubkey:new V(B.marketAsks)})),y.push(x({pubkey:new V(B.marketEventQueue)})),y.push(x({pubkey:new V(B.marketBaseVault)})),y.push(x({pubkey:new V(B.marketQuoteVault)}))}else if(I.version===4){let B=k[R],O=I.status!==1;y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.authority),isWritable:!1})),y.push(x({pubkey:new V(O?B.id:B.marketProgramId)})),y.push(x({pubkey:new V(O?B.id:B.marketAuthority)})),y.push(x({pubkey:new V(O?B.id:B.openOrders)})),y.push(x({pubkey:new V(B.vault.A)})),y.push(x({pubkey:new V(B.vault.B)})),y.push(x({pubkey:new V(O?B.id:B.marketId)})),y.push(x({pubkey:new V(O?B.id:B.marketBids)})),y.push(x({pubkey:new V(O?B.id:B.marketAsks)})),y.push(x({pubkey:new V(O?B.id:B.marketEventQueue)})),y.push(x({pubkey:new V(O?B.id:B.marketBaseVault)})),y.push(x({pubkey:new V(O?B.id:B.marketQuoteVault)}))}else if(I.version===7){let B=k[R];y.push(x({pubkey:new V(B.authority)})),y.push(x({pubkey:new V(B.config.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(W?B.vault.A:B.vault.B)})),y.push(x({pubkey:new V(W?B.vault.B:B.vault.A)})),y.push(x({pubkey:new V(I.observationId)}))}else throw Error("pool type error")}let w=_([z("insId"),A("amountIn"),A("amountOut"),ne(G(),f.length,"clmmPriceLimit")]),K=Buffer.alloc(w.span);return w.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},K),new Ja({keys:y,programId:i,data:K})}function tu(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 co({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:[m?io(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,d.vaultA,d.vaultB,d.mintProgramA,d.mintProgramA,new V(d.mintA.address),new V(d.mintB.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):ro(d.programId,e.wallet,d.authority,d.configId,d.id,e.destinationToken,e.sourceToken,d.vaultB,d.vaultA,d.mintProgramB,d.mintProgramA,new V(d.mintB.address),new V(d.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:[eu(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 lo={[oi.toBase58()]:3},mo={3:oi};var Ni=_([ge(5),ge(8),S("ownAddress"),A("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),S("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),ge(7)]),po={3:Ni};import{PublicKey as fo}from"@solana/web3.js";var Mn=se("Serum"),En=class{static getProgramId(e){let t=mo[e];return t||Mn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=lo[t];return n||Mn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=po[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=fo.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:fo.default,nonce:r}}};var ot=new Fn(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 bi({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})]}),yi({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 bi({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:[yi({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?Ri:pe,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=this.scope.account.getAssociatedTokenAccount(p,u.amount.token.isToken2022?Ri:pe);d&&a.addInstruction({endInstructions:[Ot({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:y,programId:pe})],endInstructionTypes:[J.CloseAccount]});let g;if(e.routeType==="route"){let w=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(w.mint,w.isToken2022?Ri:pe)}let k=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=co({routeProgram:o,inputMint:m,swapInfo:X(v({},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:[bo(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]}),w.addInstruction(P);let{transactions:K}=s===0?await w.sizeCheckBuildV0():await w.sizeCheckBuild();K.length<2&&a.addInstruction({instructions:[bo(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=_([S("baseMint"),S("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=_([S("mintA"),S("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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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:pe,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(pe)?(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(pe)?(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 ni({connection:this.scope.connection,mints:Array.from(r).map(f=>new It(f))});a=v(v({},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(v({},f),{[y]:X(v({},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,K,h,R,I,W;let d=l===void 0?new Fn(0):e.raw.mul(new Fn(l.feeBps.toNumber())).div(new Fn(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(v({},t),{address:He(t.address).toString()}),y=[];for(let B of n)try{y.push(X(v({},this.computeAmountOut({itemPool:B,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:b}))}catch(O){this.logDebug("direct error",B.version,B.id.toString(),O.message)}this.logDebug("direct done");for(let[B,O]of Object.entries(r)){let re={chainId:101,address:B,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),yo=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(yo)?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(v({},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:(K=D.amountOut.fee)!=null&&K.raw?new ce(j.data.amountOut.amount.token,((R=(h=j.data.amountOut.fee)==null?void 0:h.raw)!=null?R:ot).add((W=(I=D.amountOut.fee)==null?void 0:I.raw)!=null?W: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(B=>B.allTrade).sort((B,O)=>B.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(v({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(v({},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(v({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(v({},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=Ni.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(v({},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=v({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:oo(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:kt({address:u.mintLp.toBase58(),programId:pe.toBase58(),decimals:u.lpDecimals}),config:X(v({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 go=Object.defineProperty,Ao=Object.defineProperties;var Po=Object.getOwnPropertyDescriptors;var rn=Object.getOwnPropertySymbols;var vi=Object.prototype.hasOwnProperty,Di=Object.prototype.propertyIsEnumerable;var _i=(i,e,t)=>e in i?go(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(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)=>Ao(i,Po(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 bo}from"@solana/spl-token";import{get as Vi,set as ko}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={},wo={};function se(i){let e=Vi(Wi,i);if(!e){let t=Vi(wo,i);e=new vn({name:i,logLevel:t}),ko(Wi,i,e)}return e}import{PublicKey as Ls}from"@solana/web3.js";import Os from"bn.js";import Cs 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,ho=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,To=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Bo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Yi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,De=1e7,q=7,xo=9007199254740991,Io=sn.length-1,Wn=an.length-1,T={toStringTag:Hi};T.absoluteValue=T.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),F(i)};T.ceil=function(){return F(new this.constructor(this),this.e+1,2)};T.clampedTo=T.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(ut+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};T.comparedTo=T.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};T.cosine=T.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+q,n.rounding=1,t=So(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)};T.cubeRoot=T.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)};T.decimalPlaces=T.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-xe(this.e/q))*q,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(i){return ae(this,new this.constructor(i))};T.dividedToIntegerBy=T.divToInt=function(i){var e=this,t=e.constructor;return F(ae(e,new t(i),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(i){return this.cmp(i)===0};T.floor=function(){return F(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(i){return this.cmp(i)>0};T.greaterThanOrEqualTo=T.gte=function(i){var e=this.cmp(i);return e==1||e===0};T.hyperbolicCosine=T.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/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)};T.hyperbolicSine=T.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=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)};T.hyperbolicTangent=T.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};T.inverseCosine=T.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?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))};T.inverseHyperbolicCosine=T.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=i,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?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)};T.inverseSine=T.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=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)))};T.inverseTangent=T.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/q+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/q),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)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&xe(this.e/q)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(i){return this.cmp(i)<0};T.lessThanOrEqualTo=T.lte=function(i){return this.cmp(i)<1};T.logarithm=T.log=function(i){var e,t,n,r,o,s,a,c,u=this,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)};T.minus=T.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/q),l=xe(p.e/q),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/q),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)};T.modulo=T.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?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))};T.naturalExponential=T.exp=function(){return qn(this)};T.naturalLogarithm=T.ln=function(){return at(this)};T.negated=T.neg=function(){var i=new this.constructor(this);return i.s=-i.s,F(i)};T.plus=T.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/q),n=xe(i.e/q),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/q),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};T.precision=T.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};T.round=function(){var i=this,e=i.constructor;return F(new e(i),i.e+1,e.rounding)};T.sine=T.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+q,n.rounding=1,t=Co(n,er(n,t)),n.precision=i,n.rounding=e,F($e>2?t.neg():t,i,e,!0)):new n(NaN)};T.squareRoot=T.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,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)};T.tangent=T.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=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)};T.times=T.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/q)+xe(i.e/q),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};T.toBinary=function(i,e){return Un(this,2,i,e)};T.toDecimalPlaces=T.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ke(i,0,ct),e===void 0?e=n.rounding:Ke(e,0,8),F(t,i+t.e+1,e))};T.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};T.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};T.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%q,e.d[0]=be(10,s<0?q+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*q*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};T.toHexadecimal=T.toHex=function(i,e){return Un(this,16,i,e)};T.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding: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};T.toNumber=function(){return+this};T.toOctal=function(i,e){return Un(this,8,i,e)};T.toPower=T.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(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/q),e>=i.d.length-1&&(t=u<0?-u:u)<=xo)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))};T.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};T.toSignificantDigits=T.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)};T.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};T.truncated=T.trunc=function(){return F(new this.constructor(this),this.e+1,1)};T.valueOf=T.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=q-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=q-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+=q,r=0):(r=Math.ceil((e+1)/q),e%=q),o=be(10,q-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 So(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,S,h,R,I,W,B,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=q,l=xe(n.e/p)-xe(r.e/p)),O=D.length,W=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<W||m)&&h--;d++)R=m*c+(Z[d]||0),k[d]=R/D|0,m=R%D|0;b=m||d<W}else{for(m=c/(D[0]+1)|0,m>1&&(D=i(D,m,c),Z=i(Z,m,c),O=D.length,W=Z.length),I=O,P=Z.slice(0,O),w=P.length;w<O;)P[w++]=0;re=D.slice(),re.unshift(0),B=D[0],D[1]>=c/2&&++B;do m=0,u=e(D,P,O,w),u<0?(S=P[0],O!=w&&(S=S*c+(P[1]||0)),m=S/B|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[I]||0:(P=[Z[I]],w=1);while((I++<W||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+=q,s=e,l=d[m=0],c=l/be(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/q),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=q,s=o-q+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=q,s=o-q+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,(q-e%q)%q),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,q-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*=q;t>=10;t/=10)e++;return e}function un(i,e,t){if(e>Io)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*q+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/q+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)%q,t<0&&(n+=q),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=q;n<r;)i.d.push(+e.slice(n,n+=q));e=e.slice(n),n=q-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 Ko(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(To.test(e))t=16,e=e.toLowerCase();else if(ho.test(e))t=2;else if(Bo.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 Co(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/q);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 No(i){return new this(i).abs()}function Ro(i){return new this(i).acos()}function Lo(i){return new this(i).acosh()}function Oo(i,e){return new this(i).plus(e)}function Mo(i){return new this(i).asin()}function Eo(i){return new this(i).asinh()}function Fo(i){return new this(i).atan()}function _o(i){return new this(i).atanh()}function vo(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 Do(i){return new this(i).cbrt()}function Vo(i){return F(i=new this(i),i.e+1,2)}function Wo(i,e,t){return new this(i).clamp(e,t)}function qo(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 Go(i){return new this(i).cos()}function Uo(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):Ko(u,o)}if(r.prototype=T,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=qo,r.clone=tr,r.isDecimal=Ui,r.abs=No,r.acos=Ro,r.acosh=Lo,r.add=Oo,r.asin=Mo,r.asinh=Eo,r.atan=Fo,r.atanh=_o,r.atan2=vo,r.cbrt=Do,r.ceil=Vo,r.clamp=Wo,r.cos=Go,r.cosh=Uo,r.div=Xo,r.exp=zo,r.floor=Qo,r.hypot=Ho,r.ln=Yo,r.log=jo,r.log10=Jo,r.log2=Zo,r.max=$o,r.min=es,r.mod=ts,r.mul=ns,r.pow=is,r.random=rs,r.round=os,r.sign=ss,r.sin=as,r.sinh=us,r.sqrt=cs,r.sub=ls,r.sum=ms,r.tan=ds,r.tanh=ps,r.trunc=fs,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 Xo(i,e){return new this(i).div(e)}function zo(i){return new this(i).exp()}function Qo(i){return F(i=new this(i),i.e+1,3)}function Ho(){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 Yo(i){return new this(i).ln()}function jo(i,e){return new this(i).log(e)}function Zo(i){return new this(i).log(2)}function Jo(i){return new this(i).log(10)}function $o(){return Ji(this,arguments,"lt")}function es(){return Ji(this,arguments,"gt")}function ts(i,e){return new this(i).mod(e)}function ns(i,e){return new this(i).mul(e)}function is(i,e){return new this(i).pow(e)}function rs(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/q),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%=q,n&&i&&(r=be(10,q-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-=q)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<q&&(t-=q-n)}return s.e=t,s.d=a,s}function os(i){return F(i=new this(i),i.e+1,this.rounding)}function ss(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function as(i){return new this(i).sin()}function us(i){return new this(i).sinh()}function cs(i){return new this(i).sqrt()}function ls(i,e){return new this(i).sub(e)}function ms(){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 ds(i){return new this(i).tan()}function ps(i){return new this(i).tanh()}function fs(i){return F(i=new this(i),i.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var _t=T.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 bs}from"@solana/spl-token";import{PublicKey as le,SystemProgram as nr,SYSVAR_RENT_PUBKEY as ys}from"@solana/web3.js";function x({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var cu=[x({pubkey:bs,isWritable:!1}),x({pubkey:nr.programId,isWritable:!1}),x({pubkey:ys,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"),lu=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),mu=new le("Sysvar1nstructions1111111111111111111111111"),gs=nr.programId,du=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),pu=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),fu=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),bu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),yu=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),gu=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Au=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Pu=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ku=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),wu=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),hu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ve=new le("So11111111111111111111111111111111111111112"),vt=le.default;function He(i){return Xn({publicKey:i,transformSol:!0})}import{PublicKey as As}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Hn={chainId:101,address:As.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(v({},Ye),{mint:Ye.address}));import fn from"big.js";import ws from"bn.js";import hs from"decimal.js-light";import Ps from"toformat";var ks=Ps,Dt=ks;var pn=se("module/fraction"),Zn=Dt(fn),Vt=Dt(hs),Ts={[0]:Vt.ROUND_DOWN,[1]:Vt.ROUND_HALF_UP,[2]:Vt.ROUND_UP},Bs={[0]:fn.roundDown,[1]:fn.roundHalfUp,[2]:fn.roundUp},ie=class{constructor(e,t=new ws(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:Ts[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=Bs[n]||1,new Zn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Is=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&&Is.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 Ss from"bn.js";var rr=new ie(new Ss(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),Ks=new Ne(1),Ac=new Ne(2),Pc=new Ne(3),kc=new Ne(5),ei=new Ne(10),wc=new Ne(100),hc=new Ne(1e3),Tc=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 Ns=se("Raydium_amount"),ur=Dt(Cs);function Rs(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")):Ns.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]=Rs(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,Ls,ie,Os,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 Gs 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 Ms,ComputeBudgetProgram as cr,Transaction as mr,TransactionMessage as Es,Keypair as dr,VersionedTransaction as pr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fs}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 _s(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]=Ms.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Wt({instructions:i,payer:e,signers:t}){return _s(i,[e,...t])}function qt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=dr.generate().publicKey.toString()}){let o=new Es({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 vs=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=Fs.toBase58()),t.feePayer||(t.feePayer=dr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof pr&&(n=vs(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 Ds,TOKEN_PROGRAM_ID as Vs,getTransferFeeConfig as Ws,unpackMint as qs}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}=v({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(v({},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<Ds){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=qs(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=X(v({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Vs,feeConfig:(a=Ws(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 Gs.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(v({},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=[],S=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 I=w.findIndex(W=>W.txId===h);I>-1&&(w[I].status=R.err?"error":"success"),m==null||m([...w]),R.err||S()},"processed"),this.connection.getSignatureStatus(h)};return await S(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let S=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:b});P.push(S)}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=v(v({},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:S}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:S,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,S=>{let h=k.findIndex(R=>R.txId===w);h>-1&&(k[h].status=S.err?"error":"success"),m==null||m([...k]),S.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(v({},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(S=>S.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=[],S=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 I=w.findIndex(W=>W.txId===h);I>-1&&(w[I].status=R.err?"error":"success"),p==null||p([...w]),R.err||S()},"processed"),this.connection.getSignatureStatus(h)};return await S(),{txIds:w.map(h=>h.txId),signedTxs:k}}else{let P=[];for(let w=0;w<k.length;w+=1){let S=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:f});P.push(S)}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=v(v({},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(v({},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 S={};for(let h of[...new Set(a)])s[h]!==void 0&&(S[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(S=>S.isSigner).map(S=>S.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:S,skipPreflight:h=!0}=k||{};if(p.map(async(I,W)=>{b[W].length&&I.sign(b[W]),S&&(I.message.recentBlockhash=S)}),At(p),(R=this.owner)!=null&&R.isKeyPair){if(P){let I=[];for(let W of p){let B=await this.connection.sendTransaction(W,{skipPreflight:h}),{lastValidBlockHeight:O,blockhash:re}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:re,lastValidBlockHeight:O,signature:B},"confirmed"),I.push(B)}return{txIds:I,signedTxs:p}}return{txIds:await Promise.all(p.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:h}))),signedTxs:p}}if(this.signAllTransactions){let I=await this.signAllTransactions(p);if(P){let W=0,B=[],O=async()=>{if(!I[W])return;let re=await this.connection.sendTransaction(I[W],{skipPreflight:h});B.push({txId:re,status:"sent",signedTx:I[W]}),w==null||w([...B]),W++,this.connection.onSignature(re,j=>{let fe=B.findIndex(Z=>Z.txId===re);fe>-1&&(B[fe].status=j.err?"error":"success"),w==null||w([...B]),j.err||O()},"processed"),this.connection.getSignatureStatus(re)};return O(),{txIds:[],signedTxs:I}}else{let W=[];for(let B=0;B<I.length;B+=1){let O=await this.connection.sendTransaction(I[B],{skipPreflight:h});W.push(O)}return{txIds:W,signedTxs:I}}}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 Ol=new ee("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ml=new ee("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),El=new ee("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Fl=new ee("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),_l=new ee("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),si=new ee("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ar=new ee("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),vl=new ee("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Pr=new ee("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kr=new ee("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Dl=new ee("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Vl=new ee("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Wl=new ee("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ql=new ee("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Gl=new ee("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ul=new ee("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wr=new ee("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Xl=new ee("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),zl=new ee("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Us=new ee("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Xs=new ee("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),zs=new ee("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Ql={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:Us,CREATE_CPMM_POOL_AUTH:Xs,CREATE_CPMM_POOL_FEE_ACC:zs,FEE_DESTINATION_ID:new ee("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Qs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hs}from"@solana/spl-token";function je(i,e,t){return he([i.toBuffer(),(t!=null?t:Hs).toBuffer(),e.toBuffer()],new Qs("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(v({},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 fa,createCloseAccountInstruction as ba,createTransferInstruction as ya,TOKEN_PROGRAM_ID as Lt}from"@solana/spl-token";import{PublicKey as ga,SystemProgram as Aa}from"@solana/web3.js";import Pa from"bn.js";import{PublicKey as la,Keypair as ma}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as da}from"@solana/spl-token";import vd from"bn.js";import{PublicKey as ia}from"@solana/web3.js";import xr,{isBN as Ir}from"bn.js";import{bits as Tm,BitStructure as Bm,blob as Ys,Blob as xm,cstr as Im,f32 as Sm,f32be as Km,f64 as Cm,f64be as Nm,greedy as Rm,Layout as js,ns64 as Lm,ns64be as Om,nu64 as Mm,nu64be as Em,offset as Fm,s16 as _m,s16be as vm,s24 as Dm,s24be as Vm,s32 as Zs,s32be as Wm,s40 as qm,s40be as Gm,s48 as Um,s48be as Xm,s8 as zm,seq as Js,struct as Qm,Structure as $s,u16 as ea,u16be as Hm,u24 as Ym,u24be as jm,u32 as Zm,u32be as Jm,u40 as $m,u40be as ed,u48 as td,u48be as nd,u8 as ta,UInt as na,union as id,Union as rd,unionLayoutDiscriminator as od,utf8 as sd}from"@solana/buffer-layout";var ci=js,hr=$s;var li=na;var Tr=ta,mt=ea;var Te=Zs;var Br=Js;var ge=Ys;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 ia(e),e=>e.toBuffer(),i)}function Fe(i){return new wn(Tr(),ra,oa,i)}function ra(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function oa(i){return i?1:0}var mi=class extends hr{decode(e,t){return super.decode(e,t)}};function _(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=_([K("mint"),K("owner"),A("amount"),Ee("delegateOption"),K("delegate"),z("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),K("closeAuthority")]);function sa(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function di(i,...e){if(!sa(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 Td=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function aa(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=aa(i)),di(i),i}var Tn=class{clone(){return this._cloneInto()}},Bd={}.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 ua(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;ua(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 ca=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)+ca[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 qd=se("Raydium_Util");function In({fromPublicKey:i,programId:e=da}){let t=ma.generate().publicKey.toBase58().slice(0,32);return{publicKey:pa(i,t,e),seed:t}}function pa(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Lr(n);return new la(r)}function ka(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Lt}=i;return fa(t,e,n,r)}function Ot(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Lt}=i;return ba(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 Pa(a)),u=In({fromPublicKey:r,programId:Lt});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Aa.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:hn.span,programId:Lt}),ka({mint:new ga(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 ya(i,e,t,BigInt(String(n)),r,o)}import Or from"bn.js";var op=new Or(25),sp=new Or(1e4);var Ai=_([z("instruction"),A("amountIn"),A("minAmountOut")]),Pi=_([z("instruction"),A("maxAmountIn"),A("amountOut")]),pp=_([z("instruction"),z("nonce")]),wa=_([z("instruction"),z("nonce"),A("startTime")]),Mr=_([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")]),fp=_([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")]),ha=_([z("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),Ta=_([z("instruction"),A("amountIn")]);var bp=_([A("fee")]);import{PublicKey as mf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ca}from"@solana/spl-token";import{PublicKey as Pp}from"@solana/web3.js";import{MintLayout as wp,TOKEN_PROGRAM_ID as Tp}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 v({chainId:101,address:He(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as Rp}from"@solana/web3.js";var Mp=se("Raydium_liquidity_serum");import{PublicKey as Ba}from"@solana/web3.js";var ki=new Ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xa=5e4,Ia=_([A("x"),A("y"),A("price")]),Dp=_([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),ne(Ia,xa,"DataElement")]);import{TOKEN_PROGRAM_ID as _r,ASSOCIATED_TOKEN_PROGRAM_ID as qp}from"@solana/spl-token";import{PublicKey as Up,TransactionInstruction as vr,SystemProgram as Xp,SYSVAR_RENT_PUBKEY as zp}from"@solana/web3.js";var Fr=se("Raydium_liquidity_instruction");function Sa({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 Ka({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 Sa(X(v({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Ka(X(v({},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 Pf from"bn.js";function Na({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=Ca.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:Na({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 Da 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 Of=Buffer.from("amm_config","utf8"),Ra=Buffer.from("pool","utf8"),La=Buffer.from("pool_vault","utf8"),Oa=Buffer.from("pool_reward_vault","utf8"),Ur=Buffer.from("position","utf8"),Ma=Buffer.from("tick_array","utf8"),Ea=Buffer.from("operation","utf8"),Fa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Xr(i,e,t,n){return he([Ra,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Bi(i,e,t){return he([La,e.toBuffer(),t.toBuffer()],i)}function zr(i,e,t){return he([Oa,e.toBuffer(),t.toBuffer()],i)}function oe(i,e,t){return he([Ma,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([Ea],i)}function Le(i,e){return he([Fa,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 Ff=new _e("18446744073700000000");var _a=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(_a/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(v({},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(v({},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(v({},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(v({},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(I=>I.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),S=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(I=>X(v({},I),{pendingReward:new pe(0)})),leverage:S,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()],S=b[d[P].toString()],h=w.ticks[E.getTickOffsetInArray(g.tickLower,f.tickSpacing)],R=S.ticks[E.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:W}=await en.GetPositionFees(f,g,h,R),B=await en.GetPositionRewards(f,g,h,R);g.tokenFeeAmountA=I.gte(new pe(0))?I:new pe(0),g.tokenFeeAmountB=W.gte(new pe(0))?W:new pe(0);for(let O=0;O<B.length;O++)g.rewardInfos[O].pendingReward=B[O].gte(new pe(0))?B[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),S=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),I=l?e.currentPrice:new M(1).div(e.currentPrice),W=new M(S).sub(I).abs(),B=I,O=new lt(new M(W).mul(10**15).toFixed(0),new M(B).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:p,amountOut:P,minAmountOut:R,expirationTime:Ze(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:S,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(v({},u),{mint:u.address,isToken2022:u.programId===Jr.toBase58()})),new Re(X(v({},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:S,remainingAccounts:h,executionPriceX64:R}=Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ue(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),I=X(v({},b),{amount:new ce(d,b.amount),fee:b.fee===void 0?void 0:new ce(d,b.fee)}),W=X(v({},f),{amount:new ce(m,f.amount),fee:f.fee===void 0?void 0:new ce(m,f.fee)}),B=X(v({},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,S);return{allTrade:p,realAmountIn:I,amountOut:W,minAmountOut:B,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:S}=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(S.toString()).div(new M(10).pow(b)).mul(m.value)),I=new M(1).div(h.add(R)),B=new M(l.volumeFee).mul(365).div(u).mul(I).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(I).mul(100).toNumber()});return{feeApr:B,rewardsApr:re,apr:B+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(v({},c),{[u.id]:X(v({},n[u.id]),{id:new Ue(u.id),version:6,programId:new Ue(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:X(v({},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 va(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=va(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,S;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)),(S=e.mintB.extensions)==null?void 0:S.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,S=!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,S),I=R||null,W=null;if(!(I!=null&&I.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);W=re,P=n[k];try{I=E.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}h.tickNext=I.tick,h.initialized=I.liquidityGross.gtn(0),p!==k&&W&&(g.accounts.push(W),p=k),h.tickNext<Ie?h.tickNext=Ie:h.tickNext>Se&&(h.tickNext=Se),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let B;if(s&&h.sqrtPriceNextX64.lt(b)||!s&&h.sqrtPriceNextX64.gt(b)?B=b:B=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=Tt.swapStepCompute(g.sqrtPriceX64,B,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=I.liquidityNet;s&&(O=O.mul(tt)),g.liquidity=te.addDelta(g.liquidity,O)}S=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);S=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 Da(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 Va=_([ge(8),z("bump"),mt("index"),K(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),mt("tickSpacing"),ne(A(),8,"")]),Wa=_([Ee("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ne(G(),1,"")]),Ci=_([ge(8),Fe("initialized"),K("poolId"),ne(Wa,1e3,"observations"),ne(G(),5,"")]),qa=_([z("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),G("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),G("rewardGrowthGlobalX64")]),Mt=_([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(qa,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")]),Ga=_([G("growthInsideLastX64"),A("rewardAmountOwed")]),Si=_([ge(8),z("bump"),K("nftMint"),K("poolId"),Te("tickLower"),Te("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),ne(Ga,3,"rewardInfos"),ne(A(),8,"")]),Ub=_([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,"")]),Ua=_([Te("tick"),Sr("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ne(G(),3,"rewardGrowthsOutsideX64"),ne(Ee(),13,"")]),Jt=_([ge(8),K("poolId"),Te("startTickIndex"),ne(Ua,Ae,"ticks"),z("initializedTickCount"),ne(z(),115,"")]),Xa=_([ge(329),ne(K(),100,"whitelistMints")]),$r=_([ge(8),K("poolId"),ne(ne(A(),8),Ii,"positiveTickArrayBitmap"),ne(ne(A(),8),Ii,"negativeTickArrayBitmap")]);var Qb=_([ge(8),z("bump"),Fe("disableCreatePool"),mt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),K("protocolOwner"),K("fundOwner"),ne(A(),16)]),eo=_([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 to}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $b,TOKEN_2022_PROGRAM_ID as ey,ASSOCIATED_TOKEN_PROGRAM_ID as ty}from"@solana/spl-token";var ry=se("Raydium_cpmm"),no={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 io(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b,f){let y=_([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 to({keys:g,programId:i,data:Buffer.from([...no.swapBaseInput,...k])})}function ro(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b,f){let y=_([A("amountInMax"),A("amountOut")]),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({amountInMax:b,amountOut:f},k),new to({keys:g,programId:i,data:Buffer.from([...no.swapBaseOutput,...k])})}var za=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ay=Buffer.from("amm_config","utf8"),uy=Buffer.from("pool","utf8"),cy=Buffer.from("pool_lp_mint","utf8"),ly=Buffer.from("pool_vault","utf8"),my=Buffer.from("observation","utf8");function oo(i){return he([za],i)}import Qa from"bn.js";var fy=new Qa(1e6);import Ha from"bn.js";var ky=new Ha(0);import{PublicKey as tg}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Be,TOKEN_2022_PROGRAM_ID as ft,ASSOCIATED_TOKEN_PROGRAM_ID as so}from"@solana/spl-token";import{PublicKey as L,TransactionInstruction as Xe,SystemProgram as Et,Keypair as Ni}from"@solana/web3.js";import ao from"bn.js";var uo=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=_([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,S,h,R,I,W,B){let O=_([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...B?[{pubkey:B,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:so,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:S,liquidity:h,amountMaxA:R,amountMaxB:I,withMetadata:W==="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 I=Ni.generate();d.push(I),b=I.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:S}=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,S,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:S,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 I=Ni.generate();d.push(I),b=I.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:S}=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,S,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:S,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,S,h,R,I,W,B){let O=_([Te("tickLowerIndex"),Te("tickUpperIndex"),Te("tickArrayLowerStartIndex"),Te("tickArrayUpperStartIndex"),G("liquidity"),A("amountMaxA"),A("amountMaxB"),Fe("withMetadata"),z("optionBaseFlag"),Fe("baseFlag")]),re=[...B?[{pubkey:B,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:so,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:S,liquidity:new ao(0),amountMaxA:R==="MintA"?I:W,amountMaxB:R==="MintA"?W:I,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 I=Ni.generate();m.push(I),d=I.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:S}=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,S,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:S,protocolPosition:h},instructions:[R],signers:m,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=_([]),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=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],S=[{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:S,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=_([G("liquidity"),A("amountMaxA"),A("amountMaxB"),z("optionBaseFlag"),Fe("baseFlag")]),w=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],S=[{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 ao(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:S,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=_([G("liquidity"),A("amountMinA"),A("amountMinB")]),S=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(W=>[{pubkey:W.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.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},...S],R=Buffer.alloc(w.span);w.encode({liquidity:y,amountMinA:g,amountMinB:k},R);let I=Buffer.from([...ze.decreaseLiquidity,...R]);return new Xe({keys:h,programId:e,data:I})}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=_([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],S=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},S);let h=Buffer.from([...ze.swap,...S]);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=_([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=_([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)&&uo.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=_([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)&&uo.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 Ag from"bn.js";import{AccountLayout as kg,TOKEN_PROGRAM_ID as wg}from"@solana/spl-token";import _n from"bn.js";var Xg=_([Ee("mintAuthorityOption"),K("mintAuthority"),A("supply"),z("decimals"),z("isInitialized"),Ee("freezeAuthorityOption"),K("freezeAuthority")]);import{TOKEN_PROGRAM_ID as Ya,TOKEN_2022_PROGRAM_ID as ja,ASSOCIATED_TOKEN_PROGRAM_ID as Za}from"@solana/spl-token";import{PublicKey as V,TransactionInstruction as Ja,SystemProgram as $a}from"@solana/web3.js";import xt from"bn.js";function eu(i,e,t,n,r,o,s,a,c,u,l,d,m,p,b){var h;let f=[],y=[x({pubkey:Ya,isWritable:!1}),x({pubkey:ja,isWritable:!1}),x({pubkey:Za,isWritable:!1}),x({pubkey:$a.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 I=g[R],W=P[R]===I.mintA.address;if(y.push(x({pubkey:new V(I.programId),isWritable:!1})),R===g.length-1?y.push(x({pubkey:r})):y.push(x({pubkey:n})),y.push(x({pubkey:new V(P[R])})),y.push(x({pubkey:new V(P[R+1])})),I.version===6){let B=k[R];y.push(x({pubkey:new V(B.config.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(W?B.vault.A:B.vault.B)})),y.push(x({pubkey:new V(W?B.vault.B:B.vault.A)})),y.push(x({pubkey:new V(I.observationId)})),y.push(x({pubkey:Qn})),y.push(x({pubkey:Le(new V(I.programId),new V(I.id)).publicKey})),f.push(tu(I.sqrtPriceX64.toString(),W));for(let O of(h=b[R])!=null?h:[])y.push(x({pubkey:new V(O)}))}else if(I.version===5){let B=k[R];y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.authority),isWritable:!1})),y.push(x({pubkey:new V(B.marketProgramId)})),y.push(x({pubkey:new V(B.marketAuthority)})),y.push(x({pubkey:Pr,isWritable:!1})),y.push(x({pubkey:new V(B.openOrders)})),y.push(x({pubkey:new V(B.vault.A)})),y.push(x({pubkey:new V(B.vault.B)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.marketId)})),y.push(x({pubkey:new V(B.marketBids)})),y.push(x({pubkey:new V(B.marketAsks)})),y.push(x({pubkey:new V(B.marketEventQueue)})),y.push(x({pubkey:new V(B.marketBaseVault)})),y.push(x({pubkey:new V(B.marketQuoteVault)}))}else if(I.version===4){let B=k[R],O=I.status!==1;y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(B.authority),isWritable:!1})),y.push(x({pubkey:new V(O?B.id:B.marketProgramId)})),y.push(x({pubkey:new V(O?B.id:B.marketAuthority)})),y.push(x({pubkey:new V(O?B.id:B.openOrders)})),y.push(x({pubkey:new V(B.vault.A)})),y.push(x({pubkey:new V(B.vault.B)})),y.push(x({pubkey:new V(O?B.id:B.marketId)})),y.push(x({pubkey:new V(O?B.id:B.marketBids)})),y.push(x({pubkey:new V(O?B.id:B.marketAsks)})),y.push(x({pubkey:new V(O?B.id:B.marketEventQueue)})),y.push(x({pubkey:new V(O?B.id:B.marketBaseVault)})),y.push(x({pubkey:new V(O?B.id:B.marketQuoteVault)}))}else if(I.version===7){let B=k[R];y.push(x({pubkey:new V(B.authority)})),y.push(x({pubkey:new V(B.config.id)})),y.push(x({pubkey:new V(B.id)})),y.push(x({pubkey:new V(W?B.vault.A:B.vault.B)})),y.push(x({pubkey:new V(W?B.vault.B:B.vault.A)})),y.push(x({pubkey:new V(I.observationId)}))}else throw Error("pool type error")}let w=_([z("insId"),A("amountIn"),A("amountOut"),ne(G(),f.length,"clmmPriceLimit")]),S=Buffer.alloc(w.span);return w.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},S),new Ja({keys:y,programId:i,data:S})}function tu(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 co({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:[m?io(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,d.vaultA,d.vaultB,d.mintProgramA,d.mintProgramA,new V(d.mintA.address),new V(d.mintB.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):ro(d.programId,e.wallet,d.authority,d.configId,d.id,e.destinationToken,e.sourceToken,d.vaultB,d.vaultA,d.mintProgramB,d.mintProgramA,new V(d.mintB.address),new V(d.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:[eu(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 lo={[si.toBase58()]:3},mo={3:si};var Ri=_([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)]),po={3:Ri};import{PublicKey as fo}from"@solana/web3.js";var Mn=se("Serum"),En=class{static getProgramId(e){let t=mo[e];return t||Mn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=lo[t];return n||Mn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=po[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=fo.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:fo.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 w=e.poolInfoList[0].mintA.address===m.toBase58(),{account:S,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Fn:me,mint:p,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:d||w?{payer:this.scope.ownerPubKey,amount:w?0:c.amount.raw}:void 0,associatedOnly:d?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});y=S,h&&a.addInstruction(h)}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=co({routeProgram:o,inputMint:m,swapInfo:X(v({},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:[bo(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[J.TransferAmount]}),w.addInstruction(P);let{transactions:S}=s===0?await w.sizeCheckBuildV0():await w.sizeCheckBuild();S.length<2&&a.addInstruction({instructions:[bo(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=_([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=_([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=v(v({},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(v({},f),{[y]:X(v({},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,S,h,R,I,W;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(v({},t),{address:He(t.address).toString()}),y=[];for(let B of n)try{y.push(X(v({},this.computeAmountOut({itemPool:B,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:b}))}catch(O){this.logDebug("direct error",B.version,B.id.toString(),O.message)}this.logDebug("direct done");for(let[B,O]of Object.entries(r)){let re={chainId:101,address:B,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),yo=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(yo)?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(v({},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:(S=D.amountOut.fee)!=null&&S.raw?new ce(j.data.amountOut.amount.token,((R=(h=j.data.amountOut.fee)==null?void 0:h.raw)!=null?R:ot).add((W=(I=D.amountOut.fee)==null?void 0:I.raw)!=null?W: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(B=>B.allTrade).sort((B,O)=>B.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(v({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(v({},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(v({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Yt(X(v({},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(v({},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=v({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:oo(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(v({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