@raydium-io/raydium-sdk-v2 0.1.15-alpha → 0.1.16-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 (100) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +6 -6
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/layout.d.ts +1 -1
  41. package/lib/raydium/cpmm/type.d.ts +1 -1
  42. package/lib/raydium/farm/config.d.ts +1 -1
  43. package/lib/raydium/farm/farm.d.ts +3 -3
  44. package/lib/raydium/farm/index.d.ts +1 -1
  45. package/lib/raydium/farm/instruction.d.ts +1 -1
  46. package/lib/raydium/farm/layout.d.ts +1 -1
  47. package/lib/raydium/farm/type.d.ts +1 -1
  48. package/lib/raydium/farm/util.d.ts +1 -1
  49. package/lib/raydium/ido/ido.d.ts +3 -3
  50. package/lib/raydium/ido/index.d.ts +3 -3
  51. package/lib/raydium/ido/instruction.d.ts +1 -1
  52. package/lib/raydium/ido/type.d.ts +1 -1
  53. package/lib/raydium/index.d.ts +3 -3
  54. package/lib/raydium/index.js +1 -1
  55. package/lib/raydium/index.js.map +1 -1
  56. package/lib/raydium/index.mjs +1 -1
  57. package/lib/raydium/index.mjs.map +1 -1
  58. package/lib/raydium/liquidity/index.d.ts +1 -1
  59. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  60. package/lib/raydium/liquidity/layout.d.ts +6 -6
  61. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  62. package/lib/raydium/liquidity/type.d.ts +1 -1
  63. package/lib/raydium/liquidity/utils.d.ts +1 -1
  64. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  65. package/lib/raydium/marketV2/index.d.ts +3 -3
  66. package/lib/raydium/moduleBase.d.ts +3 -3
  67. package/lib/raydium/raydium.d.ts +3 -3
  68. package/lib/raydium/raydium.js +1 -1
  69. package/lib/raydium/raydium.js.map +1 -1
  70. package/lib/raydium/raydium.mjs +1 -1
  71. package/lib/raydium/raydium.mjs.map +1 -1
  72. package/lib/raydium/token/constant.d.ts +1 -1
  73. package/lib/raydium/token/index.d.ts +1 -1
  74. package/lib/raydium/token/token.d.ts +3 -3
  75. package/lib/raydium/token/type.d.ts +1 -1
  76. package/lib/raydium/token/utils.d.ts +1 -1
  77. package/lib/raydium/tradeV2/index.d.ts +2 -2
  78. package/lib/raydium/tradeV2/index.js +1 -1
  79. package/lib/raydium/tradeV2/index.js.map +1 -1
  80. package/lib/raydium/tradeV2/index.mjs +1 -1
  81. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  82. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  83. package/lib/raydium/tradeV2/instrument.js +1 -1
  84. package/lib/raydium/tradeV2/instrument.js.map +1 -1
  85. package/lib/raydium/tradeV2/instrument.mjs +1 -1
  86. package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
  87. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  88. package/lib/raydium/tradeV2/trade.js +1 -1
  89. package/lib/raydium/tradeV2/trade.js.map +1 -1
  90. package/lib/raydium/tradeV2/trade.mjs +1 -1
  91. package/lib/raydium/tradeV2/trade.mjs.map +1 -1
  92. package/lib/raydium/tradeV2/type.d.ts +2 -2
  93. package/lib/raydium/type.d.ts +1 -1
  94. package/lib/raydium/utils1216/index.d.ts +3 -3
  95. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  96. package/lib/{raydium-16aedf49.d.ts → raydium-959c1e92.d.ts} +3 -3
  97. package/lib/{type-e5e9d9c5.d.ts → type-5ab8207d.d.ts} +1 -1
  98. package/lib/{type-8af08a0b.d.ts → type-9a74e7ee.d.ts} +8 -8
  99. package/package.json +1 -1
  100. package/src/raydium/tradeV2/instrument.ts +34 -33
@@ -1,3 +1,3 @@
1
- var ao=Object.defineProperty,uo=Object.defineProperties;var co=Object.getOwnPropertyDescriptors;var nn=Object.getOwnPropertySymbols;var Ei=Object.prototype.hasOwnProperty,Fi=Object.prototype.propertyIsEnumerable;var Mi=(i,e,t)=>e in i?ao(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))Ei.call(e,t)&&Mi(i,t,e[t]);if(nn)for(var t of nn(e))Fi.call(e,t)&&Mi(i,t,e[t]);return i},Q=(i,e)=>uo(i,co(e));var ft=(i,e)=>{var t={};for(var n in i)Ei.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&nn)for(var n of nn(i))e.indexOf(n)<0&&Fi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as wt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oe,TOKEN_2022_PROGRAM_ID as Ki,createTransferInstruction as Da}from"@solana/spl-token";import{get as vi,set as lo}from"lodash";import _i from"dayjs";import mo from"dayjs/plugin/utc";_i.extend(mo);var Mn=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 _i().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Vi={},po={};function ae(i){let e=vi(Vi,i);if(!e){let t=vi(po,i);e=new Mn({name:i,logLevel:t}),lo(Vi,i,e)}return e}import{PublicKey as Ts}from"@solana/web3.js";import xs from"bn.js";import hs from"big.js";import fn from"bn.js";import Se from"bn.js";var Pt=9e15,ct=1e9,En="0123456789abcdef",on="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",sn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Fn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Pt,maxE:Pt,crypto:!1},Gi,$e,W=!0,un="[DecimalError] ",ut=un+"Invalid argument: ",Ui=un+"Precision limit exceeded",Xi=un+"crypto unavailable",zi="[object Decimal]",we=Math.floor,de=Math.pow,fo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,bo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,yo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Fe=1e7,F=7,go=9007199254740991,Ao=on.length-1,vn=sn.length-1,w={toStringTag:zi};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),M(i)};w.ceil=function(){return M(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(ut+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+F,n.rounding=1,t=ko(n,Ji(n,t)),n.precision=i,n.rounding=e,M($e==2||$e==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(W=!1,o=l.s*de(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Ae(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=de(t,1/3),i=we((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ie(c.plus(l).times(a),c.plus(u),s+2,1),Ae(a.d).slice(0,s)===(t=Ae(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(M(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")&&(M(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return W=!0,M(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/F))*F,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return ie(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return M(ie(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return M(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/ln(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Tt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return M(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=Tt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/ln(5,i)),r=Tt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,M(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,ie(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ee(t,r,o):new t(0):new t(NaN):e.isZero()?Ee(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Ee(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,W=!1,t=t.times(t).minus(1).sqrt().plus(t),W=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,W=!1,t=t.times(t).plus(1).sqrt().plus(t),W=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?M(new o(r),i,e,!0):(o.precision=t=n-r.e,r=ie(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Ee(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=vn)return s=Ee(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=vn)return s=Ee(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/F+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(W=!1,e=Math.ceil(a/F),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),W=!0,M(s,l.precision=m,l.rounding=d,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/F)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=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=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(W=!1,a=m+p,s=at(c,a),n=e?an(l,a+10):at(i,a),u=ie(s,n,a,1),Ot(u.d,r=m,d))do if(a+=10,s=at(c,a),n=e?an(l,a+10):at(i,a),u=ie(s,n,a,1),!o){+Ae(u.d).slice(r+1,r+15)+1==1e14&&(u=M(u,m+1,0));break}while(Ot(u.d,r+=10,d));return W=!0,M(u,m,d)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return W?M(i,a,u):i}if(t=we(i.e/F),l=we(p.e/F),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/F),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=Fe-1;--c[r],c[n]+=Fe}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=cn(c,t),W?M(i,a,u):i):new y(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?M(new n(t),n.precision,n.rounding):(W=!1,n.modulo==9?(e=ie(t,i.abs(),0,3,1),e.s*=i.s):e=ie(t,i,0,n.modulo,1),e=e.times(i),W=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return Vn(this)};w.naturalLogarithm=w.ln=function(){return at(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,M(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),W?M(i,a,u):i;if(o=we(m.e/F),n=we(i.e/F),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/F),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Fe|0,c[r]%=Fe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=cn(c,n),W?M(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(ut+i);return t.d?(e=Qi(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return M(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+F,n.rounding=1,t=wo(n,Ji(n,t)),n.precision=i,n.rounding=e,M($e>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(W=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Ae(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ie(s,o,t+2,1)).times(.5),Ae(o.d).slice(0,t)===(e=Ae(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(M(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(M(n,u+1,1),i=!n.times(n).eq(s));break}return W=!0,M(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=ie(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,M($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=we(l.e/F)+we(i.e/F),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%Fe|0,e=a/Fe|0;o[r]=(o[r]+e)%Fe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=cn(o,t),W?M(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return Dn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ie(i,0,ct),e===void 0?e=n.rounding:Ie(e,0,8),M(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,!0):(Ie(i,0,ct),e===void 0?e=r.rounding:Ie(e,0,8),n=M(new r(n),i+1,e),t=Ue(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Ue(r):(Ie(i,0,ct),e===void 0?e=o.rounding:Ie(e,0,8),n=M(new o(r),i+r.e+1,e),t=Ue(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Qi(y)-p.e-1,s=o%F,e.d[0]=de(10,s<0?F+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(ut+a);i=a.gt(e)?o>0?e:c:a}for(W=!1,a=new f(Ae(y)),l=f.precision,f.precision=o=y.length*F*2;m=ie(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=ie(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=ie(c,n,o,1).minus(p).abs().cmp(ie(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,W=!0,d};w.toHexadecimal=w.toHex=function(i,e){return Dn(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ie(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(W=!1,t=ie(t,i,0,e,1).times(i),W=!0,M(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return Dn(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(de(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return M(a,n,o);if(e=we(i.e/F),e>=i.d.length-1&&(t=c<0?-c:c)<=go)return r=Yi(u,a,t,n),i.s<0?new u(1).div(r):M(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=de(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+Ae(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(W=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=Vn(i.times(at(a,n+t)),n),r.d&&(r=M(r,n+5,1),Ot(r.d,n,o)&&(e=n+10,r=M(Vn(i.times(at(a,e+t)),e),e+5,1),+Ae(r.d).slice(n+1,n+15)+1==1e14&&(r=M(r,n+1,0)))),r.s=s,W=!0,u.rounding=o,M(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ie(i,1,ct),e===void 0?e=r.rounding:Ie(e,0,8),n=M(new r(n),i,e),t=Ue(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ie(i,1,ct),e===void 0?e=n.rounding:Ie(e,0,8)),M(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return M(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Ae(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=F-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=F-n.length,t&&(o+=st(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(i,e,t){if(i!==~~i||i<e||i>t)throw Error(ut+i)}function Ot(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=F,r=0):(r=Math.ceil((e+1)/F),e%=F),o=de(10,F-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==de(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==de(10,e-3)-1,s}function rn(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]+=En.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 ko(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/ln(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Tt(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 ie=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,g,b,h,k,T,x,P,K,N,_,D,L,oe,G=n.constructor,ye=n.s==r.s?1:-1,Y=n.d,E=r.d;if(!Y||!Y[0]||!E||!E[0])return new G(!n.s||!r.s||(Y?E&&Y[0]==E[0]:!E)?NaN:Y&&Y[0]==0||!E?ye*0:ye/0);for(u?(p=1,l=n.e-r.e):(u=Fe,p=F,l=we(n.e/p)-we(r.e/p)),L=E.length,_=Y.length,b=new G(ye),h=b.d=[],m=0;E[m]==(Y[m]||0);m++);if(E[m]>(Y[m]||0)&&l--,o==null?(P=o=G.precision,s=G.rounding):a?P=o+(n.e-r.e)+1:P=o,P<0)h.push(1),y=!0;else{if(P=P/p+2|0,m=0,L==1){for(d=0,E=E[0],P++;(m<_||d)&&P--;m++)K=d*u+(Y[m]||0),h[m]=K/E|0,d=K%E|0;y=d||m<_}else{for(d=u/(E[0]+1)|0,d>1&&(E=i(E,d,u),Y=i(Y,d,u),L=E.length,_=Y.length),N=L,k=Y.slice(0,L),T=k.length;T<L;)k[T++]=0;oe=E.slice(),oe.unshift(0),D=E[0],E[1]>=u/2&&++D;do d=0,c=e(E,k,L,T),c<0?(x=k[0],L!=T&&(x=x*u+(k[1]||0)),d=x/D|0,d>1?(d>=u&&(d=u-1),f=i(E,d,u),g=f.length,T=k.length,c=e(f,k,g,T),c==1&&(d--,t(f,L<g?oe:E,g,u))):(d==0&&(c=d=1),f=E.slice()),g=f.length,g<T&&f.unshift(0),t(k,f,T,u),c==-1&&(T=k.length,c=e(E,k,L,T),c<1&&(d++,t(k,L<T?oe:E,T,u))),T=k.length):c===0&&(d++,k=[0]),h[m++]=d,c&&k[0]?k[T++]=Y[N]||0:(k=[Y[N]],T=1);while((N++<_||k[0]!==void 0)&&P--);y=k[0]!==void 0}h[0]||h.shift()}if(p==1)b.e=l,Gi=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;b.e=m+l*p-1,M(b,a?o+b.e+1:o,s,y)}return b}}();function M(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=F,s=e,l=m[d=0],u=l/de(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/F),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=F,s=o-F+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=F,s=o-F+r,u=s<0?0:l/de(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%de(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/de(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=de(10,(F-e%F)%F),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=de(10,F-o),m[d]=s>0?(l/de(10,r-s)%de(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Fe&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Fe)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return W&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function Ue(i,e,t){if(!i.isFinite())return Zi(i);var n,r=i.e,o=Ae(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 cn(i,e){var t=i[0];for(e*=F;t>=10;t/=10)e++;return e}function an(i,e,t){if(e>Ao)throw W=!0,t&&(i.precision=t),Error(Ui);return M(new i(on),e,1,!0)}function Ee(i,e,t){if(e>vn)throw Error(Ui);return M(new i(sn),e,t,!0)}function Qi(i){var e=i.length-1,t=e*F+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 Yi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/F+4);for(W=!1;;){if(t%2&&(o=o.times(e),Wi(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Wi(e.d,s)}return W=!0,o}function Di(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 Vn(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(W=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(de(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=M(o.times(i),u,1),t=t.times(++l),a=s.plus(ie(o,t,u,1)),Ae(a.d).slice(0,u)===Ae(s.d).slice(0,u)){for(r=m;r--;)s=M(s.times(s),u,1);if(e==null)if(c<3&&Ot(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return M(s,d.precision=y,p,W=!0);else return d.precision=y,s}s=a}}function at(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,g=f.d,b=f.constructor,h=b.rounding,k=b.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new b(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(W=!1,l=k):l=e,b.precision=l+=y,t=Ae(g),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=Ae(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return c=an(b,l+2,k).times(o+""),f=at(new b(n+"."+t.slice(1)),l-y).plus(c),b.precision=k,e==null?M(f,k,h,W=!0):f;for(m=f,u=s=f=ie(f.minus(1),f.plus(1),l,1),d=M(f.times(f),l,1),r=3;;){if(s=M(s.times(d),l,1),c=u.plus(ie(s,new b(r),l,1)),Ae(c.d).slice(0,l)===Ae(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(an(b,l+2,k).times(o+""))),u=ie(u,new b(p),l,1),e==null)if(Ot(u.d,l-y,h,a))b.precision=l+=y,c=s=f=ie(m.minus(1),m.plus(1),l,1),d=M(f.times(f),l,1),r=a=1;else return M(u,b.precision=k,h,W=!0);else return b.precision=k,u;u=c,r+=2}}function Zi(i){return String(i.s*i.s/0)}function _n(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)%F,t<0&&(n+=F),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=F;n<r;)i.d.push(+e.slice(n,n+=F));e=e.slice(n),n=F-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),W&&(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 ho(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hi.test(e))return _n(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(bo.test(e))t=16,e=e.toLowerCase();else if(fo.test(e))t=2;else if(yo.test(e))t=8;else throw Error(ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Yi(n,new n(t),o,o*2)),c=rn(e,t,Fe),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=cn(c,l),i.d=c,W=!1,s&&(i=ie(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?de(2,u):Mt.pow(2,u))),W=!0,i)}function wo(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Tt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/ln(5,t)),e=Tt(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 Tt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/F);for(W=!1,u=t.times(t),a=new i(n);;){if(s=ie(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=ie(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return W=!0,s.d.length=m+1,s}function ln(i,e){for(var t=i;--e;)t*=i;return t}function Ji(i,e){var t,n=e.s<0,r=Ee(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $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=Di(t)?n?2:3:n?4:1,e;$e=Di(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Dn(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(Ie(t,1,ct),n===void 0?n=p.rounding:Ie(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Zi(i);else{for(l=Ue(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=rn(Ue(d),10,r),d.e=d.d.length),m=rn(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=ie(i,d,t,n,0,r),m=i.d,o=i.e,c=Gi),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=En.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=rn(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=En.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Wi(i,e){if(i.length>e)return i.length=e,!0}function Po(i){return new this(i).abs()}function To(i){return new this(i).acos()}function xo(i){return new this(i).acosh()}function Io(i,e){return new this(i).plus(e)}function Bo(i){return new this(i).asin()}function So(i){return new this(i).asinh()}function Ko(i){return new this(i).atan()}function Co(i){return new this(i).atanh()}function No(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Ee(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Ee(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Ee(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ie(i,e,o,1)),e=Ee(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(ie(i,e,o,1)),t}function Ro(i){return new this(i).cbrt()}function Lo(i){return M(i=new this(i),i.e+1,2)}function Oo(i,e,t){return new this(i).clamp(e,t)}function Mo(i){if(!i||typeof i!="object")throw Error(un+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,ct,"rounding",0,8,"toExpNeg",-Pt,0,"toExpPos",0,Pt,"maxE",0,Pt,"minE",-Pt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Fn[t]),(n=i[t])!==void 0)if(we(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]=Fn[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(Xi);else this[t]=!1;else throw Error(ut+t+": "+n);return this}function Eo(i){return new this(i).cos()}function Fo(i){return new this(i).cosh()}function $i(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,qi(o)){c.s=o.s,W?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;W?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return _n(c,o.toString())}else if(u!=="string")throw Error(ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hi.test(o)?_n(c,o):ho(c,o)}if(r.prototype=w,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Mo,r.clone=$i,r.isDecimal=qi,r.abs=Po,r.acos=To,r.acosh=xo,r.add=Io,r.asin=Bo,r.asinh=So,r.atan=Ko,r.atanh=Co,r.atan2=No,r.cbrt=Ro,r.ceil=Lo,r.clamp=Oo,r.cos=Eo,r.cosh=Fo,r.div=vo,r.exp=Vo,r.floor=_o,r.hypot=Do,r.ln=Wo,r.log=qo,r.log10=Uo,r.log2=Go,r.max=Xo,r.min=zo,r.mod=Ho,r.mul=Qo,r.pow=Yo,r.random=jo,r.round=Zo,r.sign=Jo,r.sin=$o,r.sinh=es,r.sqrt=ts,r.sub=ns,r.sum=is,r.tan=rs,r.tanh=os,r.trunc=ss,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 vo(i,e){return new this(i).div(e)}function Vo(i){return new this(i).exp()}function _o(i){return M(i=new this(i),i.e+1,3)}function Do(){var i,e,t=new this(0);for(W=!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 W=!0,new this(1/0);t=e}return W=!0,t.sqrt()}function qi(i){return i instanceof Mt||i&&i.toStringTag===zi||!1}function Wo(i){return new this(i).ln()}function qo(i,e){return new this(i).log(e)}function Go(i){return new this(i).log(2)}function Uo(i){return new this(i).log(10)}function Xo(){return ji(this,arguments,"lt")}function zo(){return ji(this,arguments,"gt")}function Ho(i,e){return new this(i).mod(e)}function Qo(i,e){return new this(i).mul(e)}function Yo(i,e){return new this(i).pow(e)}function jo(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ie(i,1,ct),n=Math.ceil(i/F),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(Xi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=F,n&&i&&(r=de(10,F-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-=F)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<F&&(t-=F-n)}return s.e=t,s.d=a,s}function Zo(i){return M(i=new this(i),i.e+1,this.rounding)}function Jo(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function $o(i){return new this(i).sin()}function es(i){return new this(i).sinh()}function ts(i){return new this(i).sqrt()}function ns(i,e){return new this(i).sub(e)}function is(){var i=0,e=arguments,t=new this(e[i]);for(W=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return W=!0,M(t,this.precision,this.rounding)}function rs(i){return new this(i).tan()}function os(i){return new this(i).tanh()}function ss(i){return M(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Mt=w.constructor=$i(Fn);on=new Mt(on);sn=new Mt(sn);var R=Mt;import{PublicKey as Un}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as as}from"@solana/spl-token";import{PublicKey as ue,SystemProgram as er,SYSVAR_RENT_PUBKEY as us}from"@solana/web3.js";function z({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var ja=[z({pubkey:as,isWritable:!1}),z({pubkey:er.programId,isWritable:!1}),z({pubkey:us,isWritable:!1})];function Wn({publicKey:i,transformSol:e}){let t=qn(i.toString());if(t instanceof ue)return e&&t.equals(Et)?ve:t;if(e&&t.toString()===Et.toBase58())return ve;if(typeof t=="string"){if(t===ue.default.toBase58())return ue.default;try{return new ue(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function qn(i){try{return new ue(i)}catch{return i}}var xt=new ue("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Za=new ue("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),It=new ue("SysvarRent111111111111111111111111111111111"),Ja=new ue("SysvarC1ock11111111111111111111111111111111"),Bt=new ue("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$a=new ue("Sysvar1nstructions1111111111111111111111111"),eu=er.programId,tu=new ue("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),nu=new ue("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),iu=new ue("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ru=new ue("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ou=new ue("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),su=new ue("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),au=new ue("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),uu=new ue("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),cu=new ue("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),lu=new ue("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),mu=new ue("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ve=new ue("So11111111111111111111111111111111111111112"),Et=ue.default;function Xe(i){return Wn({publicKey:i,transformSol:!0})}import{PublicKey as cs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tr}from"@solana/spl-token";var Gn={chainId:101,address:cs.default.toBase58(),programId:tr.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ze={chainId:101,address:"So11111111111111111111111111111111111111112",programId:tr.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 Xn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Et.toBase58()||e instanceof Un&&Et.equals(e)){this.decimals=ze.decimals,this.symbol=ze.symbol,this.name=ze.name,this.mint=new Un(ze.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?Un.default:Wn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ce=Xn;Ce.WSOL=new Xn(Q(v({},ze),{mint:ze.address}));import dn from"big.js";import ds from"bn.js";import ps from"decimal.js-light";import ls from"toformat";var ms=ls,Ft=ms;var mn=ae("module/fraction"),zn=Ft(dn),vt=Ft(ps),fs={[0]:vt.ROUND_DOWN,[1]:vt.ROUND_HALF_UP,[2]:vt.ROUND_UP},bs={[0]:dn.roundDown,[1]:dn.roundHalfUp,[2]:dn.roundUp},ee=class{constructor(e,t=new ds(1)){this.numerator=se(e),this.denominator=se(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ee(this.denominator,this.numerator)}add(e){let t=e instanceof ee?e:new ee(se(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.add(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ee?e:new ee(se(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.sub(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ee?e:new ee(se(e));return new ee(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ee?e:new ee(se(e));return new ee(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||mn.logWithError(`${e} is not an integer.`),e<=0&&mn.logWithError(`${e} is not positive.`),vt.set({precision:e+1,rounding:fs[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)||mn.logWithError(`${e} is not an integer.`),e<0&&mn.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 gs=ae("Raydium_price"),Be=class extends ee{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new ee(Hn(n.decimals),Hn(r.decimals))}get raw(){return new ee(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Be({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&gs.logWithError("mul token not equals");let n=super.mul(t);return new Be({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 Qn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},pn=Qn;pn.SOL=new Qn(Gn);import As from"bn.js";var nr=new ee(new As(100)),lt=class extends ee{toSignificant(e=5,t,n){return this.mul(nr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(nr).toFixed(e,t,n)}};var ir=new Se(0),ks=new Se(1),ac=new Se(2),uc=new Se(3),cc=new Se(5),Yn=new Se(10),lc=new Se(100),mc=new Se(1e3),dc=new Se(1e4),rr=9007199254740991;function se(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Se)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Se(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=rr||i<=-rr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Se(String(i))):typeof i=="bigint"?new Se(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Se(0))}function Hn(i){return Yn.pow(se(i))}var ws=ae("Raydium_amount"),sr=Ft(hs);function Ps(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")):ws.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ce=class extends ee{constructor(t,n,r=!0,o){let s=new fn(0),a=Yn.pow(new fn(t.decimals));if(r)s=se(n);else{let u=new fn(0),c=new fn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Ps(n.toString(),t.decimals);u=se(l),c=se(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new 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 sr.DP=this.token.decimals,new sr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function or(i){return typeof i=="object"&&i!==null&&![Ce,ce,Ts,ee,xs,Be,lt].some(e=>typeof e=="object"&&i instanceof e)}function He(i){return typeof i=="string"?qn(i):Array.isArray(i)?i.map(e=>He(e)):or(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,He(t)])):i}import{PublicKey as Dt,sendAndConfirmTransaction as Wt,Transaction as qt,TransactionMessage as Gt,VersionedTransaction as Ut}from"@solana/web3.js";import Ms from"axios";var te={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 Is,ComputeBudgetProgram as ar,Transaction as cr,TransactionMessage as Bs,Keypair as lr,VersionedTransaction as mr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ss}from"@solana/spl-token";var ur=ae("Raydium_txUtil"),dr=1644;function bn(i){let e=[],t=[];return i.microLamports&&(e.push(ar.setComputeUnitPrice({microLamports:i.microLamports})),t.push(te.SetComputeUnitPrice)),i.units&&(e.push(ar.setComputeUnitLimit({units:i.units})),t.push(te.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function St(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 Ks(i,e){i.length<1&&ur.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&ur.logWithError(`no signers provided:, ${e.toString()}`);let t=new cr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<dr}catch{return!1}}function Ke(i,e){let[t,n]=Is.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Vt({instructions:i,payer:e,signers:t}){return Ks(i,[e,...t])}function _t({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=lr.generate().publicKey.toString()}){let o=new Bs({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new mr(o).serialize()).toString("base64").length<dr}catch{return!1}}var Cs=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function bt(i){let e=[];return i.forEach(t=>{t instanceof cr&&(t.recentBlockhash||(t.recentBlockhash=Ss.toBase58()),t.feePayer||(t.feePayer=lr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof mr&&(n=Cs(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as br,AddressLookupTableAccount as yn}from"@solana/web3.js";import{PublicKey as pr}from"@solana/web3.js";import{MINT_SIZE as Ns,TOKEN_PROGRAM_ID as Rs,getTransferFeeConfig as Ls,unpackMint as Os}from"@solana/spl-token";var jn=ae("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=v({batchRequest:!1},t),s=Zn(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=i._buildArgs([m.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Zn(u,10);a=(await(await Promise.all(c.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&jn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:g,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&jn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new pr(g),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>i.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&jn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function yt(i,e,t){let n=await et(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>Q(v({},r),{accountInfo:n[o]}))}async function fr({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await yt(i,e.map(u=>({pubkey:Xe(u)})),t),r={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Ns){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=Os(u.pubkey,u.accountInfo,(o=u.accountInfo)==null?void 0:o.owner);r[u.pubkey.toString()]=Q(v({},c),{programId:((s=u.accountInfo)==null?void 0:s.owner)||Rs,feeConfig:(a=Ls(c))!=null?a:void 0})}return r[pr.default.toBase58()]=r[ve.toBase58()],r}async function Jn({connection:i,address:e}){let t=await et(i,[...new Set(e.map(r=>r.toString()))].map(r=>new br(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new yn({key:s,state:yn.deserialize(o.data)});n[s.toString()]=a,gn[s.toString()]=a}return n}var gn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new yn({key:new br("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:yn.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 An=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Ms.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}=bn(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!==Dt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){let t=new qt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await St(this.connection,this.blockhashCommitment);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),bt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Wt(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await St(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let g=[];for(let b of s){let h=await Wt(this.connection,b,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});g.push(h)}return{txIds:g,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(g,b)=>(g.recentBlockhash=y,await Wt(this.connection,g,a[b].find(h=>h.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((h,k)=>(h.recentBlockhash=y,a[k].length&&h.sign(...a[k]),h));bt(g);let b=await this.signAllTransactions(g);if(l){let h=0,k=[],T=async()=>{if(!b[h])return;let x=await this.connection.sendRawTransaction(b[h].serialize(),{skipPreflight:p});k.push({txId:x,status:"sent",signedTx:b[h]}),m==null||m([...k]),h++,this.connection.onSignature(x,P=>{let K=k.findIndex(N=>N.txId===x);K>-1&&(k[K].status=P.err?"error":"success"),m==null||m([...k]),P.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:k.map(x=>x.txId),signedTxs:b}}else{let h=[];for(let k=0;k<b.length;k+=1){let T=await this.connection.sendRawTransaction(b[k].serialize(),{skipPreflight:p});h.push(T)}return{txIds:h,signedTxs:b}}}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){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=ft(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=v(v({},this.cluster==="devnet"?{}:gn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Dt(p));let c=await Jn({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Gt({payerKey:this.feePayer,recentBlockhash:r?Dt.default.toBase58():await St(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Ut(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var g;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),bt([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let b=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:h,signature:b},"confirmed"),{txId:b,signedTx:m}}if(this.signAllTransactions){let b=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(b[0],{skipPreflight:f}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),bt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(s.forEach((b,h)=>{a[h].find(k=>k.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let h of s){let k=await this.connection.sendTransaction(h,{skipPreflight:p}),{lastValidBlockHeight:T,blockhash:x}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:T,signature:k},"confirmed"),b.push(k)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>{let h=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let g=0,b=[],h=async()=>{if(!f[g])return;let k=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push({txId:k,status:"sent",signedTx:f[g]}),m==null||m([...b]),g++,this.connection.onSignature(k,T=>{let x=b.findIndex(P=>P.txId===k);x>-1&&(b[x].status=T.err?"error":"success"),m==null||m([...b]),T.err||h()},"processed"),this.connection.getSignatureStatus(k)};return h(),{txIds:[],signedTxs:f}}else{let g=[];for(let b=0;b<f.length;b+=1){let h=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push(h)}return{txIds:g,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=ft(c,["computeBudgetConfig"]),r=t?bn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Q(v({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Dt(f));if(u.length<12&&Vt({instructions:d,payer:this.feePayer,signers:y})||Vt({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Vt({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new qt().add(...r.instructions,...u)):s.push(new qt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Vt({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new qt().add(...r.instructions,...u)):s.push(new qt().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await St(this.connection,this.blockhashCommitment);if(s.forEach(async(b,h)=>{b.recentBlockhash=f,a[h].length&&b.sign(...a[h])}),bt(s),(g=this.owner)!=null&&g.isKeyPair){if(m){let b=[];for(let h of s){let k=await Wt(this.connection,h,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});b.push(k)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async(b,h)=>await Wt(this.connection,b,a[h].find(k=>k.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let h=0,k=[],T=async()=>{if(!b[h])return;let x=await this.connection.sendRawTransaction(b[h].serialize(),{skipPreflight:y});k.push({txId:x,status:"sent",signedTx:b[h]}),d==null||d([...k]),h++,this.connection.onSignature(x,P=>{let K=k.findIndex(N=>N.txId===x);K>-1&&(k[K].status=P.err?"error":"success"),d==null||d([...k]),P.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:k.map(x=>x.txId),signedTxs:b}}else{let h=[];for(let k=0;k<b.length;k+=1){let T=await this.connection.sendRawTransaction(b[k].serialize(),{skipPreflight:y});h.push(T)}return{txIds:h,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=g,o=ft(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=v(v({},this.cluster==="devnet"?{}:gn),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let b of a)s[b]===void 0&&u.push(new Dt(b));let c=await Jn({connection:this.connection,address:u});for(let[b,h]of Object.entries(c))s[b]=h;let l=t?bn(t):{instructions:[],instructionTypes:[]},m=await St(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,h)=>Q(v({},b),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(b=>{let h=[...f,b],k=t?[...l.instructions,...h]:h;if(f.length<12&&_t({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||_t({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let T={};for(let x of[...new Set(a)])s[x]!==void 0&&(T[x]=s[x]);if(t&&_t({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let x=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ut(x))}else{let x=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ut(x))}y.push(Array.from(new Set(f.map(x=>x.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(x=>d[x]).filter(x=>x!==void 0)),f=[b]}}),f.length>0){let h=[...new Set(f.map(k=>k.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&_t({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ut(k))}else{let k=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ut(k))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async b=>{var P;let{sequentially:h,onTxUpdate:k,recentBlockHash:T,skipPreflight:x=!0}=b||{};if(p.map(async(K,N)=>{y[N].length&&K.sign(y[N]),T&&(K.message.recentBlockhash=T)}),bt(p),(P=this.owner)!=null&&P.isKeyPair){let{lastValidBlockHeight:K,blockhash:N}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((_,D)=>{y[D].find(L=>L.publicKey.equals(this.owner.publicKey))||_.sign([this.owner.signer])}),h){let _=[];for(let D of p){let L=await this.connection.sendTransaction(D,{skipPreflight:x}),{lastValidBlockHeight:oe,blockhash:G}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:G,lastValidBlockHeight:oe,signature:L},"confirmed"),_.push(L)}return{txIds:_,signedTxs:p}}return{txIds:await Promise.all(p.map(async _=>{let D=await this.connection.sendTransaction(_,{skipPreflight:x});return await this.connection.confirmTransaction({blockhash:N,lastValidBlockHeight:K,signature:D},"confirmed"),D})),signedTxs:p}}if(this.signAllTransactions){let K=await this.signAllTransactions(p);if(h){let N=0,_=[],D=async()=>{if(!K[N])return;let L=await this.connection.sendTransaction(K[N],{skipPreflight:x});_.push({txId:L,status:"sent",signedTx:K[N]}),k==null||k([..._]),N++,this.connection.onSignature(L,oe=>{let G=_.findIndex(ye=>ye.txId===L);G>-1&&(_[G].status=oe.err?"error":"success"),k==null||k([..._]),oe.err||D()},"processed"),this.connection.getSignatureStatus(L)};return D(),{txIds:[],signedTxs:K}}else{let N=[];for(let _=0;_<K.length;_+=1){let D=await this.connection.sendTransaction(K[_],{skipPreflight:x});N.push(D)}return{txIds:N,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function Zn(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 $}from"@solana/web3.js";var Pl=new $("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Tl=new $("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xl=new $("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Il=new $("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Bl=new $("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),$n=new $("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),gr=new $("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sl=new $("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ar=new $("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Kl=new $("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Cl=new $("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Nl=new $("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Rl=new $("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ll=new $("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ol=new $("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Ml=new $("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),El=new $("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fl=new $("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Es=new $("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Fs=new $("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vs=new $("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var vl={SERUM_MARKET:$.default,OPENBOOK_MARKET:new $("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:$.default,FarmV3:new $("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new $("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new $("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new $("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new $("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new $("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new $("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Es,CREATE_CPMM_POOL_AUTH:Fs,CREATE_CPMM_POOL_FEE_ACC:vs,FEE_DESTINATION_ID:new $("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _s}from"@solana/spl-token";function Qe(i,e,t){return Ke([i.toBuffer(),(t!=null?t:_s).toBuffer(),e.toBuffer()],new Vs("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ve from"bn.js";var Xt=1e4;function pe(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=Q(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 Ve(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===Xt){let u=new Ve(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=ei(i.mul(new Ve(Xt)),new Ve(Xt-o.transferFeeBasisPoints)),c=new Ve(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=ei(l.mul(new Ve(o.transferFeeBasisPoints)),new Ve(Xt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=ei(i.mul(new Ve(o.transferFeeBasisPoints)),new Ve(Xt)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Ye(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function ei(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Ve(0))?t.add(new Ve(1)):t}var ti=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Kt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new An({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ti(e))}logInfo(...e){this.logger.info(ti(e))}logAndCreateError(...e){let t=ti(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as oa,createCloseAccountInstruction as sa,createTransferInstruction as aa,TOKEN_PROGRAM_ID as Nt}from"@solana/spl-token";import{PublicKey as ua,SystemProgram as ca}from"@solana/web3.js";import la from"bn.js";import{PublicKey as ta,Keypair as na}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ia}from"@solana/spl-token";import Kd from"bn.js";import{PublicKey as Qs}from"@solana/web3.js";import Pr,{isBN as Tr}from"bn.js";import{bits as pm,BitStructure as fm,blob as Ds,Blob as bm,cstr as ym,f32 as gm,f32be as Am,f64 as km,f64be as hm,greedy as wm,Layout as Ws,ns64 as Pm,ns64be as Tm,nu64 as xm,nu64be as Im,offset as Bm,s16 as Sm,s16be as Km,s24 as Cm,s24be as Nm,s32 as qs,s32be as Rm,s40 as Lm,s40be as Om,s48 as Mm,s48be as Em,s8 as Fm,seq as Gs,struct as vm,Structure as Us,u16 as Xs,u16be as Vm,u24 as _m,u24be as Dm,u32 as Wm,u32be as qm,u40 as Gm,u40be as Um,u48 as Xm,u48be as zm,u8 as zs,UInt as Hs,union as Hm,Union as Qm,unionLayoutDiscriminator as Ym,utf8 as jm}from"@solana/buffer-layout";var ni=Ws,kr=Us;var ii=Hs;var hr=zs,Ct=Xs;var ke=qs;var wr=Gs;var Pe=Ds;var zt=class extends ni{constructor(t,n,r){super(t,r);this.blob=Pe(t),this.signed=n}decode(t,n=0){let r=new Pr(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 Pr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function j(i){return new ii(1,i)}function Me(i){return new ii(4,i)}function A(i){return new zt(8,!1,i)}function q(i){return new zt(16,!1,i)}function xr(i){return new zt(16,!0,i)}var kn=class extends ni{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 C(i){return new kn(Pe(32),e=>new Qs(e),e=>e.toBuffer(),i)}function je(i){return new kn(hr(),Ys,js,i)}function Ys(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function js(i){return i?1:0}var ri=class extends kr{decode(e,t){return super.decode(e,t)}};function V(i,e,t){return new ri(i,e,t)}function re(i,e,t){let n,r=typeof e=="number"?e:Tr(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Tr(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 wr(i,r,t)}var hn=V([C("mint"),C("owner"),A("amount"),Me("delegateOption"),C("delegate"),j("state"),Me("isNativeOption"),A("isNative"),A("delegatedAmount"),Me("closeAuthorityOption"),C("closeAuthority")]);function Zs(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function oi(i,...e){if(!Zs(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 si(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 Ir(i,e){oi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Pn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),_e=(i,e)=>i<<32-e|i>>>e;var pd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Js(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function ai(i){return typeof i=="string"&&(i=Js(i)),oi(i),i}var wn=class{clone(){return this._cloneInto()}},fd={}.toString;function Br(i){let e=n=>i().update(ai(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function $s(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var Sr=(i,e,t)=>i&e^~i&t,Kr=(i,e,t)=>i&e^i&t^e&t,Tn=class extends wn{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Pn(this.buffer)}update(e){si(this);let{view:t,buffer:n,blockLen:r}=this;e=ai(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Pn(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){si(this),Ir(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;$s(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Pn(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ea=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]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),ui=class extends Tn{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],y=_e(d,7)^_e(d,18)^d>>>3,f=_e(p,17)^_e(p,19)^p>>>10;dt[m]=f+dt[m-7]+y+dt[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=_e(a,6)^_e(a,11)^_e(a,25),p=l+d+Sr(a,u,c)+ea[m]+dt[m]|0,f=(_e(n,2)^_e(n,13)^_e(n,22))+Kr(n,r,o)|0;l=c,c=u,u=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,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Cr=Br(()=>new ui);var Ld=ae("Raydium_Util");function xn({fromPublicKey:i,programId:e=ia}){let t=na.generate().publicKey.toBase58().slice(0,32);return{publicKey:ra(i,t,e),seed:t}}function ra(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Cr(n);return new ta(r)}function ma(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Nt}=i;return oa(t,e,n,r)}function Ht(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Nt}=i;return sa(e,t,r,n,o)}async function ci(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(hn.span,n),u=se(t).add(new la(a)),c=xn({fromPublicKey:r,programId:Nt});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[ca.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:hn.span,programId:Nt}),ma({mint:new ua(ze.address),tokenAccount:c.publicKey,owner:o,programId:Nt})],instructionTypes:[te.CreateAccount,te.InitAccount],endInstructionTypes:s?[]:[te.CloseAccount],endInstructions:s?[]:[Ht({tokenAccount:c.publicKey,payer:r,owner:o})]}}function li({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Nt}){return aa(i,e,t,BigInt(String(n)),r,o)}import Nr from"bn.js";var Yd=new Nr(25),jd=new Nr(1e4);var mi=V([j("instruction"),A("amountIn"),A("minAmountOut")]),di=V([j("instruction"),A("maxAmountIn"),A("amountOut")]),ip=V([j("instruction"),j("nonce")]),da=V([j("instruction"),j("nonce"),A("startTime")]),Rr=V([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),A("swapBase2QuoteFee"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),A("swapQuote2BaseFee"),C("baseVault"),C("quoteVault"),C("baseMint"),C("quoteMint"),C("lpMint"),C("openOrders"),C("marketId"),C("marketProgramId"),C("targetOrders"),C("withdrawQueue"),C("lpVault"),C("owner"),A("lpReserve"),re(A(),3,"padding")]),rp=V([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),C("baseVault"),C("quoteVault"),C("baseMint"),C("quoteMint"),C("lpMint"),C("modelDataAccount"),C("openOrders"),C("marketId"),C("marketProgramId"),C("targetOrders"),C("owner"),re(A(),64,"padding")]),pa=V([j("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),fa=V([j("instruction"),A("amountIn")]);var op=V([A("fee")]);import{PublicKey as ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wa}from"@solana/spl-token";import{PublicKey as cp}from"@solana/web3.js";import{MintLayout as mp,TOKEN_PROGRAM_ID as pp}from"@solana/spl-token";var Lr=i=>new Ce({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),pi=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=ft(o,["amount","isRaw","name"]);return new ce(new Ce({mint:Xe(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var Qt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=ft(o,["address","programId","decimals"]);return v({chainId:101,address:Xe(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as wp}from"@solana/web3.js";var xp=ae("Raydium_liquidity_serum");import{PublicKey as ba}from"@solana/web3.js";var fi=new ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ya=5e4,ga=V([A("x"),A("y"),A("price")]),Cp=V([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),re(ga,ya,"DataElement")]);import{TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as Lp}from"@solana/spl-token";import{PublicKey as Mp,TransactionInstruction as Er,SystemProgram as Ep,SYSVAR_RENT_PUBKEY as Fp}from"@solana/web3.js";var Or=ae("Raydium_liquidity_instruction");function Aa({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=He(i),s=Buffer.alloc(mi.span);mi.encode({instruction:9,amountIn:se(t),minAmountOut:se(n)},s);let a=[z({pubkey:Mr,isWritable:!1}),z({pubkey:o.id}),z({pubkey:o.authority,isWritable:!1}),z({pubkey:o.openOrders})];return r===4&&a.push(z({pubkey:o.targetOrders})),a.push(z({pubkey:o.vault.A}),z({pubkey:o.vault.B})),r===5&&a.push(z({pubkey:fi})),a.push(z({pubkey:o.marketProgramId,isWritable:!1}),z({pubkey:o.marketId}),z({pubkey:o.marketBids}),z({pubkey:o.marketAsks}),z({pubkey:o.marketEventQueue}),z({pubkey:o.marketBaseVault}),z({pubkey:o.marketQuoteVault}),z({pubkey:o.marketAuthority,isWritable:!1}),z({pubkey:e.tokenAccountIn}),z({pubkey:e.tokenAccountOut}),z({pubkey:e.owner,isWritable:!1})),new Er({programId:o.programId,keys:a,data:s})}function ka({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=He(i),s=Buffer.alloc(di.span);di.encode({instruction:11,maxAmountIn:se(t),amountOut:se(n)},s);let a=[z({pubkey:Mr,isWritable:!1}),z({pubkey:o.id}),z({pubkey:o.authority,isWritable:!1}),z({pubkey:o.openOrders}),z({pubkey:o.targetOrders}),z({pubkey:o.vault.A}),z({pubkey:o.vault.B})];return r===5&&a.push(z({pubkey:fi})),a.push(z({pubkey:o.marketProgramId,isWritable:!1}),z({pubkey:o.marketId}),z({pubkey:o.marketBids}),z({pubkey:o.marketAsks}),z({pubkey:o.marketEventQueue}),z({pubkey:o.marketBaseVault}),z({pubkey:o.marketQuoteVault}),z({pubkey:o.marketAuthority,isWritable:!1}),z({pubkey:e.tokenAccountIn}),z({pubkey:e.tokenAccountOut}),z({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Er({programId:o.programId,keys:a,data:s})}function Fr(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 Aa(Q(v({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return ka(Q(v({},a),{maxAmountIn:r,amountOut:o}),t);Or.logWithError("invalid params","params",i)}throw Or.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import uf from"bn.js";function vr({programId:i}){return Ke([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var bi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Vr=i=>{let e={},t=wa.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:Qt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:Qt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new R(r.baseReserve.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new R(r.quoteReserve.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new R(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:bi,week:bi,month:bi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:ha.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:Qt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import Na from"bn.js";function In(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function yi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function gi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Yt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function _r(i,e){return Yt(i,e)?null:yi(i,e)}function Dr(i,e){return Yt(i,e)?null:gi(i,e)}var Pf=Buffer.from("amm_config","utf8"),Pa=Buffer.from("pool","utf8"),Ta=Buffer.from("pool_vault","utf8"),xa=Buffer.from("pool_reward_vault","utf8"),Wr=Buffer.from("position","utf8"),Ia=Buffer.from("tick_array","utf8"),Ba=Buffer.from("operation","utf8"),Sa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function qr(i,e,t,n){return Ke([Pa,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Ai(i,e,t){return Ke([Ta,e.toBuffer(),t.toBuffer()],i)}function Gr(i,e,t){return Ke([xa,e.toBuffer(),t.toBuffer()],i)}function ne(i,e,t){return Ke([Ia,e.toBuffer(),In(t)],i)}function gt(i,e,t,n){return Ke([Wr,e.toBuffer(),In(t),In(n)],i)}function De(i,e){return Ke([Wr,e.toBuffer()],i)}function Bn(i){return Ke([Buffer.from("metadata","utf8"),Bt.toBuffer(),i.toBuffer()],Bt)}function Sn(i){return Ke([Ba],i)}function Ne(i,e){return Ke([Sa,e.toBuffer()],i)}import Ze from"bn.js";var le=new Ze(0),Re=new Ze(1),tt=new Ze(-1),Le=new Ze(1).shln(64),Kn=new Ze(1).shln(128),ki=Le.sub(Re),jt=64,Ur=Kn.subn(1),Te=-443636,xe=-Te,nt=new Ze("4295048016"),it=new Ze("79226673521066979257578248091"),Xr=16,zr="59543866431248",Hr="184467440737095516",Qr="15793534762490258745",Cn=new Ze(10).pow(new Ze(6));var If=new Ze("18446744073700000000");var Ka=15,Z=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=O.getTickArrayStartIndexByTick(r,o),l=O.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Ka/2));for(let p=0;p<l.length;p++){let{publicKey:y}=ne(t,n,l[p]);u.push(y)}let m=(await et(e,u)).map(p=>p!==null?Zt.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=Q(v({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=O.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/Z.tickCount(t)),a=n?O.searchLowBitFromStart(r,o,s-1,1,t):O.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=fe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<fe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ne(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=O.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<fe;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=ne(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(O.checkIsOutOfBoundary(e)){if(e>xe)return!1;let n=O.getTickArrayStartIndexByTick(Te,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return fe*e}};import H from"bn.js";import{PublicKey as We}from"@solana/web3.js";import me from"bn.js";var hi=14,rt=class{static maxTickInTickarrayBitmap(e){return e*fe*At}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(!Z.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-Z.tickCount(n):t+Z.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*fe,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=_r(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Dr(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Z.tickCount(n)}}}},Jt=class{static getBitmapOffset(e,t){if(!Z.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(xe<=t)throw Error(`extensionTickBoundary check error: ${xe}, ${t}`);if(n<=Te)throw Error(`extensionTickBoundary check error: ${n}, ${Te}`);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:O.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=Z.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 u=O.mergeTickArrayBitmap(e).shln(At-1-a),c=Yt(512,u)?null:yi(512,u);if(c!==null){let l=t-c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=O.mergeTickArrayBitmap(e).shrn(a),c=Yt(512,u)?null:gi(512,u);if(c!==null){let l=t+c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Z.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),r=Math.floor(n/Z.tickCount(t));return e<0&&n!=0&&(r=At-r),r}};import Je from"bn.js";var $t=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 u=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=U.wrappingSubU128(u,c.growthInsideLastX64),m=U.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=U.wrappingSubU128(u,c.growthInsideLastX64),m=U.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Je(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new 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 u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var g,b,h,k;let a=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),u=X.getSqrtPriceX64FromTick(t.tickLower),c=X.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=J.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[pe(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),pe(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[y,f]=[pe(new Je(new R(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),pe(new Je(new R(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ye(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Yr}from"@solana/spl-token";var be=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:g}=kt.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 u.push(...y),{allTrade:d,expectedAmountOut:p.mul(tt),remainingAccounts:u,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:g}=ne(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=kt.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),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Jt.checkTickArrayIsInit(Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):O.checkTickArrayIsInitialized(O.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ne(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ne(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/Z.tickCount(e.tickSpacing)),r=t?O.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):O.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=Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(O.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Jt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Te||t>xe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Q(v({},m),{perSecond:U.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new We(d)});if(p.tokenMint.equals(We.default))continue;if(n<=p.openTime.toNumber()||r.eq(le)){s.push(p);continue}let y=new me(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=U.mulDivFloor(f,p.emissionsPerSecondX64,r),b=p.rewardGrowthGlobalX64.add(g),h=U.mulDivFloor(f,p.emissionsPerSecondX64,Le),k=p.rewardTotalEmissioned.add(h);s.push(Q(v({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:k,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=O.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>xe&&(t=Z.getArrayStartIndex(xe,e)+Z.tickCount(e)),n<Te&&(n=Z.getArrayStartIndex(Te,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Z.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Z.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await yt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=jr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=O.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=O.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=ne(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await yt(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Zt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Q(v({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(De(p,d).publicKey);let l=await et(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=wi.decode(d.data),y=p.poolId.toString(),f=e.find(N=>N.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,b=O._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),h=O._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:T}=J.getAmountsFromLiquidity(g.sqrtPriceX64,b.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),x=1/(1-Math.sqrt(Math.sqrt(b.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:h.price,amountA:k,amountB:T,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(N=>Q(v({},N),{pendingReward:new me(0)})),leverage:x,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let P=await O.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),K=await O.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=P,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=K}if(o){let d=Object.values(m),p=await et(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let b=d[f].toString();y[b]=Zt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let b of g){let h=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,k=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,T=y[m[h].toString()],x=y[m[k].toString()],P=T.ticks[O.getTickOffsetInArray(b.tickLower,f.tickSpacing)],K=x.ticks[O.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:N,tokenFeeAmountB:_}=await $t.GetPositionFees(f,b,P,K),D=await $t.GetPositionRewards(f,b,P,K);b.tokenFeeAmountA=N.gte(new me(0))?N:new me(0),b.tokenFeeAmountB=_.gte(new me(0))?_:new me(0);for(let L=0;L<D.length;L++)b.rewardInfos[L].pendingReward=D[L].gte(new me(0))?D[L]:new me(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new R(0),catchLiquidityInsufficient:u=!1}){var oe;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new R(0))?c=l?nt.add(new me(1)):it.sub(new me(1)):c=X.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=pe(o,m,r,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:g,executionPrice:b,feeAmount:h}=be.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((oe=p.fee)!=null?oe:le),c,u),k=pe(f,d,r,!1),T=X.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),x=l?T:new R(1).div(T),P=f.mul(new me(Math.floor((1-s)*1e10))).div(new me(1e10)),K=pe(P,d,r,!1),N=l?e.currentPrice:new R(1).div(e.currentPrice),_=new R(x).sub(N).abs(),D=N,L=new lt(new R(_).mul(10**15).toFixed(0),new R(D).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:k,minAmountOut:K,expirationTime:Ye(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:x,priceImpact:L,fee:h,remainingAccounts:g,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=r.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ce(Q(v({},c),{mint:c.address,isToken2022:c.programId===Yr.toBase58()})),new Ce(Q(v({},l),{mint:l.address,isToken2022:l.programId===Yr.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:g,expirationTime:b,currentPrice:h,executionPrice:k,priceImpact:T,fee:x,remainingAccounts:P,executionPriceX64:K}=be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new We(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),N=Q(v({},y),{amount:new ce(m,y.amount),fee:y.fee===void 0?void 0:new ce(m,y.fee)}),_=Q(v({},f),{amount:new ce(d,f.amount),fee:f.fee===void 0?void 0:new ce(d,f.fee)}),D=Q(v({},g),{amount:new ce(d,g.amount),fee:g.fee===void 0?void 0:new ce(d,g.fee)}),L=new Be({baseToken:m,denominator:new me(10).pow(new me(20+m.decimals)),quoteToken:d,numerator:h.mul(new R(10**(20+d.decimals))).toFixed(0)}),oe=new Be({baseToken:m,denominator:new me(10).pow(new me(20+m.decimals)),quoteToken:d,numerator:k.mul(new R(10**(20+d.decimals))).toFixed(0)}),G=new ce(m,x);return{allTrade:p,realAmountIn:N,amountOut:_,minAmountOut:D,expirationTime:b,currentPrice:L,executionPrice:oe,priceImpact:T,fee:G,remainingAccounts:P,executionPriceX64:K}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,g;let o=e[t],s=O.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=O.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(g=o.rewardApr[2])!=null?g:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[Xe(e.mintA.address).toString()],d=r[Xe(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),g=X.getSqrtPriceX64FromTick(s),b=X.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:k}=J.getAmountsFromLiquidityWithSlippage(f,g,b,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:x}=J.getAmountsFromLiquidityWithSlippage(f,g,b,o,!1,!1,0),P=new R(h.toString()).div(new R(10).pow(p)).mul(m.value).add(new R(k.toString()).div(new R(10).pow(y)).mul(d.value)),K=new R(T.toString()).div(new R(10).pow(p)).mul(m.value).add(new R(x.toString()).div(new R(10).pow(y)).mul(d.value)),N=K.div(P.add(K)).div(K),D=new R(l.volumeFee).mul(365).div(c).mul(N).mul(100).toNumber(),L=3600*24*365,oe=e.rewardDefaultInfos.map(G=>{var E,tn;let ye=G.mint.decimals,Y=r[G.mint.address];return u<((E=G.startTime)!=null?E:0)||u>((tn=G.endTime)!=null?tn:0)||!G.perSecond||!Y||ye===void 0?0:new R(Y.value).mul(new R(G.perSecond).mul(L)).div(new R(10).pow(ye)).mul(N).mul(100).toNumber()});return{feeApr:D,rewardsApr:oe,apr:D+oe.reduce((G,ye)=>G+ye,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var b,h;let l=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),m=X.getSqrtPriceX64FromTick(n),d=X.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=pe(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new me(new R(y.amount.sub((h=y.fee)!=null?h:le).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?J.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let k=J.getLiquidityFromTokenAmountA(l,d,f,!a),T=J.getLiquidityFromTokenAmountB(m,l,f);g=t?k:T}else g=t?new me(0):J.getLiquidityFromTokenAmountB(m,d,f);return be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var g,b,h,k;let u=X.getSqrtPriceX64FromTick(n),c=X.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=J.getAmountsFromLiquidity(X.priceToSqrtPriceX64(new R(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[pe(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),pe(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[y,f]=[pe(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),pe(m.amountB.muln(l),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ye(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(u=>!n[u.id]).map(u=>new We(u.id));(await et(e,r)).forEach((u,c)=>{!u||(n[r[c].toBase58()]=Rt.decode(u.data))});let s=t.map(u=>Ne(new We(u.programId),new We(u.id)).publicKey),a=await be.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>Q(v({},u),{[c.id]:Q(v({},n[c.id]),{id:new We(c.id),version:6,programId:new We(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:Q(v({},c.config),{id:new We(c.config.id),fundOwner:""}),currentPrice:new R(c.price),exBitmapInfo:a[Ne(new We(c.programId),new We(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var U=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(le)||(o=o.add(Re)),o}static mulDivFloor(e,t,n){if(n.eq(le))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(le))throw new Error("division by 0");return e.mul(t).add(n.sub(Re)).div(n)}static x64ToDecimal(e,t){return new R(e.toString()).div(R.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(R.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Kn).sub(t).mod(Kn)}};function ge(i,e){return Pi(i.mul(e),64,256)}function Ca(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Pi(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var X=class{static sqrtPriceX64ToPrice(e,t,n){return U.x64ToDecimal(e).pow(2).mul(R.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return U.decimalToX64(e.mul(R.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(le))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(le))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(le))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(le))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(le))return e;let o=t.shln(jt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?U.mulDivCeil(s,e,a):U.mulDivRoundingUp(s,Re,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 U.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(jt);if(r)return e.add(o.div(t));{let s=U.mulDivRoundingUp(o,Re,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<Te||e>xe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=Ur.div(n)),n}static getTickFromPrice(e,t,n){return X.getTickFromSqrtPriceX64(X.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 H(t-64),r=Ca(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<Xr;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new H(zr)),d=Pi(m.sub(new H(Hr)),64,128).toNumber(),p=Pi(m.add(new H(Qr)),64,128).toNumber();return d==p?d:X.getSqrtPriceX64FromTick(p).lte(e)?p:d}},ht=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=X.getTickFromSqrtPriceX64(X.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=ht.getTickWithPriceAndTickspacing(e,t,n,r),s=X.getSqrtPriceX64FromTick(o);return X.sqrtPriceX64ToPrice(s,n,r)}},J=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(le))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(jt),s=t.sub(e);return r?U.mulDivRoundingUp(U.mulDivCeil(o,s,t),Re,e):U.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(le))throw new Error("sqrtPriceX64A must greater than 0");return r?U.mulDivCeil(n,t.sub(e),Le):U.mulDivFloor(n,t.sub(e),Le)}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?U.mulDivRoundingUp(a,Re,ki):a.shrn(jt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),U.mulDivFloor(n,ki,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return J.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=J.getLiquidityFromTokenAmountA(e,n,r,!1),a=J.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return J.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:J.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new H(0)};if(e.lt(n)){let s=J.getTokenAmountAFromLiquidity(e,n,r,o),a=J.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:J.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=J.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new H(new R(u.toString()).mul(l).toFixed(0)),d=new H(new R(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,k,T,x;let c=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),l=X.getSqrtPriceX64FromTick(t),m=X.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=J.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[pe(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),pe(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)],[g,b]=[pe(new H(new R(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),pe(new H(new R(p.amountB.toString()).mul(d).toFixed(0)),(x=e.mintB.extensions)==null?void 0:x.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:b,expirationTime:Ye(y.expirationTime,f.expirationTime)}}},kt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f=!1){if(d.eq(le))throw new Error("amountSpecified must not be 0");if(y||(y=s?nt.add(Re):it.sub(Re)),s){if(y.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let g=d.gt(le),b={amountSpecifiedRemaining:d,amountCalculated:le,sqrtPriceX64:m,tick:c>p?Math.min(p+Z.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},h=p,k=n[p],T=0,x=!s&&k.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(le)&&!b.sqrtPriceX64.eq(y);){T>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let K=O.nextInitTick(k,b.tick,l,s,x),N=K||null,_=null;if(!(N!=null&&N.liquidityGross.gtn(0))){let L=be.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},h,s);if(!L.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}h=L.nextStartIndex;let{publicKey:oe}=ne(e,t,h);_=oe,k=n[h];try{N=O.firstInitializedTick(k,s)}catch{throw Error("not found next tick info")}}P.tickNext=N.tick,P.initialized=N.liquidityGross.gtn(0),p!==h&&_&&(b.accounts.push(_),p=h),P.tickNext<Te?P.tickNext=Te:P.tickNext>xe&&(P.tickNext=xe),P.sqrtPriceNextX64=X.getSqrtPriceX64FromTick(P.tickNext);let D;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?D=y:D=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=kt.swapStepCompute(b.sqrtPriceX64,D,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),g?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let L=N.liquidityNet;s&&(L=L.mul(tt)),b.liquidity=J.addDelta(b.liquidity,L)}x=P.tickNext!=b.tick&&!s&&k.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let L=X.getTickFromSqrtPriceX64(b.sqrtPriceX64);x=L!=b.tick&&!s&&k.startTickIndex===L,b.tick=L}++T}try{let{nextStartIndex:P,isExist:K}=Z.nextInitializedTickArray(b.tick,l,s,r,o);K&&p!==P&&(b.accounts.push(ne(e,t,P).publicKey),p=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:le,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=r.gte(le);if(u){let l=U.mulDivFloor(r,Cn.sub(new H(o.toString())),Cn);s.amountIn=a?J.getTokenAmountAFromLiquidity(t,e,n,!0):J.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=X.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?J.getTokenAmountBFromLiquidity(t,e,n,!1):J.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=X.getNextSqrtPriceX64FromOutput(e,n,r.mul(tt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=J.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=J.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:J.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:J.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(tt))&&(s.amountOut=r.mul(tt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=U.mulDivCeil(s.amountIn,new H(o),Cn.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var fe=60,At=512,O=class{static getTickArrayAddressByTick(e,t,n,r){let o=O.getTickArrayStartIndexByTick(n,r),{publicKey:s}=ne(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=O.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=fe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=Z.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)*Z.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*fe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*fe,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*fe:e+t*fe}static mergeTickArrayBitmap(e){let t=new Na(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*fe));return[...O.searchLowBitFromStart(e,t,s-1,o,n),...O.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return O.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=O.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=ne(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>O.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=Z.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>O.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=Z.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Te||e>xe}static nextInitTick(e,t,n,r,o){if(Z.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<fe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=fe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<fe;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=X.getSqrtPriceX64FromTick(t),o=X.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new R(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new R(1).div(t),o=ht.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=X.getSqrtPriceX64FromTick(o),a=X.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new R(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=X.getSqrtPriceX64FromTick(t),o=X.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new R(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new R(1).div(t),o=ht.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=X.getSqrtPriceX64FromTick(o),a=X.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new R(1).div(a)}}};var Ra=V([Pe(8),j("bump"),Ct("index"),C(""),Me("protocolFeeRate"),Me("tradeFeeRate"),Ct("tickSpacing"),re(A(),8,"")]),La=V([Me("blockTimestamp"),q("sqrtPriceX64"),q("cumulativeTimePriceX64"),re(q(),1,"")]),Ti=V([Pe(8),je("initialized"),C("poolId"),re(La,1e3,"observations"),re(q(),5,"")]),Oa=V([j("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),q("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),C("tokenMint"),C("tokenVault"),C("creator"),q("rewardGrowthGlobalX64")]),Rt=V([Pe(8),j("bump"),C("ammConfig"),C("creator"),C("mintA"),C("mintB"),C("vaultA"),C("vaultB"),C("observationId"),j("mintDecimalsA"),j("mintDecimalsB"),Ct("tickSpacing"),q("liquidity"),q("sqrtPriceX64"),ke("tickCurrent"),Ct("observationIndex"),Ct("observationUpdateDuration"),q("feeGrowthGlobalX64A"),q("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),q("swapInAmountTokenA"),q("swapOutAmountTokenB"),q("swapInAmountTokenB"),q("swapOutAmountTokenA"),j("status"),re(j(),7,""),re(Oa,3,"rewardInfos"),re(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),re(A(),15*4-3,"padding")]),Ma=V([q("growthInsideLastX64"),A("rewardAmountOwed")]),wi=V([Pe(8),j("bump"),C("nftMint"),C("poolId"),ke("tickLower"),ke("tickUpper"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),re(Ma,3,"rewardInfos"),re(A(),8,"")]),Ob=V([Pe(8),j("bump"),C("poolId"),ke("tickLowerIndex"),ke("tickUpperIndex"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),re(q(),3,"rewardGrowthInside"),re(A(),8,"")]),Ea=V([ke("tick"),xr("liquidityNet"),q("liquidityGross"),q("feeGrowthOutsideX64A"),q("feeGrowthOutsideX64B"),re(q(),3,"rewardGrowthsOutsideX64"),re(Me(),13,"")]),Zt=V([Pe(8),C("poolId"),ke("startTickIndex"),re(Ea,fe,"ticks"),j("initializedTickCount"),re(j(),115,"")]),Fa=V([Pe(329),re(C(),100,"whitelistMints")]),jr=V([Pe(8),C("poolId"),re(re(A(),8),hi,"positiveTickArrayBitmap"),re(re(A(),8),hi,"negativeTickArrayBitmap")]);import{PublicKey as Jb}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as he,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as Zr}from"@solana/spl-token";import{PublicKey as I,TransactionInstruction as qe,SystemProgram as Lt,Keypair as xi}from"@solana/web3.js";import Jr from"bn.js";var $r=ae("Raydium_Clmm"),Ge={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},en=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=V([q("sqrtPriceX64"),A("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},b);let h=Buffer.from([...Ge.createPool,...b]);return new qe({keys:g,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=xn({fromPublicKey:r,programId:n}),[d,p]=[new I(o.address),new I(s.address)],y=[Lt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ti.span),space:Ti.span,programId:n})],{publicKey:f}=qr(n,a,d,p),{publicKey:g}=Ai(n,f,d),{publicKey:b}=Ai(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,g,new I(o.programId||he),p,b,new I(s.programId||he),Ne(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[te.CreateAccount,te.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h,k,T,x,P,K,N,_,D){let L=V([ke("tickLowerIndex"),ke("tickUpperIndex"),ke("tickArrayLowerStartIndex"),ke("tickArrayUpperStartIndex"),q("liquidity"),A("amountMaxA"),A("amountMaxB"),je("withMetadata"),j("optionBaseFlag"),je("baseFlag")]),oe=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],G=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:Bt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...oe],ye=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:x,liquidity:P,amountMaxA:K,amountMaxB:N,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},ye);let Y=Buffer.from([...Ge.openPosition,...ye]);return new qe({keys:G,programId:e,data:Y})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new I(e.programId),new I(e.id)],y;if(l)y=new I((await l(1))[0]);else{let N=xi.generate();m.push(N),y=N.publicKey}let f=O.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=ne(d,p,f),{publicKey:h}=ne(d,p,g),{publicKey:k}=Qe(n.wallet,y,he),{publicKey:T}=Bn(y),{publicKey:x}=De(d,y),{publicKey:P}=gt(d,p,r,o),K=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,k,T,P,b,h,x,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,g,s,a,u,c);return{signers:m,instructions:[K],instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:k,metadataAccount:T,personalPosition:x,protocolPosition:P}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new I(e.programId),new I(e.id)],y;if(l)y=new I((await l(1))[0]);else{let N=xi.generate();m.push(N),y=N.publicKey}let f=O.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=ne(d,p,f),{publicKey:h}=ne(d,p,g),{publicKey:k}=Qe(n.wallet,y,he),{publicKey:T}=Bn(y),{publicKey:x}=De(d,y),{publicKey:P}=gt(d,p,r,o),K=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,k,T,P,b,h,x,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,g,c,s,a,u,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:k,metadataAccount:T,personalPosition:x,protocolPosition:P},instructions:[K],signers:m,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h,k,T,x,P,K,N,_,D){let L=V([ke("tickLowerIndex"),ke("tickUpperIndex"),ke("tickArrayLowerStartIndex"),ke("tickArrayUpperStartIndex"),q("liquidity"),A("amountMaxA"),A("amountMaxB"),je("withMetadata"),j("optionBaseFlag"),je("baseFlag")]),oe=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],G=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:Bt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...oe],ye=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:x,liquidity:new Jr(0),amountMaxA:K==="MintA"?N:_,amountMaxB:K==="MintA"?_:N,withMetadata:P==="create",baseFlag:K==="MintA",optionBaseFlag:1},ye);let Y=Buffer.from([...Ge.openPosition,...ye]);return new qe({keys:G,programId:e,data:Y})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new I((await l(1))[0]);else{let N=xi.generate();d.push(N),m=N.publicKey}let[p,y]=[new I(e.programId),new I(e.id)],f=O.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=ne(p,y,f),{publicKey:h}=ne(p,y,g),{publicKey:k}=Qe(n.wallet,m,he),{publicKey:T}=Bn(m),{publicKey:x}=De(p,m),{publicKey:P}=gt(p,y,r,o),K=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,k,T,P,b,h,x,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),r,o,f,g,s,a,u,c,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:k,metadataAccount:T,personalPosition:x,protocolPosition:P},instructions:[K],signers:d,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=V([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Ge.closePosition,...u]);return new qe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new I(e.programId),{publicKey:s}=Qe(n.wallet,r.nftMint,he),{publicKey:a}=De(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[te.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h){let k=V([q("liquidity"),A("amountMaxA"),A("amountMaxB"),j("optionBaseFlag"),je("baseFlag")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],P=Buffer.alloc(k.span);k.encode({liquidity:f,amountMaxA:g,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let K=Buffer.from([...Ge.increaseLiquidity,...P]);return new qe({keys:x,programId:e,data:K})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new I(e.programId),new I(e.id)],l=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ne(u,c,l),{publicKey:p}=ne(u,c,m),{publicKey:y}=Qe(r.wallet,n.nftMint,he),{publicKey:f}=De(u,n.nftMint),{publicKey:g}=gt(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,g,d,p,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[b],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new I(e.programId),new I(e.id)],l=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ne(u,c,l),{publicKey:p}=ne(u,c,m),{publicKey:y}=Qe(r.wallet,n.nftMint,he),{publicKey:f}=De(u,n.nftMint),{publicKey:g}=gt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,g,d,p,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0)],signers:[],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h){let k=V([q("liquidity"),A("amountMaxA"),A("amountMaxB"),j("optionBaseFlag"),je("baseFlag")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],P=Buffer.alloc(k.span);k.encode({liquidity:new Jr(0),amountMaxA:f==="MintA"?g:b,amountMaxB:f==="MintA"?b:g,baseFlag:f==="MintA",optionBaseFlag:1},P);let K=Buffer.from([...Ge.increaseLiquidity,...P]);return new qe({keys:x,programId:e,data:K})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h,k){let T=V([q("liquidity"),A("amountMinA"),A("amountMinB")]),x=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...x],K=Buffer.alloc(T.span);T.encode({liquidity:g,amountMinA:b,amountMinB:h},K);let N=Buffer.from([...Ge.decreaseLiquidity,...K]);return new qe({keys:P,programId:e,data:N})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new I(e.programId),new I(e.id)],m=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ne(c,l,m),{publicKey:y}=ne(c,l,d),{publicKey:f}=Qe(r.wallet,n.nftMint,u),{publicKey:g}=De(c,n.nftMint),{publicKey:b}=gt(c,l,n.tickLower,n.tickUpper),h=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)h.push({poolRewardVault:new I(t.rewardInfos[T].vault),ownerRewardVault:r.rewardAccounts[T],rewardMint:new I(e.rewardDefaultInfos[T].mint.address)});let k=[];return k.push(this.decreaseLiquidityInstruction(c,r.wallet,f,g,l,b,p,y,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),h,o,s,a,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:b},signers:[],instructions:k,instructionTypes:[te.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b){let h=V([A("amount"),A("otherAmountThreshold"),q("sqrtPriceLimitX64"),je("isBaseInput")]),k=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(K=>({pubkey:K,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},x);let P=Buffer.from([...Ge.swap,...x]);return new qe({keys:T,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new I(e.programId),new I(e.id)],[d,p]=[new I(t.vault.A),new I(t.vault.B)],[y,f]=[new I(e.mintA.address),new I(e.mintB.address)],g=e.mintA.address===o.toString(),b=[this.swapInstruction(l,r.wallet,m,new I(e.config.id),g?r.tokenAccountA:r.tokenAccountB,g?r.tokenAccountB:r.tokenAccountA,g?d:p,g?p:d,g?y:f,g?f:y,c,n,s,a,u,!0,Ne(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[te.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=V([A("openTime"),A("endTime"),q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:se(l),endTime:se(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...Ge.initReward,...f]);return new qe({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new I(e.programId),new I(e.id)],a=Gr(o,s,r.mint).publicKey,u=Sn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new I(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[te.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=V([j("rewardIndex"),q("emissionsPerSecondX64"),A("openTime"),A("endTime")]),y=[{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:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:se(l),endTime:se(m)},f);let g=Buffer.from([...Ge.setRewardEmissions,...f]);return new qe({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new I(e.programId),new I(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new I(t.rewardInfos[d].vault),c=new I(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&$r.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Sn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new I(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[te.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=V([j("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ge.collectReward,...l]);return new qe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new I(e.programId),new I(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new I(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&$r.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[te.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new I(e.programId),new I(e.id)],[m,d]=[new I(t.vault.A),new I(t.vault.B)],[p,y]=[new I(e.mintA.address),new I(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new I(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[te.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import by from"bn.js";import{TOKEN_PROGRAM_ID as gy}from"@solana/spl-token";import On from"bn.js";var Wy=V([Me("mintAuthorityOption"),C("mintAuthority"),A("supply"),j("decimals"),j("isInitialized"),Me("freezeAuthorityOption"),C("freezeAuthority")]);import{TOKEN_PROGRAM_ID as va,TOKEN_2022_PROGRAM_ID as Ii}from"@solana/spl-token";import{PublicKey as Nn,TransactionInstruction as Va,SystemProgram as jy}from"@solana/web3.js";import Bi from"bn.js";function eo(i,e,t,n,r,o){if(i.version===4&&i.pooltype.includes("StablePool")){let s=He(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Nn("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.version===6){let s=i,a=He(e),u=s.mintA.address===t;return[{pubkey:new Nn(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Ii)||a.mintB.programId.equals(Ii)?[{pubkey:Ii,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ne(new Nn(String(i.programId)),new Nn(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=He(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function _a(i,e,t,n,r,o,s,a,u,c,l,m,d,p){let y=V([j("instruction"),A("amountIn"),A("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:va,isSigner:!1,isWritable:!1}];f.push(...eo(a,c,o,t,n,p[0])),f.push(...eo(u,l,s,n,r,p[1]));let g=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},g),new Va({keys:f,programId:i,data:g})}function to({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=He(m),p=t.equals(d.mintA.address)?nt.add(Re):it.sub(Re);return en.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.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 Bi(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else{let m=n.poolKey[0];return{signers:[],instructions:[Fr({poolKeys:m,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((u=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?u:new Bi(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?te.AmmV5SwapBaseIn:te.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[_a(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new Bi(0)),n.remainingAccounts)],instructionTypes:[te.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var no={[$n.toBase58()]:3},io={3:$n};var Si=V([Pe(5),Pe(8),C("ownAddress"),A("vaultSignerNonce"),C("baseMint"),C("quoteMint"),C("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),C("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),C("requestQueue"),C("eventQueue"),C("bids"),C("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),Pe(7)]),ro={3:Si};import{PublicKey as oo}from"@solana/web3.js";var Rn=ae("Serum"),Ln=class{static getProgramId(e){let t=io[e];return t||Rn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=no[t];return n||Rn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=ro[e];return t||Rn.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=oo.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return Rn.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:oo.default,nonce:r}}};var ot=new On(0),Ci=class extends Kt{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 ci({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let u=se(t);for(let c=0;c<o.length;c++)u.gte(o[c].amount)?(s.addInstruction({instructions:[Ht({tokenAccount:o[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(o[c].amount)):(s.addInstruction({instructions:[Ht({tokenAccount:o[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),li({destination:a.addresses.newAccount,source:o[c].publicKey,amount:u,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 ci({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:[li({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ht({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),o.versionBuild({txVersion:n!=null?n:1})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts(gr,{dataSlice:{offset:Rr.offsetOf("baseMint"),length:64}}),t=V([C("baseMint"),C("quoteMint")]),n=e.map(a=>({id:a.pubkey,version:4,mintA:t.decode(a.account.data).baseMint,mintB:t.decode(a.account.data).quoteMint})),r=V([C("mintA"),C("mintB")]);return{clmmPools:(await this.scope.connection.getProgramAccounts(Ar,{filters:[{dataSize:Rt.span}],dataSlice:{offset:Rt.offsetOf("mintA"),length:64}})).map(a=>{let u=r.decode(a.account.data);return{id:a.pubkey,version:6,mintA:u.mintA,mintB:u.mintB}}),ammPools:n}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r}){e=e.toString()===wt.default.toString()?ve:e,t=t.toString()===wt.default.toString()?ve:t;let o={},s={},a=[],u={};for(let l of n!=null?n:[]){if((l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),s[l.id.toString()]=l),l.mintA.equals(e)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintB.equals(e)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintA.equals(t)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].out.push(l)}if(l.mintB.equals(t)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].out.push(l)}}let c=[];for(let l of r)(l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),o[l.id.toBase58()]=l,c.push(l)),l.mintA.equals(e)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].in.push(l)),l.mintB.equals(e)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].in.push(l)),l.mintA.equals(t)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].out.push(l)),l.mintB.equals(t)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].out.push(l));for(let l of Object.keys(u)){if(u[l].in.length===1&&u[l].out.length===1&&u[l].in[0].id.equals(u[l].out[0].id)){delete u[l];continue}if(u[l].in.length===0||u[l].out.length===0){delete u[l];continue}let m=u[l];for(let d of m.in)for(let p of m.out)d.version===6&&s[d.id.toString()]===void 0?s[d.id.toString()]=d:d.version!==6&&o[d.id.toString()]===void 0&&(o[d.id.toString()]=d),p.version===6&&s[p.id.toString()]===void 0?s[p.id.toString()]=p:p.version!==6&&o[p.id.toString()]===void 0&&(o[p.id.toString()]=p)}return{directPath:a,addLiquidityPools:c,routePathDict:u,needSimulate:Object.values(o),needTickArray:Object.values(s)}}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:u}){if(e.version===6){let{allTrade:c,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:g,fee:b,remainingAccounts:h,executionPriceX64:k}=be.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new R(y.toFixed()),executionPrice:new R(f.toFixed()),priceImpact:new R(g.toFixed()),fee:[b],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[k],expirationTime:Ye(l.expirationTime,p)}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:c,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:u.raw,mintIn:u.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:pi(Q(v({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:pi(Q(v({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new ce(u.token,y)],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]}}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var b,h,k,T,x,P,K,N,_;let m=l===void 0?new On(0):e.raw.mul(new On(l.feeBps.toNumber())).div(new On(1e4)),d=e.raw.sub(m),p=new ce(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=Q(v({},t),{address:Xe(t.address).toString()}),g=[];for(let D of n)try{g.push(Q(v({},this.computeAmountOut({itemPool:D,tickCache:s,simulateCache:o,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(L){this.logDebug("direct error",D.version,D.id.toString(),L.message)}this.logDebug("direct done");for(let[D,L]of Object.entries(r)){let oe={chainId:101,address:D,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},G=L.in.map(Y=>{try{return{pool:Y,data:this.computeAmountOut({itemPool:Y,tickCache:s,simulateCache:o,chainTime:u,epochInfo:c,slippage:a,outputToken:oe,amountIn:p})}}catch(E){this.logDebug("route in error",Y.version,Y.id.toString(),E.message);return}}).sort((Y,E)=>{var Ni,Ri,Li,Oi;let tn=Y===void 0?ot:Y.data.amountOut.amount.raw.sub((Ri=(Ni=Y.data.amountOut.fee)==null?void 0:Ni.raw)!=null?Ri:ot),so=E===void 0?ot:E.data.amountOut.amount.raw.sub((Oi=(Li=E.data.amountOut.fee)==null?void 0:Li.raw)!=null?Oi:ot);return tn.lt(so)?1:-1})[0];if(G===void 0)continue;let ye=new ce(Lr(oe),G.data.amountOut.amount.raw.sub((h=(b=G.data.amountOut.fee)==null?void 0:b.raw)!=null?h:ot));for(let Y of L.out)try{let E=this.computeAmountOut({itemPool:Y,tickCache:s,simulateCache:o,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:ye});g.push(Q(v({},E),{allTrade:!!(G.data.allTrade&&E.allTrade),amountIn:G.data.amountIn,amountOut:E.amountOut,minAmountOut:E.minAmountOut,currentPrice:void 0,executionPrice:new R(new Be({baseToken:G.data.amountIn.amount.token,denominator:G.data.amountIn.amount.raw,quoteToken:E.amountOut.amount.token,numerator:E.amountOut.amount.raw.sub((T=(k=E.amountOut.fee)==null?void 0:k.raw)!=null?T:ot)}).toFixed()),priceImpact:new R(G.data.priceImpact.add(E.priceImpact).toFixed()),fee:[G.data.fee[0],E.fee[0]],routeType:"route",poolInfoList:[G.pool,Y],remainingAccounts:[G.data.remainingAccounts[0],E.remainingAccounts[0]],minMiddleAmountFee:(x=E.amountOut.fee)!=null&&x.raw?new ce(G.data.amountOut.amount.token,((K=(P=G.data.amountOut.fee)==null?void 0:P.raw)!=null?K:ot).add((_=(N=E.amountOut.fee)==null?void 0:N.raw)!=null?_:ot)):void 0,middleToken:G.data.amountOut.amount.token,poolReady:G.data.poolReady&&E.poolReady,poolType:[G.data.poolType,E.poolType],feeConfig:y,expirationTime:Ye(G.data.expirationTime,E.expirationTime)}))}catch(E){this.logDebug("route out error",Y.version,Y.id.toString(),E.message)}}return g.filter(D=>D.allTrade).sort((D,L)=>D.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(ot)?-1:1)}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(ve),m=c.amount.token.mint.equals(ve),d=u.amount.token.mint,p=u.amount.token.isToken2022?Ki:Oe,y=c.amount.token.mint,f=c.amount.token.isToken2022?Ki:Oe,{account:g,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&a.addInstruction(b),g===void 0)throw Error("input account check error");let{account:h,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:y,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});k&&a.addInstruction(k);let T;if(e.routeType==="route"){let K=e.middleToken,{account:N,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.isToken2022?Ki:Oe,mint:K.mint,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:n.checkCreateATAOwner});T=N,_&&a.addInstruction(_)}let x=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=to({routeProgram:o,inputMint:d,swapInfo:Q(v({},e),{poolInfo:[...e.poolInfoList],poolKey:x}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:T,destinationToken:h}});return e.feeConfig!==void 0&&a.addInstruction({instructions:[Da(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[te.TransferAmount]}),a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(d=>[d.mintA.toBase58(),d.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(d=>d.id)),s=Vr(o);Object.values(s).forEach(d=>{r.delete(d.mintA.address),r.delete(d.mintB.address)}),console.log("fetching mints info, total: ",r.size);let a=await fr({connection:this.scope.connection,mints:Array.from(r).map(d=>new wt(d))});Object.values(s).forEach(d=>{a[d.mintA.address]={address:new wt(d.mintA.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:d.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},a[d.mintB.address]={address:new wt(d.mintB.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:d.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching clmm pools info, total:",e.needTickArray.length);let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(d=>d.id)}),{computeClmmPoolInfo:c,computePoolTickData:l}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:u,mintInfos:a}),m=Object.keys(e.routePathDict).reduce((d,p)=>Q(v({},d),{[p]:Q(v({},e.routePathDict[p]),{mintProgram:a[p].programId,mDecimals:a[p].decimals,in:e.routePathDict[p].in.map(y=>s[y.id.toBase58()]||c[y.id.toBase58()]),out:e.routePathDict[p].out.map(y=>s[y.id.toBase58()]||c[y.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:u,computeClmmPoolInfo:c,computePoolTickData:l,routePathDict:m}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(r.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(c).forEach(l=>{t[l]=c[l]})}if(new Set(e.filter(c=>c.version===4&&!n[c.id.toString()]).map(c=>c.id.toString())).size>0){let c=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(c).forEach(l=>{n[l]=c[l]})}let s=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};s.size>0&&(await yt(this.scope.connection,Array.from(s).map(l=>({pubkey:new wt(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=Si.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Ln.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let u=[];return e.forEach(c=>{if(c.version===6){let l=t[c.id.toString()],m={programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:Q(v({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else{let l=n[c.id.toString()],m=v({programId:c.programId,id:c.id,mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:vr({programId:new wt(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}}),u}};export{Ci as default};
1
+ var ao=Object.defineProperty,uo=Object.defineProperties;var co=Object.getOwnPropertyDescriptors;var nn=Object.getOwnPropertySymbols;var Ei=Object.prototype.hasOwnProperty,Fi=Object.prototype.propertyIsEnumerable;var Mi=(i,e,t)=>e in i?ao(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))Ei.call(e,t)&&Mi(i,t,e[t]);if(nn)for(var t of nn(e))Fi.call(e,t)&&Mi(i,t,e[t]);return i},Q=(i,e)=>uo(i,co(e));var ft=(i,e)=>{var t={};for(var n in i)Ei.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&nn)for(var n of nn(i))e.indexOf(n)<0&&Fi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as wt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oe,TOKEN_2022_PROGRAM_ID as Ki,createTransferInstruction as Da}from"@solana/spl-token";import{get as vi,set as lo}from"lodash";import _i from"dayjs";import mo from"dayjs/plugin/utc";_i.extend(mo);var Mn=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 _i().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Vi={},po={};function ae(i){let e=vi(Vi,i);if(!e){let t=vi(po,i);e=new Mn({name:i,logLevel:t}),lo(Vi,i,e)}return e}import{PublicKey as Ts}from"@solana/web3.js";import xs from"bn.js";import hs from"big.js";import fn from"bn.js";import Se from"bn.js";var Pt=9e15,ct=1e9,En="0123456789abcdef",on="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",sn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Fn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Pt,maxE:Pt,crypto:!1},Gi,$e,W=!0,un="[DecimalError] ",ut=un+"Invalid argument: ",Ui=un+"Precision limit exceeded",Xi=un+"crypto unavailable",zi="[object Decimal]",we=Math.floor,de=Math.pow,fo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,bo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,yo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Fe=1e7,F=7,go=9007199254740991,ko=on.length-1,vn=sn.length-1,w={toStringTag:zi};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),M(i)};w.ceil=function(){return M(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(ut+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+F,n.rounding=1,t=Ao(n,Ji(n,t)),n.precision=i,n.rounding=e,M($e==2||$e==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(W=!1,o=l.s*de(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ke(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=de(t,1/3),i=we((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ie(c.plus(l).times(a),c.plus(u),s+2,1),ke(a.d).slice(0,s)===(t=ke(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(M(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")&&(M(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return W=!0,M(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/F))*F,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return ie(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return M(ie(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return M(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/ln(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Tt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return M(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=Tt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/ln(5,i)),r=Tt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,M(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,ie(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ee(t,r,o):new t(0):new t(NaN):e.isZero()?Ee(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Ee(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,W=!1,t=t.times(t).minus(1).sqrt().plus(t),W=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,W=!1,t=t.times(t).plus(1).sqrt().plus(t),W=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?M(new o(r),i,e,!0):(o.precision=t=n-r.e,r=ie(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Ee(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=vn)return s=Ee(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=vn)return s=Ee(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/F+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(W=!1,e=Math.ceil(a/F),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),W=!0,M(s,l.precision=m,l.rounding=d,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/F)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=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=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(W=!1,a=m+p,s=at(c,a),n=e?an(l,a+10):at(i,a),u=ie(s,n,a,1),Ot(u.d,r=m,d))do if(a+=10,s=at(c,a),n=e?an(l,a+10):at(i,a),u=ie(s,n,a,1),!o){+ke(u.d).slice(r+1,r+15)+1==1e14&&(u=M(u,m+1,0));break}while(Ot(u.d,r+=10,d));return W=!0,M(u,m,d)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return W?M(i,a,u):i}if(t=we(i.e/F),l=we(p.e/F),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/F),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=Fe-1;--c[r],c[n]+=Fe}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=cn(c,t),W?M(i,a,u):i):new y(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?M(new n(t),n.precision,n.rounding):(W=!1,n.modulo==9?(e=ie(t,i.abs(),0,3,1),e.s*=i.s):e=ie(t,i,0,n.modulo,1),e=e.times(i),W=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return Vn(this)};w.naturalLogarithm=w.ln=function(){return at(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,M(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),W?M(i,a,u):i;if(o=we(m.e/F),n=we(i.e/F),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/F),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Fe|0,c[r]%=Fe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=cn(c,n),W?M(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(ut+i);return t.d?(e=Qi(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return M(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+F,n.rounding=1,t=wo(n,Ji(n,t)),n.precision=i,n.rounding=e,M($e>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(W=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=ke(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ie(s,o,t+2,1)).times(.5),ke(o.d).slice(0,t)===(e=ke(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(M(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(M(n,u+1,1),i=!n.times(n).eq(s));break}return W=!0,M(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=ie(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,M($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=we(l.e/F)+we(i.e/F),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%Fe|0,e=a/Fe|0;o[r]=(o[r]+e)%Fe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=cn(o,t),W?M(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return Dn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ie(i,0,ct),e===void 0?e=n.rounding:Ie(e,0,8),M(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,!0):(Ie(i,0,ct),e===void 0?e=r.rounding:Ie(e,0,8),n=M(new r(n),i+1,e),t=Ue(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Ue(r):(Ie(i,0,ct),e===void 0?e=o.rounding:Ie(e,0,8),n=M(new o(r),i+r.e+1,e),t=Ue(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Qi(y)-p.e-1,s=o%F,e.d[0]=de(10,s<0?F+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(ut+a);i=a.gt(e)?o>0?e:c:a}for(W=!1,a=new f(ke(y)),l=f.precision,f.precision=o=y.length*F*2;m=ie(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=ie(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=ie(c,n,o,1).minus(p).abs().cmp(ie(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,W=!0,d};w.toHexadecimal=w.toHex=function(i,e){return Dn(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ie(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(W=!1,t=ie(t,i,0,e,1).times(i),W=!0,M(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return Dn(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(de(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return M(a,n,o);if(e=we(i.e/F),e>=i.d.length-1&&(t=c<0?-c:c)<=go)return r=Yi(u,a,t,n),i.s<0?new u(1).div(r):M(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=de(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+ke(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(W=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=Vn(i.times(at(a,n+t)),n),r.d&&(r=M(r,n+5,1),Ot(r.d,n,o)&&(e=n+10,r=M(Vn(i.times(at(a,e+t)),e),e+5,1),+ke(r.d).slice(n+1,n+15)+1==1e14&&(r=M(r,n+1,0)))),r.s=s,W=!0,u.rounding=o,M(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Ue(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ie(i,1,ct),e===void 0?e=r.rounding:Ie(e,0,8),n=M(new r(n),i,e),t=Ue(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ie(i,1,ct),e===void 0?e=n.rounding:Ie(e,0,8)),M(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return M(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=Ue(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function ke(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=F-n.length,t&&(o+=st(t)),o+=n;s=i[e],n=s+"",t=F-n.length,t&&(o+=st(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(i,e,t){if(i!==~~i||i<e||i>t)throw Error(ut+i)}function Ot(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=F,r=0):(r=Math.ceil((e+1)/F),e%=F),o=de(10,F-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==de(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==de(10,e-3)-1,s}function rn(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]+=En.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 Ao(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/ln(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Tt(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 ie=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,g,b,h,A,T,x,P,K,N,_,D,L,oe,G=n.constructor,ye=n.s==r.s?1:-1,Y=n.d,E=r.d;if(!Y||!Y[0]||!E||!E[0])return new G(!n.s||!r.s||(Y?E&&Y[0]==E[0]:!E)?NaN:Y&&Y[0]==0||!E?ye*0:ye/0);for(u?(p=1,l=n.e-r.e):(u=Fe,p=F,l=we(n.e/p)-we(r.e/p)),L=E.length,_=Y.length,b=new G(ye),h=b.d=[],m=0;E[m]==(Y[m]||0);m++);if(E[m]>(Y[m]||0)&&l--,o==null?(P=o=G.precision,s=G.rounding):a?P=o+(n.e-r.e)+1:P=o,P<0)h.push(1),y=!0;else{if(P=P/p+2|0,m=0,L==1){for(d=0,E=E[0],P++;(m<_||d)&&P--;m++)K=d*u+(Y[m]||0),h[m]=K/E|0,d=K%E|0;y=d||m<_}else{for(d=u/(E[0]+1)|0,d>1&&(E=i(E,d,u),Y=i(Y,d,u),L=E.length,_=Y.length),N=L,A=Y.slice(0,L),T=A.length;T<L;)A[T++]=0;oe=E.slice(),oe.unshift(0),D=E[0],E[1]>=u/2&&++D;do d=0,c=e(E,A,L,T),c<0?(x=A[0],L!=T&&(x=x*u+(A[1]||0)),d=x/D|0,d>1?(d>=u&&(d=u-1),f=i(E,d,u),g=f.length,T=A.length,c=e(f,A,g,T),c==1&&(d--,t(f,L<g?oe:E,g,u))):(d==0&&(c=d=1),f=E.slice()),g=f.length,g<T&&f.unshift(0),t(A,f,T,u),c==-1&&(T=A.length,c=e(E,A,L,T),c<1&&(d++,t(A,L<T?oe:E,T,u))),T=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[T++]=Y[N]||0:(A=[Y[N]],T=1);while((N++<_||A[0]!==void 0)&&P--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)b.e=l,Gi=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;b.e=m+l*p-1,M(b,a?o+b.e+1:o,s,y)}return b}}();function M(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=F,s=e,l=m[d=0],u=l/de(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/F),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=F,s=o-F+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=F,s=o-F+r,u=s<0?0:l/de(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%de(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/de(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=de(10,(F-e%F)%F),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=de(10,F-o),m[d]=s>0?(l/de(10,r-s)%de(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Fe&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Fe)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return W&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function Ue(i,e,t){if(!i.isFinite())return Zi(i);var n,r=i.e,o=ke(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 cn(i,e){var t=i[0];for(e*=F;t>=10;t/=10)e++;return e}function an(i,e,t){if(e>ko)throw W=!0,t&&(i.precision=t),Error(Ui);return M(new i(on),e,1,!0)}function Ee(i,e,t){if(e>vn)throw Error(Ui);return M(new i(sn),e,t,!0)}function Qi(i){var e=i.length-1,t=e*F+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 Yi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/F+4);for(W=!1;;){if(t%2&&(o=o.times(e),Wi(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Wi(e.d,s)}return W=!0,o}function Di(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 Vn(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(W=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(de(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=M(o.times(i),u,1),t=t.times(++l),a=s.plus(ie(o,t,u,1)),ke(a.d).slice(0,u)===ke(s.d).slice(0,u)){for(r=m;r--;)s=M(s.times(s),u,1);if(e==null)if(c<3&&Ot(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return M(s,d.precision=y,p,W=!0);else return d.precision=y,s}s=a}}function at(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,g=f.d,b=f.constructor,h=b.rounding,A=b.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new b(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(W=!1,l=A):l=e,b.precision=l+=y,t=ke(g),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=ke(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return c=an(b,l+2,A).times(o+""),f=at(new b(n+"."+t.slice(1)),l-y).plus(c),b.precision=A,e==null?M(f,A,h,W=!0):f;for(m=f,u=s=f=ie(f.minus(1),f.plus(1),l,1),d=M(f.times(f),l,1),r=3;;){if(s=M(s.times(d),l,1),c=u.plus(ie(s,new b(r),l,1)),ke(c.d).slice(0,l)===ke(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(an(b,l+2,A).times(o+""))),u=ie(u,new b(p),l,1),e==null)if(Ot(u.d,l-y,h,a))b.precision=l+=y,c=s=f=ie(m.minus(1),m.plus(1),l,1),d=M(f.times(f),l,1),r=a=1;else return M(u,b.precision=A,h,W=!0);else return b.precision=A,u;u=c,r+=2}}function Zi(i){return String(i.s*i.s/0)}function _n(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)%F,t<0&&(n+=F),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=F;n<r;)i.d.push(+e.slice(n,n+=F));e=e.slice(n),n=F-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),W&&(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 ho(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hi.test(e))return _n(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(bo.test(e))t=16,e=e.toLowerCase();else if(fo.test(e))t=2;else if(yo.test(e))t=8;else throw Error(ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Yi(n,new n(t),o,o*2)),c=rn(e,t,Fe),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=cn(c,l),i.d=c,W=!1,s&&(i=ie(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?de(2,u):Mt.pow(2,u))),W=!0,i)}function wo(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Tt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/ln(5,t)),e=Tt(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 Tt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/F);for(W=!1,u=t.times(t),a=new i(n);;){if(s=ie(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=ie(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return W=!0,s.d.length=m+1,s}function ln(i,e){for(var t=i;--e;)t*=i;return t}function Ji(i,e){var t,n=e.s<0,r=Ee(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $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=Di(t)?n?2:3:n?4:1,e;$e=Di(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Dn(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(Ie(t,1,ct),n===void 0?n=p.rounding:Ie(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Zi(i);else{for(l=Ue(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=rn(Ue(d),10,r),d.e=d.d.length),m=rn(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=ie(i,d,t,n,0,r),m=i.d,o=i.e,c=Gi),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=En.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=rn(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=En.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Wi(i,e){if(i.length>e)return i.length=e,!0}function Po(i){return new this(i).abs()}function To(i){return new this(i).acos()}function xo(i){return new this(i).acosh()}function Io(i,e){return new this(i).plus(e)}function Bo(i){return new this(i).asin()}function So(i){return new this(i).asinh()}function Ko(i){return new this(i).atan()}function Co(i){return new this(i).atanh()}function No(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Ee(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Ee(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Ee(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ie(i,e,o,1)),e=Ee(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(ie(i,e,o,1)),t}function Ro(i){return new this(i).cbrt()}function Lo(i){return M(i=new this(i),i.e+1,2)}function Oo(i,e,t){return new this(i).clamp(e,t)}function Mo(i){if(!i||typeof i!="object")throw Error(un+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,ct,"rounding",0,8,"toExpNeg",-Pt,0,"toExpPos",0,Pt,"maxE",0,Pt,"minE",-Pt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Fn[t]),(n=i[t])!==void 0)if(we(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]=Fn[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(Xi);else this[t]=!1;else throw Error(ut+t+": "+n);return this}function Eo(i){return new this(i).cos()}function Fo(i){return new this(i).cosh()}function $i(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,qi(o)){c.s=o.s,W?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;W?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return _n(c,o.toString())}else if(u!=="string")throw Error(ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hi.test(o)?_n(c,o):ho(c,o)}if(r.prototype=w,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Mo,r.clone=$i,r.isDecimal=qi,r.abs=Po,r.acos=To,r.acosh=xo,r.add=Io,r.asin=Bo,r.asinh=So,r.atan=Ko,r.atanh=Co,r.atan2=No,r.cbrt=Ro,r.ceil=Lo,r.clamp=Oo,r.cos=Eo,r.cosh=Fo,r.div=vo,r.exp=Vo,r.floor=_o,r.hypot=Do,r.ln=Wo,r.log=qo,r.log10=Uo,r.log2=Go,r.max=Xo,r.min=zo,r.mod=Ho,r.mul=Qo,r.pow=Yo,r.random=jo,r.round=Zo,r.sign=Jo,r.sin=$o,r.sinh=es,r.sqrt=ts,r.sub=ns,r.sum=is,r.tan=rs,r.tanh=os,r.trunc=ss,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 vo(i,e){return new this(i).div(e)}function Vo(i){return new this(i).exp()}function _o(i){return M(i=new this(i),i.e+1,3)}function Do(){var i,e,t=new this(0);for(W=!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 W=!0,new this(1/0);t=e}return W=!0,t.sqrt()}function qi(i){return i instanceof Mt||i&&i.toStringTag===zi||!1}function Wo(i){return new this(i).ln()}function qo(i,e){return new this(i).log(e)}function Go(i){return new this(i).log(2)}function Uo(i){return new this(i).log(10)}function Xo(){return ji(this,arguments,"lt")}function zo(){return ji(this,arguments,"gt")}function Ho(i,e){return new this(i).mod(e)}function Qo(i,e){return new this(i).mul(e)}function Yo(i,e){return new this(i).pow(e)}function jo(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ie(i,1,ct),n=Math.ceil(i/F),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(Xi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=F,n&&i&&(r=de(10,F-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-=F)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<F&&(t-=F-n)}return s.e=t,s.d=a,s}function Zo(i){return M(i=new this(i),i.e+1,this.rounding)}function Jo(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function $o(i){return new this(i).sin()}function es(i){return new this(i).sinh()}function ts(i){return new this(i).sqrt()}function ns(i,e){return new this(i).sub(e)}function is(){var i=0,e=arguments,t=new this(e[i]);for(W=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return W=!0,M(t,this.precision,this.rounding)}function rs(i){return new this(i).tan()}function os(i){return new this(i).tanh()}function ss(i){return M(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Mt=w.constructor=$i(Fn);on=new Mt(on);sn=new Mt(sn);var R=Mt;import{PublicKey as Un}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as as}from"@solana/spl-token";import{PublicKey as ue,SystemProgram as er,SYSVAR_RENT_PUBKEY as us}from"@solana/web3.js";function z({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var ja=[z({pubkey:as,isWritable:!1}),z({pubkey:er.programId,isWritable:!1}),z({pubkey:us,isWritable:!1})];function Wn({publicKey:i,transformSol:e}){let t=qn(i.toString());if(t instanceof ue)return e&&t.equals(Et)?ve:t;if(e&&t.toString()===Et.toBase58())return ve;if(typeof t=="string"){if(t===ue.default.toBase58())return ue.default;try{return new ue(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function qn(i){try{return new ue(i)}catch{return i}}var xt=new ue("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Za=new ue("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),It=new ue("SysvarRent111111111111111111111111111111111"),Ja=new ue("SysvarC1ock11111111111111111111111111111111"),Bt=new ue("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$a=new ue("Sysvar1nstructions1111111111111111111111111"),eu=er.programId,tu=new ue("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),nu=new ue("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),iu=new ue("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ru=new ue("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ou=new ue("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),su=new ue("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),au=new ue("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),uu=new ue("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),cu=new ue("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),lu=new ue("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),mu=new ue("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ve=new ue("So11111111111111111111111111111111111111112"),Et=ue.default;function Xe(i){return Wn({publicKey:i,transformSol:!0})}import{PublicKey as cs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tr}from"@solana/spl-token";var Gn={chainId:101,address:cs.default.toBase58(),programId:tr.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ze={chainId:101,address:"So11111111111111111111111111111111111111112",programId:tr.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 Xn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Et.toBase58()||e instanceof Un&&Et.equals(e)){this.decimals=ze.decimals,this.symbol=ze.symbol,this.name=ze.name,this.mint=new Un(ze.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?Un.default:Wn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ce=Xn;Ce.WSOL=new Xn(Q(v({},ze),{mint:ze.address}));import dn from"big.js";import ds from"bn.js";import ps from"decimal.js-light";import ls from"toformat";var ms=ls,Ft=ms;var mn=ae("module/fraction"),zn=Ft(dn),vt=Ft(ps),fs={[0]:vt.ROUND_DOWN,[1]:vt.ROUND_HALF_UP,[2]:vt.ROUND_UP},bs={[0]:dn.roundDown,[1]:dn.roundHalfUp,[2]:dn.roundUp},ee=class{constructor(e,t=new ds(1)){this.numerator=se(e),this.denominator=se(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ee(this.denominator,this.numerator)}add(e){let t=e instanceof ee?e:new ee(se(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.add(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ee?e:new ee(se(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.sub(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ee?e:new ee(se(e));return new ee(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ee?e:new ee(se(e));return new ee(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||mn.logWithError(`${e} is not an integer.`),e<=0&&mn.logWithError(`${e} is not positive.`),vt.set({precision:e+1,rounding:fs[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)||mn.logWithError(`${e} is not an integer.`),e<0&&mn.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 gs=ae("Raydium_price"),Be=class extends ee{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new ee(Hn(n.decimals),Hn(r.decimals))}get raw(){return new ee(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Be({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&gs.logWithError("mul token not equals");let n=super.mul(t);return new Be({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 Qn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},pn=Qn;pn.SOL=new Qn(Gn);import ks from"bn.js";var nr=new ee(new ks(100)),lt=class extends ee{toSignificant(e=5,t,n){return this.mul(nr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(nr).toFixed(e,t,n)}};var ir=new Se(0),As=new Se(1),ac=new Se(2),uc=new Se(3),cc=new Se(5),Yn=new Se(10),lc=new Se(100),mc=new Se(1e3),dc=new Se(1e4),rr=9007199254740991;function se(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Se)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Se(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=rr||i<=-rr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Se(String(i))):typeof i=="bigint"?new Se(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Se(0))}function Hn(i){return Yn.pow(se(i))}var ws=ae("Raydium_amount"),sr=Ft(hs);function Ps(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")):ws.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ce=class extends ee{constructor(t,n,r=!0,o){let s=new fn(0),a=Yn.pow(new fn(t.decimals));if(r)s=se(n);else{let u=new fn(0),c=new fn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Ps(n.toString(),t.decimals);u=se(l),c=se(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new 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 sr.DP=this.token.decimals,new sr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function or(i){return typeof i=="object"&&i!==null&&![Ce,ce,Ts,ee,xs,Be,lt].some(e=>typeof e=="object"&&i instanceof e)}function He(i){return typeof i=="string"?qn(i):Array.isArray(i)?i.map(e=>He(e)):or(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,He(t)])):i}import{PublicKey as Dt,sendAndConfirmTransaction as Wt,Transaction as qt,TransactionMessage as Gt,VersionedTransaction as Ut}from"@solana/web3.js";import Ms from"axios";var te={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 Is,ComputeBudgetProgram as ar,Transaction as cr,TransactionMessage as Bs,Keypair as lr,VersionedTransaction as mr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ss}from"@solana/spl-token";var ur=ae("Raydium_txUtil"),dr=1644;function bn(i){let e=[],t=[];return i.microLamports&&(e.push(ar.setComputeUnitPrice({microLamports:i.microLamports})),t.push(te.SetComputeUnitPrice)),i.units&&(e.push(ar.setComputeUnitLimit({units:i.units})),t.push(te.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function St(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 Ks(i,e){i.length<1&&ur.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&ur.logWithError(`no signers provided:, ${e.toString()}`);let t=new cr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<dr}catch{return!1}}function Ke(i,e){let[t,n]=Is.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Vt({instructions:i,payer:e,signers:t}){return Ks(i,[e,...t])}function _t({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=lr.generate().publicKey.toString()}){let o=new Bs({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new mr(o).serialize()).toString("base64").length<dr}catch{return!1}}var Cs=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function bt(i){let e=[];return i.forEach(t=>{t instanceof cr&&(t.recentBlockhash||(t.recentBlockhash=Ss.toBase58()),t.feePayer||(t.feePayer=lr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof mr&&(n=Cs(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as br,AddressLookupTableAccount as yn}from"@solana/web3.js";import{PublicKey as pr}from"@solana/web3.js";import{MINT_SIZE as Ns,TOKEN_PROGRAM_ID as Rs,getTransferFeeConfig as Ls,unpackMint as Os}from"@solana/spl-token";var jn=ae("Raydium_accountInfo_util");async function et(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=v({batchRequest:!1},t),s=Zn(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=i._buildArgs([m.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Zn(u,10);a=(await(await Promise.all(c.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&jn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:g,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&jn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new pr(g),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>i.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&jn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function yt(i,e,t){let n=await et(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>Q(v({},r),{accountInfo:n[o]}))}async function fr({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await yt(i,e.map(u=>({pubkey:Xe(u)})),t),r={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Ns){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=Os(u.pubkey,u.accountInfo,(o=u.accountInfo)==null?void 0:o.owner);r[u.pubkey.toString()]=Q(v({},c),{programId:((s=u.accountInfo)==null?void 0:s.owner)||Rs,feeConfig:(a=Ls(c))!=null?a:void 0})}return r[pr.default.toBase58()]=r[ve.toBase58()],r}async function Jn({connection:i,address:e}){let t=await et(i,[...new Set(e.map(r=>r.toString()))].map(r=>new br(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new yn({key:s,state:yn.deserialize(o.data)});n[s.toString()]=a,gn[s.toString()]=a}return n}var gn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new yn({key:new br("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:yn.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}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 Ms.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}=bn(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!==Dt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){let t=new qt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await St(this.connection,this.blockhashCommitment);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),bt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Wt(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await St(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let g=[];for(let b of s){let h=await Wt(this.connection,b,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});g.push(h)}return{txIds:g,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(g,b)=>(g.recentBlockhash=y,await Wt(this.connection,g,a[b].find(h=>h.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((h,A)=>(h.recentBlockhash=y,a[A].length&&h.sign(...a[A]),h));bt(g);let b=await this.signAllTransactions(g);if(l){let h=0,A=[],T=async()=>{if(!b[h])return;let x=await this.connection.sendRawTransaction(b[h].serialize(),{skipPreflight:p});A.push({txId:x,status:"sent",signedTx:b[h]}),m==null||m([...A]),h++,this.connection.onSignature(x,P=>{let K=A.findIndex(N=>N.txId===x);K>-1&&(A[K].status=P.err?"error":"success"),m==null||m([...A]),P.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:A.map(x=>x.txId),signedTxs:b}}else{let h=[];for(let A=0;A<b.length;A+=1){let T=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:p});h.push(T)}return{txIds:h,signedTxs:b}}}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){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=ft(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=v(v({},this.cluster==="devnet"?{}:gn),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Dt(p));let c=await Jn({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Gt({payerKey:this.feePayer,recentBlockhash:r?Dt.default.toBase58():await St(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Ut(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var g;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),bt([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let b=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:b},"confirmed"),{txId:b,signedTx:m}}if(this.signAllTransactions){let b=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(b[0],{skipPreflight:f}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),bt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(s.forEach((b,h)=>{a[h].find(A=>A.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let h of s){let A=await this.connection.sendTransaction(h,{skipPreflight:p}),{lastValidBlockHeight:T,blockhash:x}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:T,signature:A},"confirmed"),b.push(A)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>{let h=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let g=0,b=[],h=async()=>{if(!f[g])return;let A=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push({txId:A,status:"sent",signedTx:f[g]}),m==null||m([...b]),g++,this.connection.onSignature(A,T=>{let x=b.findIndex(P=>P.txId===A);x>-1&&(b[x].status=T.err?"error":"success"),m==null||m([...b]),T.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:f}}else{let g=[];for(let b=0;b<f.length;b+=1){let h=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push(h)}return{txIds:g,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=ft(c,["computeBudgetConfig"]),r=t?bn(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Q(v({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Dt(f));if(u.length<12&&Vt({instructions:d,payer:this.feePayer,signers:y})||Vt({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Vt({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new qt().add(...r.instructions,...u)):s.push(new qt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Vt({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new qt().add(...r.instructions,...u)):s.push(new qt().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await St(this.connection,this.blockhashCommitment);if(s.forEach(async(b,h)=>{b.recentBlockhash=f,a[h].length&&b.sign(...a[h])}),bt(s),(g=this.owner)!=null&&g.isKeyPair){if(m){let b=[];for(let h of s){let A=await Wt(this.connection,h,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});b.push(A)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async(b,h)=>await Wt(this.connection,b,a[h].find(A=>A.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let h=0,A=[],T=async()=>{if(!b[h])return;let x=await this.connection.sendRawTransaction(b[h].serialize(),{skipPreflight:y});A.push({txId:x,status:"sent",signedTx:b[h]}),d==null||d([...A]),h++,this.connection.onSignature(x,P=>{let K=A.findIndex(N=>N.txId===x);K>-1&&(A[K].status=P.err?"error":"success"),d==null||d([...A]),P.err||T()},"processed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:A.map(x=>x.txId),signedTxs:b}}else{let h=[];for(let A=0;A<b.length;A+=1){let T=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:y});h.push(T)}return{txIds:h,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=g,o=ft(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=v(v({},this.cluster==="devnet"?{}:gn),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let b of a)s[b]===void 0&&u.push(new Dt(b));let c=await Jn({connection:this.connection,address:u});for(let[b,h]of Object.entries(c))s[b]=h;let l=t?bn(t):{instructions:[],instructionTypes:[]},m=await St(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,h)=>Q(v({},b),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(b=>{let h=[...f,b],A=t?[...l.instructions,...h]:h;if(f.length<12&&_t({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||_t({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let T={};for(let x of[...new Set(a)])s[x]!==void 0&&(T[x]=s[x]);if(t&&_t({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let x=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ut(x))}else{let x=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ut(x))}y.push(Array.from(new Set(f.map(x=>x.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(x=>d[x]).filter(x=>x!==void 0)),f=[b]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&_t({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ut(A))}else{let A=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ut(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async b=>{var P;let{sequentially:h,onTxUpdate:A,recentBlockHash:T,skipPreflight:x=!0}=b||{};if(p.map(async(K,N)=>{y[N].length&&K.sign(y[N]),T&&(K.message.recentBlockhash=T)}),bt(p),(P=this.owner)!=null&&P.isKeyPair){let{lastValidBlockHeight:K,blockhash:N}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((_,D)=>{y[D].find(L=>L.publicKey.equals(this.owner.publicKey))||_.sign([this.owner.signer])}),h){let _=[];for(let D of p){let L=await this.connection.sendTransaction(D,{skipPreflight:x}),{lastValidBlockHeight:oe,blockhash:G}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:G,lastValidBlockHeight:oe,signature:L},"confirmed"),_.push(L)}return{txIds:_,signedTxs:p}}return{txIds:await Promise.all(p.map(async _=>{let D=await this.connection.sendTransaction(_,{skipPreflight:x});return await this.connection.confirmTransaction({blockhash:N,lastValidBlockHeight:K,signature:D},"confirmed"),D})),signedTxs:p}}if(this.signAllTransactions){let K=await this.signAllTransactions(p);if(h){let N=0,_=[],D=async()=>{if(!K[N])return;let L=await this.connection.sendTransaction(K[N],{skipPreflight:x});_.push({txId:L,status:"sent",signedTx:K[N]}),A==null||A([..._]),N++,this.connection.onSignature(L,oe=>{let G=_.findIndex(ye=>ye.txId===L);G>-1&&(_[G].status=oe.err?"error":"success"),A==null||A([..._]),oe.err||D()},"processed"),this.connection.getSignatureStatus(L)};return D(),{txIds:[],signedTxs:K}}else{let N=[];for(let _=0;_<K.length;_+=1){let D=await this.connection.sendTransaction(K[_],{skipPreflight:x});N.push(D)}return{txIds:N,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function Zn(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 $}from"@solana/web3.js";var Pl=new $("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Tl=new $("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xl=new $("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Il=new $("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Bl=new $("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),$n=new $("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),gr=new $("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sl=new $("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),kr=new $("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Kl=new $("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Cl=new $("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Nl=new $("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Rl=new $("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ll=new $("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ol=new $("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Ml=new $("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),El=new $("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fl=new $("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Es=new $("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Fs=new $("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vs=new $("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var vl={SERUM_MARKET:$.default,OPENBOOK_MARKET:new $("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:$.default,FarmV3:new $("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new $("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new $("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new $("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new $("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new $("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new $("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Es,CREATE_CPMM_POOL_AUTH:Fs,CREATE_CPMM_POOL_FEE_ACC:vs,FEE_DESTINATION_ID:new $("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _s}from"@solana/spl-token";function Qe(i,e,t){return Ke([i.toBuffer(),(t!=null?t:_s).toBuffer(),e.toBuffer()],new Vs("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ve from"bn.js";var Xt=1e4;function pe(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=Q(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 Ve(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===Xt){let u=new Ve(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=ei(i.mul(new Ve(Xt)),new Ve(Xt-o.transferFeeBasisPoints)),c=new Ve(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=ei(l.mul(new Ve(o.transferFeeBasisPoints)),new Ve(Xt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=ei(i.mul(new Ve(o.transferFeeBasisPoints)),new Ve(Xt)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Ye(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function ei(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Ve(0))?t.add(new Ve(1)):t}var ti=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Kt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(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,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ti(e))}logInfo(...e){this.logger.info(ti(e))}logAndCreateError(...e){let t=ti(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as oa,createCloseAccountInstruction as sa,createTransferInstruction as aa,TOKEN_PROGRAM_ID as Nt}from"@solana/spl-token";import{PublicKey as ua,SystemProgram as ca}from"@solana/web3.js";import la from"bn.js";import{PublicKey as ta,Keypair as na}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ia}from"@solana/spl-token";import Kd from"bn.js";import{PublicKey as Qs}from"@solana/web3.js";import Pr,{isBN as Tr}from"bn.js";import{bits as pm,BitStructure as fm,blob as Ds,Blob as bm,cstr as ym,f32 as gm,f32be as km,f64 as Am,f64be as hm,greedy as wm,Layout as Ws,ns64 as Pm,ns64be as Tm,nu64 as xm,nu64be as Im,offset as Bm,s16 as Sm,s16be as Km,s24 as Cm,s24be as Nm,s32 as qs,s32be as Rm,s40 as Lm,s40be as Om,s48 as Mm,s48be as Em,s8 as Fm,seq as Gs,struct as vm,Structure as Us,u16 as Xs,u16be as Vm,u24 as _m,u24be as Dm,u32 as Wm,u32be as qm,u40 as Gm,u40be as Um,u48 as Xm,u48be as zm,u8 as zs,UInt as Hs,union as Hm,Union as Qm,unionLayoutDiscriminator as Ym,utf8 as jm}from"@solana/buffer-layout";var ni=Ws,Ar=Us;var ii=Hs;var hr=zs,Ct=Xs;var Ae=qs;var wr=Gs;var Pe=Ds;var zt=class extends ni{constructor(t,n,r){super(t,r);this.blob=Pe(t),this.signed=n}decode(t,n=0){let r=new Pr(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 Pr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function j(i){return new ii(1,i)}function Me(i){return new ii(4,i)}function k(i){return new zt(8,!1,i)}function q(i){return new zt(16,!1,i)}function xr(i){return new zt(16,!0,i)}var An=class extends ni{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 C(i){return new An(Pe(32),e=>new Qs(e),e=>e.toBuffer(),i)}function je(i){return new An(hr(),Ys,js,i)}function Ys(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function js(i){return i?1:0}var ri=class extends Ar{decode(e,t){return super.decode(e,t)}};function V(i,e,t){return new ri(i,e,t)}function re(i,e,t){let n,r=typeof e=="number"?e:Tr(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Tr(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 wr(i,r,t)}var hn=V([C("mint"),C("owner"),k("amount"),Me("delegateOption"),C("delegate"),j("state"),Me("isNativeOption"),k("isNative"),k("delegatedAmount"),Me("closeAuthorityOption"),C("closeAuthority")]);function Zs(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function oi(i,...e){if(!Zs(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 si(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 Ir(i,e){oi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Pn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),_e=(i,e)=>i<<32-e|i>>>e;var pd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Js(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function ai(i){return typeof i=="string"&&(i=Js(i)),oi(i),i}var wn=class{clone(){return this._cloneInto()}},fd={}.toString;function Br(i){let e=n=>i().update(ai(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function $s(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var Sr=(i,e,t)=>i&e^~i&t,Kr=(i,e,t)=>i&e^i&t^e&t,Tn=class extends wn{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Pn(this.buffer)}update(e){si(this);let{view:t,buffer:n,blockLen:r}=this;e=ai(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Pn(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){si(this),Ir(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;$s(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Pn(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ea=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]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),ui=class extends Tn{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],y=_e(d,7)^_e(d,18)^d>>>3,f=_e(p,17)^_e(p,19)^p>>>10;dt[m]=f+dt[m-7]+y+dt[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=_e(a,6)^_e(a,11)^_e(a,25),p=l+d+Sr(a,u,c)+ea[m]+dt[m]|0,f=(_e(n,2)^_e(n,13)^_e(n,22))+Kr(n,r,o)|0;l=c,c=u,u=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,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Cr=Br(()=>new ui);var Ld=ae("Raydium_Util");function xn({fromPublicKey:i,programId:e=ia}){let t=na.generate().publicKey.toBase58().slice(0,32);return{publicKey:ra(i,t,e),seed:t}}function ra(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Cr(n);return new ta(r)}function ma(i){let{mint:e,tokenAccount:t,owner:n,programId:r=Nt}=i;return oa(t,e,n,r)}function Ht(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=Nt}=i;return sa(e,t,r,n,o)}async function ci(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(hn.span,n),u=se(t).add(new la(a)),c=xn({fromPublicKey:r,programId:Nt});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[ca.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:hn.span,programId:Nt}),ma({mint:new ua(ze.address),tokenAccount:c.publicKey,owner:o,programId:Nt})],instructionTypes:[te.CreateAccount,te.InitAccount],endInstructionTypes:s?[]:[te.CloseAccount],endInstructions:s?[]:[Ht({tokenAccount:c.publicKey,payer:r,owner:o})]}}function li({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=Nt}){return aa(i,e,t,BigInt(String(n)),r,o)}import Nr from"bn.js";var Yd=new Nr(25),jd=new Nr(1e4);var mi=V([j("instruction"),k("amountIn"),k("minAmountOut")]),di=V([j("instruction"),k("maxAmountIn"),k("amountOut")]),ip=V([j("instruction"),j("nonce")]),da=V([j("instruction"),j("nonce"),k("startTime")]),Rr=V([k("status"),k("nonce"),k("maxOrder"),k("depth"),k("baseDecimal"),k("quoteDecimal"),k("state"),k("resetFlag"),k("minSize"),k("volMaxCutRatio"),k("amountWaveRatio"),k("baseLotSize"),k("quoteLotSize"),k("minPriceMultiplier"),k("maxPriceMultiplier"),k("systemDecimalValue"),k("minSeparateNumerator"),k("minSeparateDenominator"),k("tradeFeeNumerator"),k("tradeFeeDenominator"),k("pnlNumerator"),k("pnlDenominator"),k("swapFeeNumerator"),k("swapFeeDenominator"),k("baseNeedTakePnl"),k("quoteNeedTakePnl"),k("quoteTotalPnl"),k("baseTotalPnl"),k("poolOpenTime"),k("punishPcAmount"),k("punishCoinAmount"),k("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),k("swapBase2QuoteFee"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),k("swapQuote2BaseFee"),C("baseVault"),C("quoteVault"),C("baseMint"),C("quoteMint"),C("lpMint"),C("openOrders"),C("marketId"),C("marketProgramId"),C("targetOrders"),C("withdrawQueue"),C("lpVault"),C("owner"),k("lpReserve"),re(k(),3,"padding")]),rp=V([k("accountType"),k("status"),k("nonce"),k("maxOrder"),k("depth"),k("baseDecimal"),k("quoteDecimal"),k("state"),k("resetFlag"),k("minSize"),k("volMaxCutRatio"),k("amountWaveRatio"),k("baseLotSize"),k("quoteLotSize"),k("minPriceMultiplier"),k("maxPriceMultiplier"),k("systemDecimalsValue"),k("abortTradeFactor"),k("priceTickMultiplier"),k("priceTick"),k("minSeparateNumerator"),k("minSeparateDenominator"),k("tradeFeeNumerator"),k("tradeFeeDenominator"),k("pnlNumerator"),k("pnlDenominator"),k("swapFeeNumerator"),k("swapFeeDenominator"),k("baseNeedTakePnl"),k("quoteNeedTakePnl"),k("quoteTotalPnl"),k("baseTotalPnl"),k("poolOpenTime"),k("punishPcAmount"),k("punishCoinAmount"),k("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),k("swapQuote2BaseFee"),k("swapBase2QuoteFee"),C("baseVault"),C("quoteVault"),C("baseMint"),C("quoteMint"),C("lpMint"),C("modelDataAccount"),C("openOrders"),C("marketId"),C("marketProgramId"),C("targetOrders"),C("owner"),re(k(),64,"padding")]),pa=V([j("instruction"),k("baseAmountIn"),k("quoteAmountIn"),k("fixedSide")]),fa=V([j("instruction"),k("amountIn")]);var op=V([k("fee")]);import{PublicKey as ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wa}from"@solana/spl-token";import{PublicKey as cp}from"@solana/web3.js";import{MintLayout as mp,TOKEN_PROGRAM_ID as pp}from"@solana/spl-token";var Lr=i=>new Ce({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),pi=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=ft(o,["amount","isRaw","name"]);return new ce(new Ce({mint:Xe(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var Qt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=ft(o,["address","programId","decimals"]);return v({chainId:101,address:Xe(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{PublicKey as wp}from"@solana/web3.js";var xp=ae("Raydium_liquidity_serum");import{PublicKey as ba}from"@solana/web3.js";var fi=new ba("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ya=5e4,ga=V([k("x"),k("y"),k("price")]),Cp=V([k("accountType"),k("status"),k("multiplier"),k("validDataCount"),re(ga,ya,"DataElement")]);import{TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as Lp}from"@solana/spl-token";import{PublicKey as Mp,TransactionInstruction as Er,SystemProgram as Ep,SYSVAR_RENT_PUBKEY as Fp}from"@solana/web3.js";var Or=ae("Raydium_liquidity_instruction");function ka({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=He(i),s=Buffer.alloc(mi.span);mi.encode({instruction:9,amountIn:se(t),minAmountOut:se(n)},s);let a=[z({pubkey:Mr,isWritable:!1}),z({pubkey:o.id}),z({pubkey:o.authority,isWritable:!1}),z({pubkey:o.openOrders})];return r===4&&a.push(z({pubkey:o.targetOrders})),a.push(z({pubkey:o.vault.A}),z({pubkey:o.vault.B})),r===5&&a.push(z({pubkey:fi})),a.push(z({pubkey:o.marketProgramId,isWritable:!1}),z({pubkey:o.marketId}),z({pubkey:o.marketBids}),z({pubkey:o.marketAsks}),z({pubkey:o.marketEventQueue}),z({pubkey:o.marketBaseVault}),z({pubkey:o.marketQuoteVault}),z({pubkey:o.marketAuthority,isWritable:!1}),z({pubkey:e.tokenAccountIn}),z({pubkey:e.tokenAccountOut}),z({pubkey:e.owner,isWritable:!1})),new Er({programId:o.programId,keys:a,data:s})}function Aa({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=He(i),s=Buffer.alloc(di.span);di.encode({instruction:11,maxAmountIn:se(t),amountOut:se(n)},s);let a=[z({pubkey:Mr,isWritable:!1}),z({pubkey:o.id}),z({pubkey:o.authority,isWritable:!1}),z({pubkey:o.openOrders}),z({pubkey:o.targetOrders}),z({pubkey:o.vault.A}),z({pubkey:o.vault.B})];return r===5&&a.push(z({pubkey:fi})),a.push(z({pubkey:o.marketProgramId,isWritable:!1}),z({pubkey:o.marketId}),z({pubkey:o.marketBids}),z({pubkey:o.marketAsks}),z({pubkey:o.marketEventQueue}),z({pubkey:o.marketBaseVault}),z({pubkey:o.marketQuoteVault}),z({pubkey:o.marketAuthority,isWritable:!1}),z({pubkey:e.tokenAccountIn}),z({pubkey:e.tokenAccountOut}),z({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Er({programId:o.programId,keys:a,data:s})}function Fr(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 ka(Q(v({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Aa(Q(v({},a),{maxAmountIn:r,amountOut:o}),t);Or.logWithError("invalid params","params",i)}throw Or.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import uf from"bn.js";function vr({programId:i}){return Ke([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var bi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Vr=i=>{let e={},t=wa.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:Qt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:Qt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new R(r.baseReserve.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new R(r.quoteReserve.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new R(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:bi,week:bi,month:bi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:ha.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:Qt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import Na from"bn.js";function In(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function yi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function gi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Yt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function _r(i,e){return Yt(i,e)?null:yi(i,e)}function Dr(i,e){return Yt(i,e)?null:gi(i,e)}var Pf=Buffer.from("amm_config","utf8"),Pa=Buffer.from("pool","utf8"),Ta=Buffer.from("pool_vault","utf8"),xa=Buffer.from("pool_reward_vault","utf8"),Wr=Buffer.from("position","utf8"),Ia=Buffer.from("tick_array","utf8"),Ba=Buffer.from("operation","utf8"),Sa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function qr(i,e,t,n){return Ke([Pa,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function ki(i,e,t){return Ke([Ta,e.toBuffer(),t.toBuffer()],i)}function Gr(i,e,t){return Ke([xa,e.toBuffer(),t.toBuffer()],i)}function ne(i,e,t){return Ke([Ia,e.toBuffer(),In(t)],i)}function gt(i,e,t,n){return Ke([Wr,e.toBuffer(),In(t),In(n)],i)}function De(i,e){return Ke([Wr,e.toBuffer()],i)}function Bn(i){return Ke([Buffer.from("metadata","utf8"),Bt.toBuffer(),i.toBuffer()],Bt)}function Sn(i){return Ke([Ba],i)}function Ne(i,e){return Ke([Sa,e.toBuffer()],i)}import Ze from"bn.js";var le=new Ze(0),Re=new Ze(1),tt=new Ze(-1),Le=new Ze(1).shln(64),Kn=new Ze(1).shln(128),Ai=Le.sub(Re),jt=64,Ur=Kn.subn(1),Te=-443636,xe=-Te,nt=new Ze("4295048016"),it=new Ze("79226673521066979257578248091"),Xr=16,zr="59543866431248",Hr="184467440737095516",Qr="15793534762490258745",Cn=new Ze(10).pow(new Ze(6));var If=new Ze("18446744073700000000");var Ka=15,Z=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=O.getTickArrayStartIndexByTick(r,o),l=O.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Ka/2));for(let p=0;p<l.length;p++){let{publicKey:y}=ne(t,n,l[p]);u.push(y)}let m=(await et(e,u)).map(p=>p!==null?Zt.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=Q(v({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=O.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/Z.tickCount(t)),a=n?O.searchLowBitFromStart(r,o,s-1,1,t):O.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=fe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<fe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ne(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=O.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<fe;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=ne(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(O.checkIsOutOfBoundary(e)){if(e>xe)return!1;let n=O.getTickArrayStartIndexByTick(Te,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return fe*e}};import H from"bn.js";import{PublicKey as We}from"@solana/web3.js";import me from"bn.js";var hi=14,rt=class{static maxTickInTickarrayBitmap(e){return e*fe*kt}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(!Z.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-Z.tickCount(n):t+Z.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*fe,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=_r(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Dr(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-Z.tickCount(n)}}}},Jt=class{static getBitmapOffset(e,t){if(!Z.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(xe<=t)throw Error(`extensionTickBoundary check error: ${xe}, ${t}`);if(n<=Te)throw Error(`extensionTickBoundary check error: ${n}, ${Te}`);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:O.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=Z.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 u=O.mergeTickArrayBitmap(e).shln(kt-1-a),c=Yt(512,u)?null:yi(512,u);if(c!==null){let l=t-c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=O.mergeTickArrayBitmap(e).shrn(a),c=Yt(512,u)?null:gi(512,u);if(c!==null){let l=t+c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Z.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),r=Math.floor(n/Z.tickCount(t));return e<0&&n!=0&&(r=kt-r),r}};import Je from"bn.js";var $t=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 u=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=U.wrappingSubU128(u,c.growthInsideLastX64),m=U.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=U.wrappingSubU128(u,c.growthInsideLastX64),m=U.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Je(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new 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 u=new Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var g,b,h,A;let a=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),u=X.getSqrtPriceX64FromTick(t.tickLower),c=X.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=J.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[pe(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),pe(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[y,f]=[pe(new Je(new R(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),pe(new Je(new R(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ye(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Yr}from"@solana/spl-token";var be=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:g}=At.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 u.push(...y),{allTrade:d,expectedAmountOut:p.mul(tt),remainingAccounts:u,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:g}=ne(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=At.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),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=be.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Jt.checkTickArrayIsInit(Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):O.checkTickArrayIsInitialized(O.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ne(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ne(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/Z.tickCount(e.tickSpacing)),r=t?O.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):O.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=Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(O.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Jt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Te||t>xe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Q(v({},m),{perSecond:U.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new We(d)});if(p.tokenMint.equals(We.default))continue;if(n<=p.openTime.toNumber()||r.eq(le)){s.push(p);continue}let y=new me(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=U.mulDivFloor(f,p.emissionsPerSecondX64,r),b=p.rewardGrowthGlobalX64.add(g),h=U.mulDivFloor(f,p.emissionsPerSecondX64,Le),A=p.rewardTotalEmissioned.add(h);s.push(Q(v({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=O.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>xe&&(t=Z.getArrayStartIndex(xe,e)+Z.tickCount(e)),n<Te&&(n=Z.getArrayStartIndex(Te,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Z.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Z.tickCount(t)*kt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await yt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=jr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=O.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=O.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=ne(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await yt(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Zt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Q(v({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(De(p,d).publicKey);let l=await et(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=wi.decode(d.data),y=p.poolId.toString(),f=e.find(N=>N.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,b=O._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),h=O._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:T}=J.getAmountsFromLiquidity(g.sqrtPriceX64,b.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),x=1/(1-Math.sqrt(Math.sqrt(b.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:h.price,amountA:A,amountB:T,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(N=>Q(v({},N),{pendingReward:new me(0)})),leverage:x,tokenFeeAmountA:new me(0),tokenFeeAmountB:new me(0)}];let P=await O.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),K=await O.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=P,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=K}if(o){let d=Object.values(m),p=await et(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let b=d[f].toString();y[b]=Zt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let b of g){let h=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,T=y[m[h].toString()],x=y[m[A].toString()],P=T.ticks[O.getTickOffsetInArray(b.tickLower,f.tickSpacing)],K=x.ticks[O.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:N,tokenFeeAmountB:_}=await $t.GetPositionFees(f,b,P,K),D=await $t.GetPositionRewards(f,b,P,K);b.tokenFeeAmountA=N.gte(new me(0))?N:new me(0),b.tokenFeeAmountB=_.gte(new me(0))?_:new me(0);for(let L=0;L<D.length;L++)b.rewardInfos[L].pendingReward=D[L].gte(new me(0))?D[L]:new me(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new R(0),catchLiquidityInsufficient:u=!1}){var oe;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new R(0))?c=l?nt.add(new me(1)):it.sub(new me(1)):c=X.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=pe(o,m,r,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:g,executionPrice:b,feeAmount:h}=be.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((oe=p.fee)!=null?oe:le),c,u),A=pe(f,d,r,!1),T=X.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),x=l?T:new R(1).div(T),P=f.mul(new me(Math.floor((1-s)*1e10))).div(new me(1e10)),K=pe(P,d,r,!1),N=l?e.currentPrice:new R(1).div(e.currentPrice),_=new R(x).sub(N).abs(),D=N,L=new lt(new R(_).mul(10**15).toFixed(0),new R(D).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:K,expirationTime:Ye(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:x,priceImpact:L,fee:h,remainingAccounts:g,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=r.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ce(Q(v({},c),{mint:c.address,isToken2022:c.programId===Yr.toBase58()})),new Ce(Q(v({},l),{mint:l.address,isToken2022:l.programId===Yr.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:g,expirationTime:b,currentPrice:h,executionPrice:A,priceImpact:T,fee:x,remainingAccounts:P,executionPriceX64:K}=be.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new We(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),N=Q(v({},y),{amount:new ce(m,y.amount),fee:y.fee===void 0?void 0:new ce(m,y.fee)}),_=Q(v({},f),{amount:new ce(d,f.amount),fee:f.fee===void 0?void 0:new ce(d,f.fee)}),D=Q(v({},g),{amount:new ce(d,g.amount),fee:g.fee===void 0?void 0:new ce(d,g.fee)}),L=new Be({baseToken:m,denominator:new me(10).pow(new me(20+m.decimals)),quoteToken:d,numerator:h.mul(new R(10**(20+d.decimals))).toFixed(0)}),oe=new Be({baseToken:m,denominator:new me(10).pow(new me(20+m.decimals)),quoteToken:d,numerator:A.mul(new R(10**(20+d.decimals))).toFixed(0)}),G=new ce(m,x);return{allTrade:p,realAmountIn:N,amountOut:_,minAmountOut:D,expirationTime:b,currentPrice:L,executionPrice:oe,priceImpact:T,fee:G,remainingAccounts:P,executionPriceX64:K}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,g;let o=e[t],s=O.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=O.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(g=o.rewardApr[2])!=null?g:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[Xe(e.mintA.address).toString()],d=r[Xe(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),g=X.getSqrtPriceX64FromTick(s),b=X.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=J.getAmountsFromLiquidityWithSlippage(f,g,b,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:x}=J.getAmountsFromLiquidityWithSlippage(f,g,b,o,!1,!1,0),P=new R(h.toString()).div(new R(10).pow(p)).mul(m.value).add(new R(A.toString()).div(new R(10).pow(y)).mul(d.value)),K=new R(T.toString()).div(new R(10).pow(p)).mul(m.value).add(new R(x.toString()).div(new R(10).pow(y)).mul(d.value)),N=K.div(P.add(K)).div(K),D=new R(l.volumeFee).mul(365).div(c).mul(N).mul(100).toNumber(),L=3600*24*365,oe=e.rewardDefaultInfos.map(G=>{var E,tn;let ye=G.mint.decimals,Y=r[G.mint.address];return u<((E=G.startTime)!=null?E:0)||u>((tn=G.endTime)!=null?tn:0)||!G.perSecond||!Y||ye===void 0?0:new R(Y.value).mul(new R(G.perSecond).mul(L)).div(new R(10).pow(ye)).mul(N).mul(100).toNumber()});return{feeApr:D,rewardsApr:oe,apr:D+oe.reduce((G,ye)=>G+ye,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var b,h;let l=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),m=X.getSqrtPriceX64FromTick(n),d=X.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=pe(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new me(new R(y.amount.sub((h=y.fee)!=null?h:le).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?J.getLiquidityFromTokenAmountA(m,d,f,!a):new me(0);else if(l.lte(d)){let A=J.getLiquidityFromTokenAmountA(l,d,f,!a),T=J.getLiquidityFromTokenAmountB(m,l,f);g=t?A:T}else g=t?new me(0):J.getLiquidityFromTokenAmountB(m,d,f);return be.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var g,b,h,A;let u=X.getSqrtPriceX64FromTick(n),c=X.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=J.getAmountsFromLiquidity(X.priceToSqrtPriceX64(new R(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[pe(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),pe(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[y,f]=[pe(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ye(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(u=>!n[u.id]).map(u=>new We(u.id));(await et(e,r)).forEach((u,c)=>{!u||(n[r[c].toBase58()]=Rt.decode(u.data))});let s=t.map(u=>Ne(new We(u.programId),new We(u.id)).publicKey),a=await be.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>Q(v({},u),{[c.id]:Q(v({},n[c.id]),{id:new We(c.id),version:6,programId:new We(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:Q(v({},c.config),{id:new We(c.config.id),fundOwner:""}),currentPrice:new R(c.price),exBitmapInfo:a[Ne(new We(c.programId),new We(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var U=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(le)||(o=o.add(Re)),o}static mulDivFloor(e,t,n){if(n.eq(le))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(le))throw new Error("division by 0");return e.mul(t).add(n.sub(Re)).div(n)}static x64ToDecimal(e,t){return new R(e.toString()).div(R.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(R.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Kn).sub(t).mod(Kn)}};function ge(i,e){return Pi(i.mul(e),64,256)}function Ca(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Pi(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var X=class{static sqrtPriceX64ToPrice(e,t,n){return U.x64ToDecimal(e).pow(2).mul(R.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return U.decimalToX64(e.mul(R.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(le))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(le))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(le))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(le))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(le))return e;let o=t.shln(jt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?U.mulDivCeil(s,e,a):U.mulDivRoundingUp(s,Re,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 U.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(jt);if(r)return e.add(o.div(t));{let s=U.mulDivRoundingUp(o,Re,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<Te||e>xe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=Ur.div(n)),n}static getTickFromPrice(e,t,n){return X.getTickFromSqrtPriceX64(X.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 H(t-64),r=Ca(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<Xr;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new H(zr)),d=Pi(m.sub(new H(Hr)),64,128).toNumber(),p=Pi(m.add(new H(Qr)),64,128).toNumber();return d==p?d:X.getSqrtPriceX64FromTick(p).lte(e)?p:d}},ht=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=X.getTickFromSqrtPriceX64(X.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=ht.getTickWithPriceAndTickspacing(e,t,n,r),s=X.getSqrtPriceX64FromTick(o);return X.sqrtPriceX64ToPrice(s,n,r)}},J=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(le))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(jt),s=t.sub(e);return r?U.mulDivRoundingUp(U.mulDivCeil(o,s,t),Re,e):U.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(le))throw new Error("sqrtPriceX64A must greater than 0");return r?U.mulDivCeil(n,t.sub(e),Le):U.mulDivFloor(n,t.sub(e),Le)}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?U.mulDivRoundingUp(a,Re,Ai):a.shrn(jt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),U.mulDivFloor(n,Ai,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return J.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=J.getLiquidityFromTokenAmountA(e,n,r,!1),a=J.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return J.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:J.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new H(0)};if(e.lt(n)){let s=J.getTokenAmountAFromLiquidity(e,n,r,o),a=J.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:J.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=J.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new H(new R(u.toString()).mul(l).toFixed(0)),d=new H(new R(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,T,x;let c=X.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),l=X.getSqrtPriceX64FromTick(t),m=X.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=J.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[pe(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),pe(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,b]=[pe(new H(new R(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),pe(new H(new R(p.amountB.toString()).mul(d).toFixed(0)),(x=e.mintB.extensions)==null?void 0:x.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:b,expirationTime:Ye(y.expirationTime,f.expirationTime)}}},At=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f=!1){if(d.eq(le))throw new Error("amountSpecified must not be 0");if(y||(y=s?nt.add(Re):it.sub(Re)),s){if(y.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let g=d.gt(le),b={amountSpecifiedRemaining:d,amountCalculated:le,sqrtPriceX64:m,tick:c>p?Math.min(p+Z.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},h=p,A=n[p],T=0,x=!s&&A.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(le)&&!b.sqrtPriceX64.eq(y);){T>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let K=O.nextInitTick(A,b.tick,l,s,x),N=K||null,_=null;if(!(N!=null&&N.liquidityGross.gtn(0))){let L=be.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},h,s);if(!L.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}h=L.nextStartIndex;let{publicKey:oe}=ne(e,t,h);_=oe,A=n[h];try{N=O.firstInitializedTick(A,s)}catch{throw Error("not found next tick info")}}P.tickNext=N.tick,P.initialized=N.liquidityGross.gtn(0),p!==h&&_&&(b.accounts.push(_),p=h),P.tickNext<Te?P.tickNext=Te:P.tickNext>xe&&(P.tickNext=xe),P.sqrtPriceNextX64=X.getSqrtPriceX64FromTick(P.tickNext);let D;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?D=y:D=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=At.swapStepCompute(b.sqrtPriceX64,D,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),g?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let L=N.liquidityNet;s&&(L=L.mul(tt)),b.liquidity=J.addDelta(b.liquidity,L)}x=P.tickNext!=b.tick&&!s&&A.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let L=X.getTickFromSqrtPriceX64(b.sqrtPriceX64);x=L!=b.tick&&!s&&A.startTickIndex===L,b.tick=L}++T}try{let{nextStartIndex:P,isExist:K}=Z.nextInitializedTickArray(b.tick,l,s,r,o);K&&p!==P&&(b.accounts.push(ne(e,t,P).publicKey),p=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:le,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=r.gte(le);if(u){let l=U.mulDivFloor(r,Cn.sub(new H(o.toString())),Cn);s.amountIn=a?J.getTokenAmountAFromLiquidity(t,e,n,!0):J.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=X.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?J.getTokenAmountBFromLiquidity(t,e,n,!1):J.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(tt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=X.getNextSqrtPriceX64FromOutput(e,n,r.mul(tt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=J.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=J.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:J.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:J.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(tt))&&(s.amountOut=r.mul(tt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=U.mulDivCeil(s.amountIn,new H(o),Cn.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var fe=60,kt=512,O=class{static getTickArrayAddressByTick(e,t,n,r){let o=O.getTickArrayStartIndexByTick(n,r),{publicKey:s}=ne(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=O.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=fe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=Z.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)*Z.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*fe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*fe,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*fe:e+t*fe}static mergeTickArrayBitmap(e){let t=new Na(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*fe));return[...O.searchLowBitFromStart(e,t,s-1,o,n),...O.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return O.searchHightBitFromStart(e,t,0,kt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=O.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=ne(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>O.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=Z.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>O.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=Z.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Te||e>xe}static nextInitTick(e,t,n,r,o){if(Z.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<fe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=fe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<fe;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=X.getSqrtPriceX64FromTick(t),o=X.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new R(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new R(1).div(t),o=ht.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=X.getSqrtPriceX64FromTick(o),a=X.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new R(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=X.getSqrtPriceX64FromTick(t),o=X.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new R(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new R(1).div(t),o=ht.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=X.getSqrtPriceX64FromTick(o),a=X.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new R(1).div(a)}}};var Ra=V([Pe(8),j("bump"),Ct("index"),C(""),Me("protocolFeeRate"),Me("tradeFeeRate"),Ct("tickSpacing"),re(k(),8,"")]),La=V([Me("blockTimestamp"),q("sqrtPriceX64"),q("cumulativeTimePriceX64"),re(q(),1,"")]),Ti=V([Pe(8),je("initialized"),C("poolId"),re(La,1e3,"observations"),re(q(),5,"")]),Oa=V([j("rewardState"),k("openTime"),k("endTime"),k("lastUpdateTime"),q("emissionsPerSecondX64"),k("rewardTotalEmissioned"),k("rewardClaimed"),C("tokenMint"),C("tokenVault"),C("creator"),q("rewardGrowthGlobalX64")]),Rt=V([Pe(8),j("bump"),C("ammConfig"),C("creator"),C("mintA"),C("mintB"),C("vaultA"),C("vaultB"),C("observationId"),j("mintDecimalsA"),j("mintDecimalsB"),Ct("tickSpacing"),q("liquidity"),q("sqrtPriceX64"),Ae("tickCurrent"),Ct("observationIndex"),Ct("observationUpdateDuration"),q("feeGrowthGlobalX64A"),q("feeGrowthGlobalX64B"),k("protocolFeesTokenA"),k("protocolFeesTokenB"),q("swapInAmountTokenA"),q("swapOutAmountTokenB"),q("swapInAmountTokenB"),q("swapOutAmountTokenA"),j("status"),re(j(),7,""),re(Oa,3,"rewardInfos"),re(k(),16,"tickArrayBitmap"),k("totalFeesTokenA"),k("totalFeesClaimedTokenA"),k("totalFeesTokenB"),k("totalFeesClaimedTokenB"),k("fundFeesTokenA"),k("fundFeesTokenB"),k("startTime"),re(k(),15*4-3,"padding")]),Ma=V([q("growthInsideLastX64"),k("rewardAmountOwed")]),wi=V([Pe(8),j("bump"),C("nftMint"),C("poolId"),Ae("tickLower"),Ae("tickUpper"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),k("tokenFeesOwedA"),k("tokenFeesOwedB"),re(Ma,3,"rewardInfos"),re(k(),8,"")]),Ob=V([Pe(8),j("bump"),C("poolId"),Ae("tickLowerIndex"),Ae("tickUpperIndex"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),k("tokenFeesOwedA"),k("tokenFeesOwedB"),re(q(),3,"rewardGrowthInside"),re(k(),8,"")]),Ea=V([Ae("tick"),xr("liquidityNet"),q("liquidityGross"),q("feeGrowthOutsideX64A"),q("feeGrowthOutsideX64B"),re(q(),3,"rewardGrowthsOutsideX64"),re(Me(),13,"")]),Zt=V([Pe(8),C("poolId"),Ae("startTickIndex"),re(Ea,fe,"ticks"),j("initializedTickCount"),re(j(),115,"")]),Fa=V([Pe(329),re(C(),100,"whitelistMints")]),jr=V([Pe(8),C("poolId"),re(re(k(),8),hi,"positiveTickArrayBitmap"),re(re(k(),8),hi,"negativeTickArrayBitmap")]);import{PublicKey as Jb}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as he,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as Zr}from"@solana/spl-token";import{PublicKey as I,TransactionInstruction as qe,SystemProgram as Lt,Keypair as xi}from"@solana/web3.js";import Jr from"bn.js";var $r=ae("Raydium_Clmm"),Ge={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},en=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=V([q("sqrtPriceX64"),k("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},b);let h=Buffer.from([...Ge.createPool,...b]);return new qe({keys:g,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=xn({fromPublicKey:r,programId:n}),[d,p]=[new I(o.address),new I(s.address)],y=[Lt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ti.span),space:Ti.span,programId:n})],{publicKey:f}=qr(n,a,d,p),{publicKey:g}=ki(n,f,d),{publicKey:b}=ki(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,g,new I(o.programId||he),p,b,new I(s.programId||he),Ne(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[te.CreateAccount,te.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h,A,T,x,P,K,N,_,D){let L=V([Ae("tickLowerIndex"),Ae("tickUpperIndex"),Ae("tickArrayLowerStartIndex"),Ae("tickArrayUpperStartIndex"),q("liquidity"),k("amountMaxA"),k("amountMaxB"),je("withMetadata"),j("optionBaseFlag"),je("baseFlag")]),oe=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],G=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:Bt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...oe],ye=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:x,liquidity:P,amountMaxA:K,amountMaxB:N,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},ye);let Y=Buffer.from([...Ge.openPosition,...ye]);return new qe({keys:G,programId:e,data:Y})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new I(e.programId),new I(e.id)],y;if(l)y=new I((await l(1))[0]);else{let N=xi.generate();m.push(N),y=N.publicKey}let f=O.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=ne(d,p,f),{publicKey:h}=ne(d,p,g),{publicKey:A}=Qe(n.wallet,y,he),{publicKey:T}=Bn(y),{publicKey:x}=De(d,y),{publicKey:P}=gt(d,p,r,o),K=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,T,P,b,h,x,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,g,s,a,u,c);return{signers:m,instructions:[K],instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:A,metadataAccount:T,personalPosition:x,protocolPosition:P}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new I(e.programId),new I(e.id)],y;if(l)y=new I((await l(1))[0]);else{let N=xi.generate();m.push(N),y=N.publicKey}let f=O.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=ne(d,p,f),{publicKey:h}=ne(d,p,g),{publicKey:A}=Qe(n.wallet,y,he),{publicKey:T}=Bn(y),{publicKey:x}=De(d,y),{publicKey:P}=gt(d,p,r,o),K=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,T,P,b,h,x,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,g,c,s,a,u,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:A,metadataAccount:T,personalPosition:x,protocolPosition:P},instructions:[K],signers:m,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h,A,T,x,P,K,N,_,D){let L=V([Ae("tickLowerIndex"),Ae("tickUpperIndex"),Ae("tickArrayLowerStartIndex"),Ae("tickArrayUpperStartIndex"),q("liquidity"),k("amountMaxA"),k("amountMaxB"),je("withMetadata"),j("optionBaseFlag"),je("baseFlag")]),oe=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],G=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:Bt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...oe],ye=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:x,liquidity:new Jr(0),amountMaxA:K==="MintA"?N:_,amountMaxB:K==="MintA"?_:N,withMetadata:P==="create",baseFlag:K==="MintA",optionBaseFlag:1},ye);let Y=Buffer.from([...Ge.openPosition,...ye]);return new qe({keys:G,programId:e,data:Y})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new I((await l(1))[0]);else{let N=xi.generate();d.push(N),m=N.publicKey}let[p,y]=[new I(e.programId),new I(e.id)],f=O.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=ne(p,y,f),{publicKey:h}=ne(p,y,g),{publicKey:A}=Qe(n.wallet,m,he),{publicKey:T}=Bn(m),{publicKey:x}=De(p,m),{publicKey:P}=gt(p,y,r,o),K=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,T,P,b,h,x,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),r,o,f,g,s,a,u,c,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Ne(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:A,metadataAccount:T,personalPosition:x,protocolPosition:P},instructions:[K],signers:d,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=V([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Ge.closePosition,...u]);return new qe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new I(e.programId),{publicKey:s}=Qe(n.wallet,r.nftMint,he),{publicKey:a}=De(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[te.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h){let A=V([q("liquidity"),k("amountMaxA"),k("amountMaxB"),j("optionBaseFlag"),je("baseFlag")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],P=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let K=Buffer.from([...Ge.increaseLiquidity,...P]);return new qe({keys:x,programId:e,data:K})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new I(e.programId),new I(e.id)],l=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ne(u,c,l),{publicKey:p}=ne(u,c,m),{publicKey:y}=Qe(r.wallet,n.nftMint,he),{publicKey:f}=De(u,n.nftMint),{publicKey:g}=gt(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,g,d,p,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[b],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new I(e.programId),new I(e.id)],l=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ne(u,c,l),{publicKey:p}=ne(u,c,m),{publicKey:y}=Qe(r.wallet,n.nftMint,he),{publicKey:f}=De(u,n.nftMint),{publicKey:g}=gt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,g,d,p,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ne(u,c).publicKey:void 0)],signers:[],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h){let A=V([q("liquidity"),k("amountMaxA"),k("amountMaxB"),j("optionBaseFlag"),je("baseFlag")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],P=Buffer.alloc(A.span);A.encode({liquidity:new Jr(0),amountMaxA:f==="MintA"?g:b,amountMaxB:f==="MintA"?b:g,baseFlag:f==="MintA",optionBaseFlag:1},P);let K=Buffer.from([...Ge.increaseLiquidity,...P]);return new qe({keys:x,programId:e,data:K})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b,h,A){let T=V([q("liquidity"),k("amountMinA"),k("amountMinB")]),x=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...x],K=Buffer.alloc(T.span);T.encode({liquidity:g,amountMinA:b,amountMinB:h},K);let N=Buffer.from([...Ge.decreaseLiquidity,...K]);return new qe({keys:P,programId:e,data:N})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new I(e.programId),new I(e.id)],m=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ne(c,l,m),{publicKey:y}=ne(c,l,d),{publicKey:f}=Qe(r.wallet,n.nftMint,u),{publicKey:g}=De(c,n.nftMint),{publicKey:b}=gt(c,l,n.tickLower,n.tickUpper),h=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)h.push({poolRewardVault:new I(t.rewardInfos[T].vault),ownerRewardVault:r.rewardAccounts[T],rewardMint:new I(e.rewardDefaultInfos[T].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,g,l,b,p,y,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),h,o,s,a,be.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:b},signers:[],instructions:A,instructionTypes:[te.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,g,b){let h=V([k("amount"),k("otherAmountThreshold"),q("sqrtPriceLimitX64"),je("isBaseInput")]),A=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(K=>({pubkey:K,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],x=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},x);let P=Buffer.from([...Ge.swap,...x]);return new qe({keys:T,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new I(e.programId),new I(e.id)],[d,p]=[new I(t.vault.A),new I(t.vault.B)],[y,f]=[new I(e.mintA.address),new I(e.mintB.address)],g=e.mintA.address===o.toString(),b=[this.swapInstruction(l,r.wallet,m,new I(e.config.id),g?r.tokenAccountA:r.tokenAccountB,g?r.tokenAccountB:r.tokenAccountA,g?d:p,g?p:d,g?y:f,g?f:y,c,n,s,a,u,!0,Ne(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[te.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=V([k("openTime"),k("endTime"),q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Lt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:se(l),endTime:se(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...Ge.initReward,...f]);return new qe({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new I(e.programId),new I(e.id)],a=Gr(o,s,r.mint).publicKey,u=Sn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new I(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[te.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=V([j("rewardIndex"),q("emissionsPerSecondX64"),k("openTime"),k("endTime")]),y=[{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:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:se(l),endTime:se(m)},f);let g=Buffer.from([...Ge.setRewardEmissions,...f]);return new qe({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new I(e.programId),new I(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new I(t.rewardInfos[d].vault),c=new I(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&$r.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Sn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new I(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[te.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=V([j("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:he,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ge.collectReward,...l]);return new qe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new I(e.programId),new I(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new I(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&$r.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[te.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new I(e.programId),new I(e.id)],[m,d]=[new I(t.vault.A),new I(t.vault.B)],[p,y]=[new I(e.mintA.address),new I(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new I(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[te.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import by from"bn.js";import{TOKEN_PROGRAM_ID as gy}from"@solana/spl-token";import On from"bn.js";var Wy=V([Me("mintAuthorityOption"),C("mintAuthority"),k("supply"),j("decimals"),j("isInitialized"),Me("freezeAuthorityOption"),C("freezeAuthority")]);import{TOKEN_PROGRAM_ID as va,TOKEN_2022_PROGRAM_ID as Ii}from"@solana/spl-token";import{PublicKey as Nn,TransactionInstruction as Va,SystemProgram as jy}from"@solana/web3.js";import Bi from"bn.js";function eo(i,e,t,n,r,o){if(i.version===4){let s=He(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!0},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}else if(i.version===5){let s=He(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Nn("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.version===6){let s=i,a=He(e),u=s.mintA.address===t;return[{pubkey:new Nn(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:i.observationId,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Ii)||a.mintB.programId.equals(Ii)?[{pubkey:Ii,isSigner:!1,isWritable:!1},{pubkey:xt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ne(new Nn(String(i.programId)),new Nn(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else throw Error("make swap ins error")}function _a(i,e,t,n,r,o,s,a,u,c,l,m,d,p){let y=V([j("instruction"),k("amountIn"),k("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:va,isSigner:!1,isWritable:!1}];f.push(...eo(a,c,o,t,n,p[0])),f.push(...eo(u,l,s,n,r,p[1]));let g=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},g),new Va({keys:f,programId:i,data:g})}function to({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=He(m),p=t.equals(d.mintA.address)?nt.add(Re):it.sub(Re);return en.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.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 Bi(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else{let m=n.poolKey[0];return{signers:[],instructions:[Fr({poolKeys:m,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((u=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?u:new Bi(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?te.AmmV5SwapBaseIn:te.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[_a(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new Bi(0)),n.remainingAccounts)],instructionTypes:[te.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var no={[$n.toBase58()]:3},io={3:$n};var Si=V([Pe(5),Pe(8),C("ownAddress"),k("vaultSignerNonce"),C("baseMint"),C("quoteMint"),C("baseVault"),k("baseDepositsTotal"),k("baseFeesAccrued"),C("quoteVault"),k("quoteDepositsTotal"),k("quoteFeesAccrued"),k("quoteDustThreshold"),C("requestQueue"),C("eventQueue"),C("bids"),C("asks"),k("baseLotSize"),k("quoteLotSize"),k("feeRateBps"),k("referrerRebatesAccrued"),Pe(7)]),ro={3:Si};import{PublicKey as oo}from"@solana/web3.js";var Rn=ae("Serum"),Ln=class{static getProgramId(e){let t=io[e];return t||Rn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=no[t];return n||Rn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=ro[e];return t||Rn.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=oo.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return Rn.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:oo.default,nonce:r}}};var ot=new On(0),Ci=class extends Kt{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 ci({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let u=se(t);for(let c=0;c<o.length;c++)u.gte(o[c].amount)?(s.addInstruction({instructions:[Ht({tokenAccount:o[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(o[c].amount)):(s.addInstruction({instructions:[Ht({tokenAccount:o[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),li({destination:a.addresses.newAccount,source:o[c].publicKey,amount:u,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 ci({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:[li({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ht({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),o.versionBuild({txVersion:n!=null?n:1})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts(gr,{dataSlice:{offset:Rr.offsetOf("baseMint"),length:64}}),t=V([C("baseMint"),C("quoteMint")]),n=e.map(a=>({id:a.pubkey,version:4,mintA:t.decode(a.account.data).baseMint,mintB:t.decode(a.account.data).quoteMint})),r=V([C("mintA"),C("mintB")]);return{clmmPools:(await this.scope.connection.getProgramAccounts(kr,{filters:[{dataSize:Rt.span}],dataSlice:{offset:Rt.offsetOf("mintA"),length:64}})).map(a=>{let u=r.decode(a.account.data);return{id:a.pubkey,version:6,mintA:u.mintA,mintB:u.mintB}}),ammPools:n}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r}){e=e.toString()===wt.default.toString()?ve:e,t=t.toString()===wt.default.toString()?ve:t;let o={},s={},a=[],u={};for(let l of n!=null?n:[]){if((l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),s[l.id.toString()]=l),l.mintA.equals(e)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintB.equals(e)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintA.equals(t)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].out.push(l)}if(l.mintB.equals(t)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:Oe,in:[],out:[],mDecimals:0}),u[m].out.push(l)}}let c=[];for(let l of r)(l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),o[l.id.toBase58()]=l,c.push(l)),l.mintA.equals(e)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].in.push(l)),l.mintB.equals(e)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].in.push(l)),l.mintA.equals(t)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].out.push(l)),l.mintB.equals(t)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:Oe,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].out.push(l));for(let l of Object.keys(u)){if(u[l].in.length===1&&u[l].out.length===1&&u[l].in[0].id.equals(u[l].out[0].id)){delete u[l];continue}if(u[l].in.length===0||u[l].out.length===0){delete u[l];continue}let m=u[l];for(let d of m.in)for(let p of m.out)d.version===6&&s[d.id.toString()]===void 0?s[d.id.toString()]=d:d.version!==6&&o[d.id.toString()]===void 0&&(o[d.id.toString()]=d),p.version===6&&s[p.id.toString()]===void 0?s[p.id.toString()]=p:p.version!==6&&o[p.id.toString()]===void 0&&(o[p.id.toString()]=p)}return{directPath:a,addLiquidityPools:c,routePathDict:u,needSimulate:Object.values(o),needTickArray:Object.values(s)}}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:u}){if(e.version===6){let{allTrade:c,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:g,fee:b,remainingAccounts:h,executionPriceX64:A}=be.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new R(y.toFixed()),executionPrice:new R(f.toFixed()),priceImpact:new R(g.toFixed()),fee:[b],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[A],expirationTime:Ye(l.expirationTime,p)}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:c,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:u.raw,mintIn:u.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:pi(Q(v({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:pi(Q(v({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new ce(u.token,y)],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]}}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var b,h,A,T,x,P,K,N,_;let m=l===void 0?new On(0):e.raw.mul(new On(l.feeBps.toNumber())).div(new On(1e4)),d=e.raw.sub(m),p=new ce(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=Q(v({},t),{address:Xe(t.address).toString()}),g=[];for(let D of n)try{g.push(Q(v({},this.computeAmountOut({itemPool:D,tickCache:s,simulateCache:o,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(L){this.logDebug("direct error",D.version,D.id.toString(),L.message)}this.logDebug("direct done");for(let[D,L]of Object.entries(r)){let oe={chainId:101,address:D,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},G=L.in.map(Y=>{try{return{pool:Y,data:this.computeAmountOut({itemPool:Y,tickCache:s,simulateCache:o,chainTime:u,epochInfo:c,slippage:a,outputToken:oe,amountIn:p})}}catch(E){this.logDebug("route in error",Y.version,Y.id.toString(),E.message);return}}).sort((Y,E)=>{var Ni,Ri,Li,Oi;let tn=Y===void 0?ot:Y.data.amountOut.amount.raw.sub((Ri=(Ni=Y.data.amountOut.fee)==null?void 0:Ni.raw)!=null?Ri:ot),so=E===void 0?ot:E.data.amountOut.amount.raw.sub((Oi=(Li=E.data.amountOut.fee)==null?void 0:Li.raw)!=null?Oi:ot);return tn.lt(so)?1:-1})[0];if(G===void 0)continue;let ye=new ce(Lr(oe),G.data.amountOut.amount.raw.sub((h=(b=G.data.amountOut.fee)==null?void 0:b.raw)!=null?h:ot));for(let Y of L.out)try{let E=this.computeAmountOut({itemPool:Y,tickCache:s,simulateCache:o,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:ye});g.push(Q(v({},E),{allTrade:!!(G.data.allTrade&&E.allTrade),amountIn:G.data.amountIn,amountOut:E.amountOut,minAmountOut:E.minAmountOut,currentPrice:void 0,executionPrice:new R(new Be({baseToken:G.data.amountIn.amount.token,denominator:G.data.amountIn.amount.raw,quoteToken:E.amountOut.amount.token,numerator:E.amountOut.amount.raw.sub((T=(A=E.amountOut.fee)==null?void 0:A.raw)!=null?T:ot)}).toFixed()),priceImpact:new R(G.data.priceImpact.add(E.priceImpact).toFixed()),fee:[G.data.fee[0],E.fee[0]],routeType:"route",poolInfoList:[G.pool,Y],remainingAccounts:[G.data.remainingAccounts[0],E.remainingAccounts[0]],minMiddleAmountFee:(x=E.amountOut.fee)!=null&&x.raw?new ce(G.data.amountOut.amount.token,((K=(P=G.data.amountOut.fee)==null?void 0:P.raw)!=null?K:ot).add((_=(N=E.amountOut.fee)==null?void 0:N.raw)!=null?_:ot)):void 0,middleToken:G.data.amountOut.amount.token,poolReady:G.data.poolReady&&E.poolReady,poolType:[G.data.poolType,E.poolType],feeConfig:y,expirationTime:Ye(G.data.expirationTime,E.expirationTime)}))}catch(E){this.logDebug("route out error",Y.version,Y.id.toString(),E.message)}}return g.filter(D=>D.allTrade).sort((D,L)=>D.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(ot)?-1:1)}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(ve),m=c.amount.token.mint.equals(ve),d=u.amount.token.mint,p=u.amount.token.isToken2022?Ki:Oe,y=c.amount.token.mint,f=c.amount.token.isToken2022?Ki:Oe,{account:g,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&a.addInstruction(b),g===void 0)throw Error("input account check error");let{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:y,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});A&&a.addInstruction(A);let T;if(e.routeType==="route"){let K=e.middleToken,{account:N,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.isToken2022?Ki:Oe,mint:K.mint,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:n.checkCreateATAOwner});T=N,_&&a.addInstruction(_)}let x=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=to({routeProgram:o,inputMint:d,swapInfo:Q(v({},e),{poolInfo:[...e.poolInfoList],poolKey:x}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:T,destinationToken:h}});return e.feeConfig!==void 0&&a.addInstruction({instructions:[Da(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[te.TransferAmount]}),a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(d=>[d.mintA.toBase58(),d.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(d=>d.id)),s=Vr(o);Object.values(s).forEach(d=>{r.delete(d.mintA.address),r.delete(d.mintB.address)}),console.log("fetching mints info, total: ",r.size);let a=await fr({connection:this.scope.connection,mints:Array.from(r).map(d=>new wt(d))});Object.values(s).forEach(d=>{a[d.mintA.address]={address:new wt(d.mintA.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:d.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},a[d.mintB.address]={address:new wt(d.mintB.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:d.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching clmm pools info, total:",e.needTickArray.length);let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(d=>d.id)}),{computeClmmPoolInfo:c,computePoolTickData:l}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:u,mintInfos:a}),m=Object.keys(e.routePathDict).reduce((d,p)=>Q(v({},d),{[p]:Q(v({},e.routePathDict[p]),{mintProgram:a[p].programId,mDecimals:a[p].decimals,in:e.routePathDict[p].in.map(y=>s[y.id.toBase58()]||c[y.id.toBase58()]),out:e.routePathDict[p].out.map(y=>s[y.id.toBase58()]||c[y.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:u,computeClmmPoolInfo:c,computePoolTickData:l,routePathDict:m}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(r.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(c).forEach(l=>{t[l]=c[l]})}if(new Set(e.filter(c=>c.version===4&&!n[c.id.toString()]).map(c=>c.id.toString())).size>0){let c=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(c).forEach(l=>{n[l]=c[l]})}let s=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};s.size>0&&(await yt(this.scope.connection,Array.from(s).map(l=>({pubkey:new wt(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=Si.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Ln.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let u=[];return e.forEach(c=>{if(c.version===6){let l=t[c.id.toString()],m={programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:Q(v({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else{let l=n[c.id.toString()],m=v({programId:c.programId,id:c.id,mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:vr({programId:new wt(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}}),u}};export{Ci as default};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=trade.mjs.map