@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
package/lib/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- var Bc=Object.defineProperty,Sc=Object.defineProperties;var Kc=Object.getOwnPropertyDescriptors;var qr=Object.getOwnPropertySymbols;var _s=Object.prototype.hasOwnProperty,Vs=Object.prototype.propertyIsEnumerable;var Ms=(r,e,t)=>e in r?Bc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e)=>{for(var t in e||(e={}))_s.call(e,t)&&Ms(r,t,e[t]);if(qr)for(var t of qr(e))Vs.call(e,t)&&Ms(r,t,e[t]);return r},D=(r,e)=>Sc(r,Kc(e));var Ie=(r,e)=>{var t={};for(var n in r)_s.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&qr)for(var n of qr(r))e.indexOf(n)<0&&Vs.call(r,n)&&(t[n]=r[n]);return t};import Sa from"axios";import{get as qo,set as Es}from"lodash";import Fs from"dayjs";import Cc from"dayjs/plugin/utc";Fs.extend(Cc);var Rc=(o=>(o[o.Error=0]="Error",o[o.Warning=1]="Warning",o[o.Info=2]="Info",o[o.Debug=3]="Debug",o))(Rc||{}),Uo=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 Fs().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}},Go={},vs={};function ue(r){let e=qo(Go,r);if(!e){let t=qo(vs,r);e=new Uo({name:r,logLevel:t}),Es(Go,r,e)}return e}function Pf(r,e){Es(vs,r,e);let t=qo(Go,r);t&&(t.level=e)}import{PublicKey as Ul}from"@solana/web3.js";import Gl from"bn.js";import Wl from"big.js";import Jt from"bn.js";import Te from"bn.js";var Ln=9e15,$t=1e9,Xo="0123456789abcdef",Gr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Xr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",zo={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ln,maxE:Ln,crypto:!1},Us,Et,ne=!0,Yr="[DecimalError] ",Zt=Yr+"Invalid argument: ",Gs=Yr+"Precision limit exceeded",Xs=Yr+"crypto unavailable",zs="[object Decimal]",Ye=Math.floor,Ne=Math.pow,Lc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Oc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Nc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ys=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Pt=1e7,$=7,Mc=9007199254740991,_c=Gr.length-1,Yo=Xr.length-1,_={toStringTag:zs};_.absoluteValue=_.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),j(r)};_.ceil=function(){return j(new this.constructor(this),this.e+1,2)};_.clampedTo=_.clamp=function(r,e){var t,n=this,o=n.constructor;if(r=new o(r),e=new o(e),!r.s||!e.s)return new o(NaN);if(r.gt(e))throw Error(Zt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new o(n)};_.comparedTo=_.cmp=function(r){var e,t,n,o,s=this,i=s.d,a=(r=new s.constructor(r)).d,u=s.s,c=r.s;if(!i||!a)return!u||!c?NaN:u!==c?u:i===a?0:!i^u<0?1:-1;if(!i[0]||!a[0])return i[0]?u:a[0]?-c:0;if(u!==c)return u;if(s.e!==r.e)return s.e>r.e^u<0?1:-1;for(n=i.length,o=a.length,e=0,t=n<o?n:o;e<t;++e)if(i[e]!==a[e])return i[e]>a[e]^u<0?1:-1;return n===o?0:n>o^u<0?1:-1};_.cosine=_.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=Vc(n,$s(n,t)),n.precision=r,n.rounding=e,j(Et==2||Et==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};_.cubeRoot=_.cbrt=function(){var r,e,t,n,o,s,i,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(ne=!1,s=l.s*Ne(l.s*l,1/3),!s||Math.abs(s)==1/0?(t=qe(l.d),r=l.e,(s=(r-t.length+1)%3)&&(t+=s==1||s==-2?"0":"00"),s=Ne(t,1/3),r=Ye((r+1)/3)-(r%3==(r<0?-1:2)),s==1/0?t="5e"+r:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(s.toString()),i=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Pe(c.plus(l).times(a),c.plus(u),i+2,1),qe(a.d).slice(0,i)===(t=qe(n.d)).slice(0,i))if(t=t.slice(i-3,i+1),t=="9999"||!o&&t=="4999"){if(!o&&(j(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}i+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(j(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return ne=!0,j(n,r,m.rounding,e)};_.decimalPlaces=_.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ye(this.e/$))*$,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};_.dividedBy=_.div=function(r){return Pe(this,new this.constructor(r))};_.dividedToIntegerBy=_.divToInt=function(r){var e=this,t=e.constructor;return j(Pe(e,new t(r),0,1,1),t.precision,t.rounding)};_.equals=_.eq=function(r){return this.cmp(r)===0};_.floor=function(){return j(new this.constructor(this),this.e+1,3)};_.greaterThan=_.gt=function(r){return this.cmp(r)>0};_.greaterThanOrEqualTo=_.gte=function(r){var e=this.cmp(r);return e==1||e===0};_.hyperbolicCosine=_.cosh=function(){var r,e,t,n,o,s=this,i=s.constructor,a=new i(1);if(!s.isFinite())return new i(s.s?1/0:NaN);if(s.isZero())return a;t=i.precision,n=i.rounding,i.precision=t+Math.max(s.e,s.sd())+4,i.rounding=1,o=s.d.length,o<32?(r=Math.ceil(o/3),e=(1/Qr(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),s=On(i,1,s.times(e),new i(1),!0);for(var u,c=r,l=new i(8);c--;)u=s.times(s),s=a.minus(u.times(l.minus(u.times(l))));return j(s,i.precision=t,i.rounding=n,!0)};_.hyperbolicSine=_.sinh=function(){var r,e,t,n,o=this,s=o.constructor;if(!o.isFinite()||o.isZero())return new s(o);if(e=s.precision,t=s.rounding,s.precision=e+Math.max(o.e,o.sd())+4,s.rounding=1,n=o.d.length,n<3)o=On(s,2,o,o,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,o=o.times(1/Qr(5,r)),o=On(s,2,o,o,!0);for(var i,a=new s(5),u=new s(16),c=new s(20);r--;)i=o.times(o),o=o.times(a.plus(i.times(u.times(i).plus(c))))}return s.precision=e,s.rounding=t,j(o,e,t,!0)};_.hyperbolicTangent=_.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,Pe(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};_.inverseCosine=_.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),o=t.precision,s=t.rounding;return n!==-1?n===0?e.isNeg()?At(t,o,s):new t(0):new t(NaN):e.isZero()?At(t,o+4,s).times(.5):(t.precision=o+6,t.rounding=1,e=e.asin(),r=At(t,o+4,s).times(.5),t.precision=o,t.rounding=s,r.minus(e))};_.inverseHyperbolicCosine=_.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,ne=!1,t=t.times(t).minus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};_.inverseHyperbolicSine=_.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,ne=!1,t=t.times(t).plus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln())};_.inverseHyperbolicTangent=_.atanh=function(){var r,e,t,n,o=this,s=o.constructor;return o.isFinite()?o.e>=0?new s(o.abs().eq(1)?o.s/0:o.isZero()?o:NaN):(r=s.precision,e=s.rounding,n=o.sd(),Math.max(n,r)<2*-o.e-1?j(new s(o),r,e,!0):(s.precision=t=n-o.e,o=Pe(o.plus(1),new s(1).minus(o),t+r,1),s.precision=r+4,s.rounding=1,o=o.ln(),s.precision=r,s.rounding=e,o.times(.5))):new s(NaN)};_.inverseSine=_.asin=function(){var r,e,t,n,o=this,s=o.constructor;return o.isZero()?new s(o):(e=o.abs().cmp(1),t=s.precision,n=s.rounding,e!==-1?e===0?(r=At(s,t+4,n).times(.5),r.s=o.s,r):new s(NaN):(s.precision=t+6,s.rounding=1,o=o.div(new s(1).minus(o.times(o)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=n,o.times(2)))};_.inverseTangent=_.atan=function(){var r,e,t,n,o,s,i,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<=Yo)return i=At(l,m+4,d).times(.25),i.s=c.s,i}else{if(!c.s)return new l(NaN);if(m+4<=Yo)return i=At(l,m+4,d).times(.5),i.s=c.s,i}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/$+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(ne=!1,e=Math.ceil(a/$),n=1,u=c.times(c),i=new l(c),o=c;r!==-1;)if(o=o.times(u),s=i.minus(o.div(n+=2)),o=o.times(u),i=s.plus(o.div(n+=2)),i.d[e]!==void 0)for(r=e;i.d[r]===s.d[r]&&r--;);return t&&(i=i.times(2<<t-1)),ne=!0,j(i,l.precision=m,l.rounding=d,!0)};_.isFinite=function(){return!!this.d};_.isInteger=_.isInt=function(){return!!this.d&&Ye(this.e/$)>this.d.length-2};_.isNaN=function(){return!this.s};_.isNegative=_.isNeg=function(){return this.s<0};_.isPositive=_.isPos=function(){return this.s>0};_.isZero=function(){return!!this.d&&this.d[0]===0};_.lessThan=_.lt=function(r){return this.cmp(r)<0};_.lessThanOrEqualTo=_.lte=function(r){return this.cmp(r)<1};_.logarithm=_.log=function(r){var e,t,n,o,s,i,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.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)s=!0;else{for(o=t[0];o%10===0;)o/=10;s=o!==1}if(ne=!1,a=m+p,i=Ht(c,a),n=e?zr(l,a+10):Ht(r,a),u=Pe(i,n,a,1),jn(u.d,o=m,d))do if(a+=10,i=Ht(c,a),n=e?zr(l,a+10):Ht(r,a),u=Pe(i,n,a,1),!s){+qe(u.d).slice(o+1,o+15)+1==1e14&&(u=j(u,m+1,0));break}while(jn(u.d,o+=10,d));return ne=!0,j(u,m,d)};_.minus=_.sub=function(r){var e,t,n,o,s,i,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return ne?j(r,a,u):r}if(t=Ye(r.e/$),l=Ye(p.e/$),c=c.slice(),s=l-t,s){for(m=s<0,m?(e=c,s=-s,i=d.length):(e=d,t=l,i=c.length),n=Math.max(Math.ceil(a/$),i)+2,s>n&&(s=n,e.length=1),e.reverse(),n=s;n--;)e.push(0);e.reverse()}else{for(n=c.length,i=d.length,m=n<i,m&&(i=n),n=0;n<i;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}s=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),i=c.length,n=d.length-i;n>0;--n)c[i++]=0;for(n=d.length;n>s;){if(c[--n]<d[n]){for(o=n;o&&c[--o]===0;)c[o]=Pt-1;--c[o],c[n]+=Pt}c[n]-=d[n]}for(;c[--i]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=jr(c,t),ne?j(r,a,u):r):new y(u===3?-0:0)};_.modulo=_.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?j(new n(t),n.precision,n.rounding):(ne=!1,n.modulo==9?(e=Pe(t,r.abs(),0,3,1),e.s*=r.s):e=Pe(t,r,0,n.modulo,1),e=e.times(r),ne=!0,t.minus(e))};_.naturalExponential=_.exp=function(){return jo(this)};_.naturalLogarithm=_.ln=function(){return Ht(this)};_.negated=_.neg=function(){var r=new this.constructor(this);return r.s=-r.s,j(r)};_.plus=_.add=function(r){var e,t,n,o,s,i,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),ne?j(r,a,u):r;if(s=Ye(m.e/$),n=Ye(r.e/$),c=c.slice(),o=s-n,o){for(o<0?(t=c,o=-o,i=l.length):(t=l,n=s,i=c.length),s=Math.ceil(a/$),i=s>i?s+1:i+1,o>i&&(o=i,t.length=1),t.reverse();o--;)t.push(0);t.reverse()}for(i=c.length,o=l.length,i-o<0&&(o=i,t=l,l=c,c=t),e=0;o;)e=(c[--o]=c[o]+l[o]+e)/Pt|0,c[o]%=Pt;for(e&&(c.unshift(e),++n),i=c.length;c[--i]==0;)c.pop();return r.d=c,r.e=jr(c,n),ne?j(r,a,u):r};_.precision=_.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Zt+r);return t.d?(e=js(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};_.round=function(){var r=this,e=r.constructor;return j(new e(r),r.e+1,e.rounding)};_.sine=_.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=Fc(n,$s(n,t)),n.precision=r,n.rounding=e,j(Et>2?t.neg():t,r,e,!0)):new n(NaN)};_.squareRoot=_.sqrt=function(){var r,e,t,n,o,s,i=this,a=i.d,u=i.e,c=i.s,l=i.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?i:1/0);for(ne=!1,c=Math.sqrt(+i),c==0||c==1/0?(e=qe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ye((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(s=n,n=s.plus(Pe(i,s,t+2,1)).times(.5),qe(s.d).slice(0,t)===(e=qe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(j(s,u+1,0),s.times(s).eq(i))){n=s;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(j(n,u+1,1),r=!n.times(n).eq(i));break}return ne=!0,j(n,u,l.rounding,r)};_.tangent=_.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=Pe(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,j(Et==2||Et==4?t.neg():t,r,e,!0)):new n(NaN)};_.times=_.mul=function(r){var e,t,n,o,s,i,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ye(l.e/$)+Ye(r.e/$),u=d.length,c=p.length,u<c&&(s=d,d=p,p=s,i=u,u=c,c=i),s=[],i=u+c,n=i;n--;)s.push(0);for(n=c;--n>=0;){for(e=0,o=u+n;o>n;)a=s[o]+p[n]*d[o-n-1]+e,s[o--]=a%Pt|0,e=a/Pt|0;s[o]=(s[o]+e)%Pt|0}for(;!s[--i];)s.pop();return e?++t:s.shift(),r.d=s,r.e=jr(s,t),ne?j(r,m.precision,m.rounding):r};_.toBinary=function(r,e){return Ho(this,2,r,e)};_.toDecimalPlaces=_.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(nt(r,0,$t),e===void 0?e=n.rounding:nt(e,0,8),j(t,r+t.e+1,e))};_.toExponential=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=St(n,!0):(nt(r,0,$t),e===void 0?e=o.rounding:nt(e,0,8),n=j(new o(n),r+1,e),t=St(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toFixed=function(r,e){var t,n,o=this,s=o.constructor;return r===void 0?t=St(o):(nt(r,0,$t),e===void 0?e=s.rounding:nt(e,0,8),n=j(new s(o),r+o.e+1,e),t=St(n,!1,r+n.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};_.toFraction=function(r){var e,t,n,o,s,i,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),s=e.e=js(y)-p.e-1,i=s%$,e.d[0]=Ne(10,i<0?$+i:i),r==null)r=s>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Zt+a);r=a.gt(e)?s>0?e:c:a}for(ne=!1,a=new f(qe(y)),l=f.precision,f.precision=s=y.length*$*2;m=Pe(a,e,0,1,1),o=t.plus(m.times(n)),o.cmp(r)!=1;)t=n,n=o,o=c,c=u.plus(m.times(o)),u=o,o=e,e=a.minus(m.times(o)),a=o;return o=Pe(r.minus(t),n,0,1,1),u=u.plus(o.times(c)),t=t.plus(o.times(n)),u.s=c.s=p.s,d=Pe(c,n,s,1).minus(p).abs().cmp(Pe(u,t,s,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,ne=!0,d};_.toHexadecimal=_.toHex=function(r,e){return Ho(this,16,r,e)};_.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:nt(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(ne=!1,t=Pe(t,r,0,e,1).times(r),ne=!0,j(t)):(r.s=t.s,t=r),t};_.toNumber=function(){return+this};_.toOctal=function(r,e){return Ho(this,8,r,e)};_.toPower=_.pow=function(r){var e,t,n,o,s,i,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ne(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,s=u.rounding,r.eq(1))return j(a,n,s);if(e=Ye(r.e/$),e>=r.d.length-1&&(t=c<0?-c:c)<=Mc)return o=Qs(u,a,t,n),r.s<0?new u(1).div(o):j(o,n,s);if(i=a.s,i<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(i=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=i,a}return t=Ne(+a,c),e=t==0||!isFinite(t)?Ye(c*(Math.log("0."+qe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?i/0:0):(ne=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),o=jo(r.times(Ht(a,n+t)),n),o.d&&(o=j(o,n+5,1),jn(o.d,n,s)&&(e=n+10,o=j(jo(r.times(Ht(a,e+t)),e),e+5,1),+qe(o.d).slice(n+1,n+15)+1==1e14&&(o=j(o,n+1,0)))),o.s=i,ne=!0,u.rounding=s,j(o,n,s))};_.toPrecision=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=St(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):(nt(r,1,$t),e===void 0?e=o.rounding:nt(e,0,8),n=j(new o(n),r,e),t=St(n,r<=n.e||n.e<=o.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toSignificantDigits=_.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(nt(r,1,$t),e===void 0?e=n.rounding:nt(e,0,8)),j(new n(t),r,e)};_.toString=function(){var r=this,e=r.constructor,t=St(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};_.truncated=_.trunc=function(){return j(new this.constructor(this),this.e+1,1)};_.valueOf=_.toJSON=function(){var r=this,e=r.constructor,t=St(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function qe(r){var e,t,n,o=r.length-1,s="",i=r[0];if(o>0){for(s+=i,e=1;e<o;e++)n=r[e]+"",t=$-n.length,t&&(s+=Qt(t)),s+=n;i=r[e],n=i+"",t=$-n.length,t&&(s+=Qt(t))}else if(i===0)return"0";for(;i%10===0;)i/=10;return s+i}function nt(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Zt+r)}function jn(r,e,t,n){var o,s,i,a;for(s=r[0];s>=10;s/=10)--e;return--e<0?(e+=$,o=0):(o=Math.ceil((e+1)/$),e%=$),s=Ne(10,$-e),a=r[o]%s|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),i=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):i=(t<4&&a+1==s||t>3&&a+1==s/2)&&(r[o+1]/s/100|0)==Ne(10,e-2)-1||(a==s/2||a==0)&&(r[o+1]/s/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),i=(n||t<4)&&a==9999||!n&&t>3&&a==4999):i=((n||t<4)&&a+1==s||!n&&t>3&&a+1==s/2)&&(r[o+1]/s/1e3|0)==Ne(10,e-3)-1,i}function Ur(r,e,t){for(var n,o=[0],s,i=0,a=r.length;i<a;){for(s=o.length;s--;)o[s]*=e;for(o[0]+=Xo.indexOf(r.charAt(i++)),n=0;n<o.length;n++)o[n]>t-1&&(o[n+1]===void 0&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}function Vc(r,e){var t,n,o;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),o=(1/Qr(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),r.precision+=t,e=On(r,1,e.times(o),new r(1));for(var s=t;s--;){var i=e.times(e);e=i.times(i).minus(i).times(8).plus(1)}return r.precision-=t,e}var Pe=function(){function r(n,o,s){var i,a=0,u=n.length;for(n=n.slice();u--;)i=n[u]*o+a,n[u]=i%s|0,a=i/s|0;return a&&n.unshift(a),n}function e(n,o,s,i){var a,u;if(s!=i)u=s>i?1:-1;else for(a=u=0;a<s;a++)if(n[a]!=o[a]){u=n[a]>o[a]?1:-1;break}return u}function t(n,o,s,i){for(var a=0;s--;)n[s]-=a,a=n[s]<o[s]?1:0,n[s]=a*i+n[s]-o[s];for(;!n[0]&&n.length>1;)n.shift()}return function(n,o,s,i,a,u){var c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O,M,U,F=n.constructor,H=n.s==o.s?1:-1,Z=n.d,W=o.d;if(!Z||!Z[0]||!W||!W[0])return new F(!n.s||!o.s||(Z?W&&Z[0]==W[0]:!W)?NaN:Z&&Z[0]==0||!W?H*0:H/0);for(u?(p=1,l=n.e-o.e):(u=Pt,p=$,l=Ye(n.e/p)-Ye(o.e/p)),M=W.length,K=Z.length,b=new F(H),P=b.d=[],m=0;W[m]==(Z[m]||0);m++);if(W[m]>(Z[m]||0)&&l--,s==null?(T=s=F.precision,i=F.rounding):a?T=s+(n.e-o.e)+1:T=s,T<0)P.push(1),y=!0;else{if(T=T/p+2|0,m=0,M==1){for(d=0,W=W[0],T++;(m<K||d)&&T--;m++)S=d*u+(Z[m]||0),P[m]=S/W|0,d=S%W|0;y=d||m<K}else{for(d=u/(W[0]+1)|0,d>1&&(W=r(W,d,u),Z=r(Z,d,u),M=W.length,K=Z.length),x=M,A=Z.slice(0,M),h=A.length;h<M;)A[h++]=0;U=W.slice(),U.unshift(0),O=W[0],W[1]>=u/2&&++O;do d=0,c=e(W,A,M,h),c<0?(I=A[0],M!=h&&(I=I*u+(A[1]||0)),d=I/O|0,d>1?(d>=u&&(d=u-1),f=r(W,d,u),g=f.length,h=A.length,c=e(f,A,g,h),c==1&&(d--,t(f,M<g?U:W,g,u))):(d==0&&(c=d=1),f=W.slice()),g=f.length,g<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(W,A,M,h),c<1&&(d++,t(A,M<h?U:W,h,u))),h=A.length):c===0&&(d++,A=[0]),P[m++]=d,c&&A[0]?A[h++]=Z[x]||0:(A=[Z[x]],h=1);while((x++<K||A[0]!==void 0)&&T--);y=A[0]!==void 0}P[0]||P.shift()}if(p==1)b.e=l,Us=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;b.e=m+l*p-1,j(b,a?s+b.e+1:s,i,y)}return b}}();function j(r,e,t,n){var o,s,i,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(o=1,a=m[0];a>=10;a/=10)o++;if(s=e-o,s<0)s+=$,i=e,l=m[d=0],u=l/Ne(10,o-i-1)%10|0;else if(d=Math.ceil((s+1)/$),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,o=1,s%=$,i=s-$+1}else break e;else{for(l=a=m[d],o=1;a>=10;a/=10)o++;s%=$,i=s-$+o,u=i<0?0:l/Ne(10,o-i-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(i<0?l:l%Ne(10,o-i-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(s>0?i>0?l/Ne(10,o-i):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ne(10,($-e%$)%$),r.e=-e||0):m[0]=r.e=0,r;if(s==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ne(10,$-s),m[d]=i>0?(l/Ne(10,o-i)%Ne(10,i)|0)*a:0),c)for(;;)if(d==0){for(s=1,i=m[0];i>=10;i/=10)s++;for(i=m[0]+=a,a=1;i>=10;i/=10)a++;s!=a&&(r.e++,m[0]==Pt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Pt)break;m[d--]=0,a=1}for(s=m.length;m[--s]===0;)m.pop()}return ne&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function St(r,e,t){if(!r.isFinite())return Zs(r);var n,o=r.e,s=qe(r.d),i=s.length;return e?(t&&(n=t-i)>0?s=s.charAt(0)+"."+s.slice(1)+Qt(n):i>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(r.e<0?"e":"e+")+r.e):o<0?(s="0."+Qt(-o-1)+s,t&&(n=t-i)>0&&(s+=Qt(n))):o>=i?(s+=Qt(o+1-i),t&&(n=t-o-1)>0&&(s=s+"."+Qt(n))):((n=o+1)<i&&(s=s.slice(0,n)+"."+s.slice(n)),t&&(n=t-i)>0&&(o+1===i&&(s+="."),s+=Qt(n))),s}function jr(r,e){var t=r[0];for(e*=$;t>=10;t/=10)e++;return e}function zr(r,e,t){if(e>_c)throw ne=!0,t&&(r.precision=t),Error(Gs);return j(new r(Gr),e,1,!0)}function At(r,e,t){if(e>Yo)throw Error(Gs);return j(new r(Xr),e,t,!0)}function js(r){var e=r.length-1,t=e*$+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Qt(r){for(var e="";r--;)e+="0";return e}function Qs(r,e,t,n){var o,s=new r(1),i=Math.ceil(n/$+4);for(ne=!1;;){if(t%2&&(s=s.times(e),Ws(s.d,i)&&(o=!0)),t=Ye(t/2),t===0){t=s.d.length-1,o&&s.d[t]===0&&++s.d[t];break}e=e.times(e),Ws(e.d,i)}return ne=!0,s}function Ds(r){return r.d[r.d.length-1]&1}function Hs(r,e,t){for(var n,o=new r(e[0]),s=0;++s<e.length;)if(n=new r(e[s]),n.s)o[t](n)&&(o=n);else{o=n;break}return o}function jo(r,e){var t,n,o,s,i,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(ne=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ne(2,m))/Math.LN10*2+5|0,u+=n,t=s=i=new d(1),d.precision=u;;){if(s=j(s.times(r),u,1),t=t.times(++l),a=i.plus(Pe(s,t,u,1)),qe(a.d).slice(0,u)===qe(i.d).slice(0,u)){for(o=m;o--;)i=j(i.times(i),u,1);if(e==null)if(c<3&&jn(i.d,u-n,p,c))d.precision=u+=10,t=s=a=new d(1),l=0,c++;else return j(i,d.precision=y,p,ne=!0);else return d.precision=y,i}i=a}}function Ht(r,e){var t,n,o,s,i,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,b=f.constructor,P=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?(ne=!1,l=A):l=e,b.precision=l+=y,t=qe(g),n=t.charAt(0),Math.abs(s=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=qe(f.d),n=t.charAt(0),p++;s=f.e,n>1?(f=new b("0."+t),s++):f=new b(n+"."+t.slice(1))}else return c=zr(b,l+2,A).times(s+""),f=Ht(new b(n+"."+t.slice(1)),l-y).plus(c),b.precision=A,e==null?j(f,A,P,ne=!0):f;for(m=f,u=i=f=Pe(f.minus(1),f.plus(1),l,1),d=j(f.times(f),l,1),o=3;;){if(i=j(i.times(d),l,1),c=u.plus(Pe(i,new b(o),l,1)),qe(c.d).slice(0,l)===qe(u.d).slice(0,l))if(u=u.times(2),s!==0&&(u=u.plus(zr(b,l+2,A).times(s+""))),u=Pe(u,new b(p),l,1),e==null)if(jn(u.d,l-y,P,a))b.precision=l+=y,c=i=f=Pe(m.minus(1),m.plus(1),l,1),d=j(f.times(f),l,1),o=a=1;else return j(u,b.precision=A,P,ne=!0);else return b.precision=A,u;u=c,o+=2}}function Zs(r){return String(r.s*r.s/0)}function Qo(r,e){var t,n,o;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(o=e.length;e.charCodeAt(o-1)===48;--o);if(e=e.slice(n,o),e){if(o-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%$,t<0&&(n+=$),n<o){for(n&&r.d.push(+e.slice(0,n)),o-=$;n<o;)r.d.push(+e.slice(n,n+=$));e=e.slice(n),n=$-e.length}else n-=o;for(;n--;)e+="0";r.d.push(+e),ne&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Ec(r,e){var t,n,o,s,i,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ys.test(e))return Qo(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Oc.test(e))t=16,e=e.toLowerCase();else if(Lc.test(e))t=2;else if(Nc.test(e))t=8;else throw Error(Zt+e);for(s=e.search(/p/i),s>0?(u=+e.slice(s+1),e=e.substring(2,s)):e=e.slice(2),s=e.indexOf("."),i=s>=0,n=r.constructor,i&&(e=e.replace(".",""),a=e.length,s=a-s,o=Qs(n,new n(t),s,s*2)),c=Ur(e,t,Pt),l=c.length-1,s=l;c[s]===0;--s)c.pop();return s<0?new n(r.s*0):(r.e=jr(c,l),r.d=c,ne=!1,i&&(r=Pe(r,o,a*4)),u&&(r=r.times(Math.abs(u)<54?Ne(2,u):Qn.pow(2,u))),ne=!0,r)}function Fc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:On(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Qr(5,t)),e=On(r,2,e,e);for(var o,s=new r(5),i=new r(16),a=new r(20);t--;)o=e.times(e),e=e.times(s.plus(o.times(i.times(o).minus(a))));return e}function On(r,e,t,n,o){var s,i,a,u,c=1,l=r.precision,m=Math.ceil(l/$);for(ne=!1,u=t.times(t),a=new r(n);;){if(i=Pe(a.times(u),new r(e++*e++),l,1),a=o?n.plus(i):n.minus(i),n=Pe(i.times(u),new r(e++*e++),l,1),i=a.plus(n),i.d[m]!==void 0){for(s=m;i.d[s]===a.d[s]&&s--;);if(s==-1)break}s=a,a=n,n=i,i=s,c++}return ne=!0,i.d.length=m+1,i}function Qr(r,e){for(var t=r;--e;)t*=r;return t}function $s(r,e){var t,n=e.s<0,o=At(r,r.precision,1),s=o.times(.5);if(e=e.abs(),e.lte(s))return Et=n?4:1,e;if(t=e.divToInt(o),t.isZero())Et=n?3:2;else{if(e=e.minus(t.times(o)),e.lte(s))return Et=Ds(t)?n?2:3:n?4:1,e;Et=Ds(t)?n?1:4:n?3:2}return e.minus(o).abs()}function Ho(r,e,t,n){var o,s,i,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(nt(t,1,$t),n===void 0?n=p.rounding:nt(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Zs(r);else{for(l=St(r),i=l.indexOf("."),y?(o=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):o=e,i>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-i,d.d=Ur(St(d),10,o),d.e=d.d.length),m=Ur(l,10,o),s=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(i<0?s--:(r=new p(r),r.d=m,r.e=s,r=Pe(r,d,t,n,0,o),m=r.d,s=r.e,c=Us),i=m[t],a=o/2,c=c||m[t+1]!==void 0,c=n<4?(i!==void 0||c)&&(n===0||n===(r.s<0?3:2)):i>a||i===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>o-1;)m[t]=0,t||(++s,m.unshift(1));for(u=m.length;!m[u-1];--u);for(i=0,l="";i<u;i++)l+=Xo.charAt(m[i]);if(y){if(u>1)if(e==16||e==8){for(i=e==16?4:3,--u;u%i;u++)l+="0";for(m=Ur(l,o,e),u=m.length;!m[u-1];--u);for(i=1,l="1.";i<u;i++)l+=Xo.charAt(m[i])}else l=l.charAt(0)+"."+l.slice(1);l=l+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)l="0"+l;l="0."+l}else if(++s>u)for(s-=u;s--;)l+="0";else s<u&&(l=l.slice(0,s)+"."+l.slice(s))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Ws(r,e){if(r.length>e)return r.length=e,!0}function vc(r){return new this(r).abs()}function Dc(r){return new this(r).acos()}function Wc(r){return new this(r).acosh()}function qc(r,e){return new this(r).plus(e)}function Uc(r){return new this(r).asin()}function Gc(r){return new this(r).asinh()}function Xc(r){return new this(r).atan()}function zc(r){return new this(r).atanh()}function Yc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,o=this.rounding,s=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=At(this,s,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?At(this,n,o):new this(0),t.s=r.s):!r.d||e.isZero()?(t=At(this,s,1).times(.5),t.s=r.s):e.s<0?(this.precision=s,this.rounding=1,t=this.atan(Pe(r,e,s,1)),e=At(this,s,1),this.precision=n,this.rounding=o,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Pe(r,e,s,1)),t}function jc(r){return new this(r).cbrt()}function Qc(r){return j(r=new this(r),r.e+1,2)}function Hc(r,e,t){return new this(r).clamp(e,t)}function Zc(r){if(!r||typeof r!="object")throw Error(Yr+"Object expected");var e,t,n,o=r.defaults===!0,s=["precision",1,$t,"rounding",0,8,"toExpNeg",-Ln,0,"toExpPos",0,Ln,"maxE",0,Ln,"minE",-Ln,0,"modulo",0,9];for(e=0;e<s.length;e+=3)if(t=s[e],o&&(this[t]=zo[t]),(n=r[t])!==void 0)if(Ye(n)===n&&n>=s[e+1]&&n<=s[e+2])this[t]=n;else throw Error(Zt+t+": "+n);if(t="crypto",o&&(this[t]=zo[t]),(n=r[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(Xs);else this[t]=!1;else throw Error(Zt+t+": "+n);return this}function $c(r){return new this(r).cos()}function Jc(r){return new this(r).cosh()}function Js(r){var e,t,n;function o(s){var i,a,u,c=this;if(!(c instanceof o))return new o(s);if(c.constructor=o,qs(s)){c.s=s.s,ne?!s.d||s.e>o.maxE?(c.e=NaN,c.d=null):s.e<o.minE?(c.e=0,c.d=[0]):(c.e=s.e,c.d=s.d.slice()):(c.e=s.e,c.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){c.s=1/s<0?-1:1,c.e=0,c.d=[0];return}if(s<0?(s=-s,c.s=-1):c.s=1,s===~~s&&s<1e7){for(i=0,a=s;a>=10;a/=10)i++;ne?i>o.maxE?(c.e=NaN,c.d=null):i<o.minE?(c.e=0,c.d=[0]):(c.e=i,c.d=[s]):(c.e=i,c.d=[s]);return}else if(s*0!==0){s||(c.s=NaN),c.e=NaN,c.d=null;return}return Qo(c,s.toString())}else if(u!=="string")throw Error(Zt+s);return(a=s.charCodeAt(0))===45?(s=s.slice(1),c.s=-1):(a===43&&(s=s.slice(1)),c.s=1),Ys.test(s)?Qo(c,s):Ec(c,s)}if(o.prototype=_,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=Zc,o.clone=Js,o.isDecimal=qs,o.abs=vc,o.acos=Dc,o.acosh=Wc,o.add=qc,o.asin=Uc,o.asinh=Gc,o.atan=Xc,o.atanh=zc,o.atan2=Yc,o.cbrt=jc,o.ceil=Qc,o.clamp=Hc,o.cos=$c,o.cosh=Jc,o.div=el,o.exp=tl,o.floor=nl,o.hypot=rl,o.ln=ol,o.log=il,o.log10=al,o.log2=sl,o.max=ul,o.min=cl,o.mod=ll,o.mul=ml,o.pow=dl,o.random=pl,o.round=fl,o.sign=yl,o.sin=bl,o.sinh=gl,o.sqrt=wl,o.sub=Al,o.sum=Pl,o.tan=kl,o.tanh=hl,o.trunc=Tl,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return o.config(r),o}function el(r,e){return new this(r).div(e)}function tl(r){return new this(r).exp()}function nl(r){return j(r=new this(r),r.e+1,3)}function rl(){var r,e,t=new this(0);for(ne=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return ne=!0,new this(1/0);t=e}return ne=!0,t.sqrt()}function qs(r){return r instanceof Qn||r&&r.toStringTag===zs||!1}function ol(r){return new this(r).ln()}function il(r,e){return new this(r).log(e)}function sl(r){return new this(r).log(2)}function al(r){return new this(r).log(10)}function ul(){return Hs(this,arguments,"lt")}function cl(){return Hs(this,arguments,"gt")}function ll(r,e){return new this(r).mod(e)}function ml(r,e){return new this(r).mul(e)}function dl(r,e){return new this(r).pow(e)}function pl(r){var e,t,n,o,s=0,i=new this(1),a=[];if(r===void 0?r=this.precision:nt(r,1,$t),n=Math.ceil(r/$),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));s<n;)o=e[s],o>=429e7?e[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=o%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);s<n;)o=e[s]+(e[s+1]<<8)+(e[s+2]<<16)+((e[s+3]&127)<<24),o>=214e7?crypto.randomBytes(4).copy(e,s):(a.push(o%1e7),s+=4);s=n/4}else throw Error(Xs);else for(;s<n;)a[s++]=Math.random()*1e7|0;for(n=a[--s],r%=$,n&&r&&(o=Ne(10,$-r),a[s]=(n/o|0)*o);a[s]===0;s--)a.pop();if(s<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=$)a.shift();for(n=1,o=a[0];o>=10;o/=10)n++;n<$&&(t-=$-n)}return i.e=t,i.d=a,i}function fl(r){return j(r=new this(r),r.e+1,this.rounding)}function yl(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function bl(r){return new this(r).sin()}function gl(r){return new this(r).sinh()}function wl(r){return new this(r).sqrt()}function Al(r,e){return new this(r).sub(e)}function Pl(){var r=0,e=arguments,t=new this(e[r]);for(ne=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return ne=!0,j(t,this.precision,this.rounding)}function kl(r){return new this(r).tan()}function hl(r){return new this(r).tanh()}function Tl(r){return j(r=new this(r),r.e+1,1)}_[Symbol.for("nodejs.util.inspect.custom")]=_.toString;_[Symbol.toStringTag]="Decimal";var Qn=_.constructor=Js(zo);Gr=new Qn(Gr);Xr=new Qn(Xr);var V=Qn;import{PublicKey as ti}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Il}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as ea,SYSVAR_RENT_PUBKEY as xl}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Zo=[k({pubkey:Il,isWritable:!1}),k({pubkey:ea.programId,isWritable:!1}),k({pubkey:xl,isWritable:!1})];function $o({publicKey:r,transformSol:e}){let t=Jo(r.toString());if(t instanceof xe)return e&&t.equals(Me)?J:t;if(e&&t.toString()===Me.toBase58())return J;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Jo(r){try{return new xe(r)}catch{return r}}var Nn=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ta=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),rt=new xe("SysvarRent111111111111111111111111111111111"),ei=new xe("SysvarC1ock11111111111111111111111111111111"),Mn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Hr=new xe("Sysvar1nstructions1111111111111111111111111"),Zr=ea.programId,Bf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Sf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Kf=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Rf=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Lf=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Of=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Nf=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Mf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_f=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Vf=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new xe("So11111111111111111111111111111111111111112"),Me=xe.default;function at(r){return $o({publicKey:r,transformSol:!0})}import{PublicKey as Bl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as na}from"@solana/spl-token";var Kt={chainId:101,address:Bl.default.toBase58(),programId:na.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},_e={chainId:101,address:"So11111111111111111111111111111111111111112",programId:na.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 ni=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:s=!1,isToken2022:i=!1}){if(e===Me.toBase58()||e instanceof ti&&Me.equals(e)){this.decimals=_e.decimals,this.symbol=_e.symbol,this.name=_e.name,this.mint=new ti(_e.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=s?ti.default:$o({publicKey:e}),this.isToken2022=i}equals(e){return this===e?!0:this.mint.equals(e.mint)}},pe=ni;pe.WSOL=new ni(D(C({},_e),{mint:_e.address}));import Jr from"big.js";import Cl from"bn.js";import Rl from"decimal.js-light";import Sl from"toformat";var Kl=Sl,Hn=Kl;var $r=ue("module/fraction"),ri=Hn(Jr),Zn=Hn(Rl),Ll={[0]:Zn.ROUND_DOWN,[1]:Zn.ROUND_HALF_UP,[2]:Zn.ROUND_UP},Ol={[0]:Jr.roundDown,[1]:Jr.roundHalfUp,[2]:Jr.roundUp},re=class{constructor(e,t=new Cl(1)){this.numerator=z(e),this.denominator=z(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new re(this.denominator,this.numerator)}add(e){let t=e instanceof re?e:new re(z(e));return this.denominator.eq(t.denominator)?new re(this.numerator.add(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof re?e:new re(z(e));return this.denominator.eq(t.denominator)?new re(this.numerator.sub(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof re?e:new re(z(e));return new re(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof re?e:new re(z(e));return new re(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||$r.logWithError(`${e} is not an integer.`),e<=0&&$r.logWithError(`${e} is not positive.`),Zn.set({precision:e+1,rounding:Ll[n]});let o=new Zn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||$r.logWithError(`${e} is not an integer.`),e<0&&$r.logWithError(`${e} is negative.`),ri.DP=e,ri.RM=Ol[n]||1,new ri(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Nl=ue("Raydium_price"),ve=class extends re{constructor(t){let{baseToken:n,quoteToken:o,numerator:s,denominator:i}=t;super(s,i);this.baseToken=n,this.quoteToken=o,this.scalar=new re(ii(n.decimals),ii(o.decimals))}get raw(){return new re(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ve({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Nl.logWithError("mul token not equals");let n=super.mul(t);return new ve({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};var si=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},$n=si;$n.SOL=new si(Kt);function my(r,e){return r instanceof pe&&e instanceof pe?r.equals(e):r instanceof pe||e instanceof pe?!1:r===e}import Ml from"bn.js";var ra=new re(new Ml(100)),Ve=class extends re{toSignificant(e=5,t,n){return this.mul(ra).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ra).toFixed(e,t,n)}};function Ke(r){if(r instanceof Ve)return new re(r.numerator,r.denominator);if(r instanceof ve)return r.adjusted;if(r instanceof fe)try{return Ke(r.toExact())}catch{return new re(Ee)}if(r instanceof re)return r;let e=String(r),t=mn(e);return new re(t.numerator,t.denominator)}function Ay(r){var n;if(r instanceof Ve)return{fr:new re(r.numerator,r.denominator)};if(r instanceof ve)return{fr:r.adjusted};if(r instanceof fe)return{fr:Ke(r.toExact()),decimals:r.token.decimals};if(r instanceof re)return{fr:r};let e=String(r),t=mn(e);return{fr:new re(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Py(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ee)}function _l(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gt(Ee)}function ky(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.lte(Ee)}function hy(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gte(Ee)}function Vl(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.eq(Ee)}function Ty(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);try{return t.div(n)}catch{return t}}function Iy(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.sub(n)}function xy(r){return r==null?!1:!Vl(r,0)}function By(r,e){return _l(e,r)?e:r}function ai(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.mul(n)}function Sy(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.add(n)}var oi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(oi||{}),Ee=new Te(0),aa=new Te(1),Dy=new Te(2),Wy=new Te(3),qy=new Te(5),dn=new Te(10),Uy=new Te(100),Gy=new Te(1e3),Xy=new Te(1e4),oa=9007199254740991;function z(r){let e=ue("Raydium_parseBigNumberish");if(r instanceof Te)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Te(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=oa||r<=-oa)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Te(String(r))):typeof r=="bigint"?new Te(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Te(0))}function ii(r){return dn.pow(z(r))}function mn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Te)return{numerator:r.toString(),denominator:"1"};if(r instanceof re)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",o=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],s="1"+"0".repeat(o.length),i=t+(n==="0"?"":n)+o||"0";return{denominator:s,numerator:i,sign:t,int:n,dec:o}}function eo(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function El(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function Fl(r,e=0){return r instanceof Te?r:new Te(El(ua(r).mul(dn.pow(new Te(String(e))))))}function ua(r){if(r instanceof Ve)return new re(r.numerator,r.denominator);if(r instanceof ve)return r.adjusted;if(r instanceof fe)try{return ua(r.toExact())}catch{return new re(Ee)}if(r instanceof re)return r;let e=String(r),t=mn(e);return new re(t.numerator,t.denominator)}function zy(r,e){let{numerator:t,denominator:n}=mn(r);return new Ve(new Te(t),new Te(n).mul(e!=null&&e.alreadyDecimaled?new Te(100):new Te(1)))}function Yy(r){let{token:e,numberPrice:t,decimalDone:n}=r,o=new pe({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:s,denominator:i}=mn(t),a=n?new Te(s).mul(dn.pow(new Te(e.decimals))):s,u=new Te(i).mul(dn.pow(new Te(o.decimals)));return new ve({baseToken:o,denominator:u.toString(),quoteToken:new pe(D(C({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function ia(r){let e=new $n({decimals:6,symbol:"usd",name:"usd"}),t=Fl(ai(r,10**e.decimals));return new pn(e,t)}function jy(r,e){return ia(!e||!r?0:ai(r,e))}function vl(r){if(r==null)return;let{numerator:e,denominator:t}=mn(r.toString());return new re(e,t)}function Dl(r){return r instanceof V}function sa(r){return Dl(r)?vl(r):Array.isArray(r)?r.map(e=>sa(e)):ui(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,sa(t)])):r}var ql=ue("Raydium_amount"),to=Hn(Wl);function ca(r,e){let t="0",n="0";if(r.includes(".")){let o=r.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):ql.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends re{constructor(t,n,o=!0,s){let i=new Jt(0),a=dn.pow(new Jt(t.decimals));if(o)i=z(n);else{let u=new Jt(0),c=new Jt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ca(n.toString(),t.decimals);u=z(l),c=z(m)}u=u.mul(a),i=u.add(c)}super(i,a);this.logger=ue(s||"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 fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return to.DP=this.token.decimals,new to(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},pn=class extends re{constructor(t,n,o=!0,s){let i=new Jt(0),a=dn.pow(new Jt(t.decimals));if(o)i=z(n);else{let u=new Jt(0),c=new Jt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ca(n.toString(),t.decimals);u=z(l),c=z(m)}u=u.mul(a),i=u.add(c)}super(i,a);this.logger=ue(s||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new pn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new pn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.currency.decimals,n,o=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return to.DP=this.currency.decimals,new to(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function la(r){new Promise(e=>setTimeout(e,r))}function wb(){return new Date().getTime()}function ui(r){return typeof r=="object"&&r!==null&&![pe,fe,Ul,re,Gl,ve,Ve].some(e=>typeof e=="object"&&r instanceof e)}function be(r){return typeof r=="string"?Jo(r):Array.isArray(r)?r.map(e=>be(e)):ui(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,be(t)])):r}import{PublicKey as tr,sendAndConfirmTransaction as nr,Transaction as rr,TransactionMessage as or,VersionedTransaction as ir}from"@solana/web3.js";import em from"axios";var fn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(fn||{}),E={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 da,ComputeBudgetProgram as ma,Transaction as ro,TransactionMessage as Xl,Keypair as pa,VersionedTransaction as fa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";var Ft=ue("Raydium_txUtil"),ya=1644;function oo(r){let e=[],t=[];return r.microLamports&&(e.push(ma.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(ma.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function _n(r,e){var n,o;let t=e!=null?e:"confirmed";try{return((o=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:o.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function io(r,e){r.length<1&&Ft.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ft.logWithError(`no signers provided:, ${e.toString()}`);let t=new ro;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ya}catch{return!1}}async function ba(r,e,t,n=!0){let o=new da("RaydiumSimuLateTransaction11111111111111111"),s=[],i=new ro;i.feePayer=o;for(let c of e)io([...i.instructions,c],[o])||(s.push(i),i=new ro,i.feePayer=o),i.add(c);i.instructions.length>0&&s.push(i);let a=[];try{if(a=await Yl(r,s,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Ft.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Ft.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Ft.debug("filteredLog:",u),l.length||Ft.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function ga(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Ft.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function vt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Ft.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function se(r,e){let[t,n]=da.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Yl(r,e,t){let n=[];if(t){let o=await r.getLatestBlockhash(),s=[];for(let c of e){c.recentBlockhash=o.blockhash,c.lastValidBlockHeight=o.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");s.push(p)}let i=s.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(i.length/u);c++)a.push(i.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async o=>await(await r.simulateTransaction(o)).value))}catch(o){o instanceof Error&&Ft.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:o.message})}return n}function Jn({instructions:r,payer:e,signers:t}){return io(r,[e,...t])}function er({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=pa.generate().publicKey.toString()}){let s=new Xl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new fa(s).serialize()).toString("base64").length<ya}catch{return!1}}var no={time:0,data:void 0};async function Rb(r){if(!no.data||(Date.now()-no.time)/1e3>30){let e=await r.getEpochInfo();return no={time:Date.now(),data:e},e}else return no.data}var jl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function yn(r){let e=[];return r.forEach(t=>{t instanceof ro&&(t.recentBlockhash||(t.recentBlockhash=zl.toBase58()),t.feePayer||(t.feePayer=pa.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof fa&&(n=jl(n));let o=n.toString("base64");e.push(o)}),console.log("simulate tx string:",e),e}import{PublicKey as Pa,AddressLookupTableAccount as so}from"@solana/web3.js";import{PublicKey as wa}from"@solana/web3.js";import{MINT_SIZE as Ql,TOKEN_PROGRAM_ID as Hl,getTransferFeeConfig as Zl,unpackMint as $l}from"@solana/spl-token";var ci=ue("Raydium_accountInfo_util");async function kt(r,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:s=100}=C({batchRequest:!1},t),i=li(e,s),a=new Array(i.length).fill([]);if(n){let u=i.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=li(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&ci.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"&&ci.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new wa(g),rentEpoch:b}}return null})))}else try{a=await Promise.all(i.map(u=>r.getMultipleAccountsInfo(u,o)))}catch(u){u instanceof Error&&ci.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function ot(r,e,t){let n=await kt(r,e.map(o=>o.pubkey),t);return e.map((o,s)=>D(C({},o),{accountInfo:n[s]}))}var Jl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Jl||{}),vb=1;async function Aa({connection:r,mints:e,config:t}){var s,i,a;if(e.length===0)return{};let n=await ot(r,e.map(u=>({pubkey:at(u)})),t),o={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Ql){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=$l(u.pubkey,u.accountInfo,(s=u.accountInfo)==null?void 0:s.owner);o[u.pubkey.toString()]=D(C({},c),{programId:((i=u.accountInfo)==null?void 0:i.owner)||Hl,feeConfig:(a=Zl(c))!=null?a:void 0})}return o[wa.default.toBase58()]=o[J.toBase58()],o}async function mi({connection:r,address:e}){let t=await kt(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Pa(o))),n={};for(let o=0;o<e.length;o++){let s=t[o],i=e[o];if(!s)continue;let a=new so({key:i,state:so.deserialize(s.data)});n[i.toString()]=a,ao[i.toString()]=a}return n}var ao={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new so({key:new Pa("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:so.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 uo=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 em.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}=oo(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:o=[],endInstructionTypes:s=[],lookupTableAddress:i=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...i.filter(a=>a!==tr.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){let t=new rr;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:o,skipPreflight:s=!0}=n||{},i=o!=null?o:await _n(this.connection,this.blockhashCommitment);if(t.recentBlockhash=i,this.signers.length&&t.sign(...this.signers),yn([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await nr(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:s}),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:o}=this.build(n),s=t.filter(c=>c.transaction.instructions.length>0),i=[o,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:i,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 _n(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let g=[];for(let b of i){let P=await nr(this.connection,b,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});g.push(P)}return{txIds:g,signedTxs:i}}return{txIds:await await Promise.all(i.map(async(g,b)=>(g.recentBlockhash=y,await nr(this.connection,g,a[b].find(P=>P.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:i}}if(this.signAllTransactions){let g=i.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));yn(g);let b=await this.signAllTransactions(g);if(l){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:p});A.push({txId:I,status:"sent",signedTx:b[P]}),m==null||m([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),m==null||m([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:p});P.push(h)}return{txIds:P,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:o}=d,s=Ie(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),i=C(C({},this.cluster==="devnet"?{}:ao),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)i[p]===void 0&&u.push(new tr(p));let c=await mi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))i[p]=y;let l=new or({payerKey:this.feePayer,recentBlockhash:o?tr.default.toBase58():await _n(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(i)),m=new ir(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),yn([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let b=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,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:s||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),s=t.filter(c=>c.builder.instructions.length>0),i=[o,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return i.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:i,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&i.forEach(f=>f.message.recentBlockhash=d),yn(i),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(i.forEach((b,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let P of i){let A=await this.connection.sendTransaction(P,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:A},"confirmed"),b.push(A)}return{txIds:b,signedTxs:i}}return{txIds:await Promise.all(i.map(async b=>{let P=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:i}}if(this.signAllTransactions){let f=await this.signAllTransactions(i);if(l){let g=0,b=[],P=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,h=>{let I=b.findIndex(T=>T.txId===A);I>-1&&(b[I].status=h.err?"error":"success"),m==null||m([...b]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let g=[];for(let b=0;b<f.length;b+=1){let P=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push(P)}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=Ie(c,["computeBudgetConfig"]),o=t?oo(t):{instructions:[],instructionTypes:[]},s=this.signers.reduce((l,m)=>D(C({},l),{[m.publicKey.toBase58()]:m}),{}),i=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...o.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 tr(f));if(u.length<12&&Jn({instructions:d,payer:this.feePayer,signers:y})||Jn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Jn({instructions:t?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:y})?i.push(new rr().add(...o.instructions,...u)):i.push(new rr().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=>s[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=>s[d]).filter(d=>d!==void 0);Jn({instructions:t?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?i.push(new rr().add(...o.instructions,...u)):i.push(new rr().add(...u)),a.push(m)}return i.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:i,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 _n(this.connection,this.blockhashCommitment);if(i.forEach(async(b,P)=>{b.recentBlockhash=f,a[P].length&&b.sign(...a[P])}),yn(i),(g=this.owner)!=null&&g.isKeyPair){if(m){let b=[];for(let P of i){let A=await nr(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});b.push(A)}return{txIds:b,signedTxs:i}}return{txIds:await Promise.all(i.map(async(b,P)=>await nr(this.connection,b,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:i}}if(this.signAllTransactions){let b=await this.signAllTransactions(i);if(m){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:y});A.push({txId:I,status:"sent",signedTx:b[P]}),d==null||d([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),d==null||d([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,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:o=[]}=g,s=Ie(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),i=C(C({},this.cluster==="devnet"?{}:ao),n),a=Array.from(new Set([...this.lookupTableAddress,...o])),u=[];for(let b of a)i[b]===void 0&&u.push(new tr(b));let c=await mi({connection:this.connection,address:u});for(let[b,P]of Object.entries(c))i[b]=P;let l=t?oo(t):{instructions:[],instructionTypes:[]},m=await _n(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,P)=>D(C({},b),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(b=>{let P=[...f,b],A=t?[...l.instructions,...P]:P;if(f.length<12&&er({instructions:A,payer:this.feePayer,lookupTableAddressAccount:i})||er({instructions:P,payer:this.feePayer,lookupTableAddressAccount:i}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let h={};for(let I of[...new Set(a)])i[I]!==void 0&&(h[I]=i[I]);if(t&&er({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:i,recentBlockhash:m})){let I=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(i));p.push(new ir(I))}else{let I=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(i));p.push(new ir(I))}y.push(Array.from(new Set(f.map(I=>I.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(I=>d[I]).filter(I=>I!==void 0)),f=[b]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&er({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:i,recentBlockhash:m})){let A=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(i));p.push(new ir(A))}else{let A=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(i));p.push(new ir(A))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async b=>{var T;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:I=!0}=b||{};if(p.map(async(S,x)=>{y[x].length&&S.sign(y[x]),h&&(S.message.recentBlockhash=h)}),yn(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:S,blockhash:x}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((K,O)=>{y[O].find(M=>M.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let O of p){let M=await this.connection.sendTransaction(O,{skipPreflight:I}),{lastValidBlockHeight:U,blockhash:F}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:F,lastValidBlockHeight:U,signature:M},"confirmed"),K.push(M)}return{txIds:K,signedTxs:p}}return{txIds:await Promise.all(p.map(async K=>{let O=await this.connection.sendTransaction(K,{skipPreflight:I});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:S,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(P){let x=0,K=[],O=async()=>{if(!S[x])return;let M=await this.connection.sendTransaction(S[x],{skipPreflight:I});K.push({txId:M,status:"sent",signedTx:S[x]}),A==null||A([...K]),x++,this.connection.onSignature(M,U=>{let F=K.findIndex(H=>H.txId===M);F>-1&&(K[F].status=U.err?"error":"success"),A==null||A([...K]),U.err||O()},"processed"),this.connection.getSignatureStatus(M)};return O(),{txIds:[],signedTxs:S}}else{let x=[];for(let K=0;K<S.length;K+=1){let O=await this.connection.sendTransaction(S[K],{skipPreflight:I});x.push(O)}return{txIds:x,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var ht=class{constructor(e){this._owner=e}get publicKey(){return ht.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return ht.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return ht.isKeyPair(this._owner)}get isPublicKey(){return ht.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!ht.isKeyPair(e)}};function li(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function rg(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function og(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function ig(r){return[...new Set(r)]}var ka=r=>typeof r=="number",ha=r=>r?new Date(r):new Date,tm=r=>ha(r).getTime();function Ta(r,e,t){let n=ka(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Ia(r,e,t){let n=ka(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function ag(r,e){let n=tm(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return ha(n)}import{PublicKey as me}from"@solana/web3.js";var di=new me("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),pi=new me("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new me("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),nm=new me("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),rm=new me("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),co=new me("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),sr=new me("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),om=new me("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),fi=new me("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),im=new me("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),lg=new me("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),sm=new me("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),am=new me("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),um=new me("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),cm=new me("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),lm=new me("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),mm=new me("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),dm=new me("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),pm=new me("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),fm=new me("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ym=new me("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),ar={IDO_PROGRAM_ID_V1:sm,IDO_PROGRAM_ID_V2:am,IDO_PROGRAM_ID_V3:um,IDO_PROGRAM_ID_V4:cm},mg={AMM_V4:sr,AMM_STABLE:om,CLMM_PROGRAM_ID:fi,FARM_PROGRAM_ID_V3:di,FARM_PROGRAM_ID_V5:pi,FARM_PROGRAM_ID_V6:Vn,OPEN_BOOK_PROGRAM:rm,SERUM_PROGRAM_ID_V3:co,UTIL1216:nm,Router:im,CREATE_CPMM_POOL_PROGRAM:lm,CREATE_CPMM_POOL_AUTH:mm,CREATE_CPMM_POOL_FEE_ACC:dm},dg={SERUM_MARKET:me.default,OPENBOOK_MARKET:new me("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:me.default,FarmV3:new me("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new me("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new me("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new me("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new me("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new me("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new me("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:pm,CREATE_CPMM_POOL_AUTH:fm,CREATE_CPMM_POOL_FEE_ACC:ym,FEE_DESTINATION_ID:new me("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as bm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gm}from"@solana/spl-token";function ge(r,e,t){return se([r.toBuffer(),(t!=null?t:gm).toBuffer(),e.toBuffer()],new bm("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var Ct=1e4;function Ag(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,s=new Le(o.maximumFee.toString()),i=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Ct){let a=new Le(o.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:i}}else{let a=en(r.mul(new Le(Ct)),new Le(Ct-o.transferFeeBasisPoints)),u=new Le(o.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=en(c.mul(new Le(o.transferFeeBasisPoints)),new Le(Ct)),m=l.gt(s)?s:l;return{amount:c,fee:m,expirationTime:i}}else{let a=en(r.mul(new Le(o.transferFeeBasisPoints)),new Le(Ct)),u=a.gt(s)?s:a;return{amount:r,fee:u,expirationTime:i}}}function ke(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=D(C({},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}}),s=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,i=new Le(s.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(s.transferFeeBasisPoints===Ct){let u=new Le(s.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=en(r.mul(new Le(Ct)),new Le(Ct-s.transferFeeBasisPoints)),c=new Le(s.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=en(l.mul(new Le(s.transferFeeBasisPoints)),new Le(Ct)),d=m.gt(i)?i:m;return{amount:l,fee:d,expirationTime:a}}else{let u=en(r.mul(new Le(s.transferFeeBasisPoints)),new Le(Ct)),c=u.gt(i)?i:u;return{amount:r,fee:c,expirationTime:a}}}function Rt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function en(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var yi=(t=>(t.ALL="all",t.Strict="strict",t))(yi||{}),xa=(i=>(i.All="all",i.Standard="standard",i.Concentrated="concentrated",i.AllFarm="allFarm",i.StandardFarm="standardFarm",i.ConcentratedFarm="concentratedFarm",i))(xa||{});var Ue={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},vg=C({},Ue);var Ba="ray_tab_hash",bi="ray_req_hash",wm=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Ba);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Ba,r)),r},lo=async n=>{var o=n,{logCount:r=1e3,removeLastLog:e}=o,t=Ie(o,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(i=>i());let s=JSON.parse(localStorage.getItem(bi)||"[]").slice(0,r-1);e&&s.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),s.unshift(D(C({},t),{time:Date.now(),session:wm()}));try{localStorage.setItem(bi,JSON.stringify(s))}catch{if(e){let i=!1,a=JSON.stringify(t.data).substring(0,100);for(s[0].data=a+(a.length>100?"...":"");!i;){s.pop();let u=JSON.stringify(t.data).substring(0,100);s[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(bi,JSON.stringify(s)),i=!0}catch{i=!1}}return new Promise(u=>u())}return lo(D(C({},t),{logCount:r,removeLastLog:!0}))}};var En=ue("Raydium_Api"),gi=new Map;async function iw(r,e,t=1e3){let n;for(;n==null;)try{En.debug(`Request ${r} through endlessRetry`),n=await e()}catch(o){En.error(`Request ${r} failed, retry after ${t} ms`,o),await la(t)}return n}var mo=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:o,urlConfigs:s}){this.cluster=e,this.urlConfigs=s||{},this.logCount=o||1e3,this.api=Sa.create({baseURL:this.urlConfigs.BASE_HOST||Ue.BASE_HOST,timeout:t}),this.api.interceptors.request.use(i=>{let{method:a,baseURL:u,url:c}=i;return En.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),i},i=>(En.error("Request failed"),Promise.reject(i))),this.api.interceptors.response.use(i=>{let{config:a,data:u,status:c}=i,{method:l,baseURL:m,url:d}=a;return n&&lo({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),En.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},i=>{let{config:a,response:u={}}=i,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&lo({status:c,url:`${m}${d}`,params:a.params,data:i.message,logCount:this.logCount}),En.error(`${l.toUpperCase()} ${m}${d} ${c||i.message}`),Promise.reject(i)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ue.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ue.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Sa.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(o=>o.numSlots);return n.reduce((o,s)=>o+s,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ue.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ue.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ue.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ue.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ue.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:o="desc",page:s=0,pageSize:i=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ue.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${o}&page=${s}&pageSize=${i}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ue.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],o=t.filter(i=>gi.has(i)?(n.push(gi.get(i)),!1):!0),s=[];return o.length&&(s=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ue.POOL_KEY_BY_ID)+`?ids=${o.join(",")}`)).data.filter(Boolean),s.forEach(a=>{gi.set(a.id,a)})),n.concat(s)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:o="all",sort:s="default",order:i="desc",page:a=1}=e,[u,c]=[t&&at(t).toBase58(),n&&n!=="undefined"?at(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ue.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${o}&poolSortField=${s}&sortType=${i}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Ue.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ue.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ue.CHECK_AVAILABILITY)).data}};import{merge as pf}from"lodash";var po="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ka="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as on,AccountLayout as vn,TOKEN_2022_PROGRAM_ID as Kd}from"@solana/spl-token";import{PublicKey as Po,SystemProgram as Cd}from"@solana/web3.js";var wi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Be=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ue(t)}createTxBuilder(e){return this.scope.checkOwner(),new uo({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(wi(e))}logInfo(...e){this.logger.info(wi(e))}logAndCreateError(...e){let t=wi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as hd,createCloseAccountInstruction as Td,createTransferInstruction as Id,TOKEN_PROGRAM_ID as Fn}from"@solana/spl-token";import{PublicKey as xd,SystemProgram as Bd}from"@solana/web3.js";import Sd from"bn.js";import{PublicKey as Ga,Keypair as wd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ad}from"@solana/spl-token";import Pd from"bn.js";import{PublicKey as ld}from"@solana/web3.js";import _a,{isBN as Va}from"bn.js";import{bits as Am,BitStructure as Pm,blob as km,Blob as hm,cstr as Tm,f32 as Im,f32be as xm,f64 as Bm,f64be as Sm,greedy as Km,Layout as Cm,ns64 as Rm,ns64be as Lm,nu64 as Om,nu64be as Nm,offset as Mm,s16 as _m,s16be as Vm,s24 as Em,s24be as Fm,s32 as vm,s32be as Dm,s40 as Wm,s40be as qm,s48 as Um,s48be as Gm,s8 as Xm,seq as zm,struct as ww,Structure as Ym,u16 as jm,u16be as Qm,u24 as Hm,u24be as Zm,u32 as $m,u32be as Jm,u40 as ed,u40be as td,u48 as nd,u48be as rd,u8 as od,UInt as id,union as sd,Union as ad,unionLayoutDiscriminator as ud,utf8 as cd}from"@solana/buffer-layout";var ur=Cm,Ca=Ym,Ra=ad,Aw=Pm,Ai=id,La=hm,Pw=Km,fo=od,Lt=jm,kw=Hm,cr=$m,hw=ed,Tw=nd,Oa=Om,Iw=Qm,xw=Zm,Bw=Jm,Sw=td,Kw=rd,Cw=Nm,Rw=Xm,Lw=_m,Ow=Em,Ge=vm,Nw=Wm,Mw=Um,_w=Rm,Vw=Vm,Ew=Fm,Fw=Dm,vw=qm,Dw=Gm,Ww=Lm,qw=Im,Uw=xm,Gw=Bm,Xw=Sm;var Na=zm,Ma=sd,zw=ud,ye=km,Yw=Tm,jw=cd,Pi=Am,ki=Mm;var bn=class extends ur{constructor(t,n,o){super(t,o);this.blob=ye(t),this.signed=n}decode(t,n=0){let o=new _a(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new _a(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},yo=class extends ur{constructor(t){super(8,t);this._lower=Pi(cr(),!1),this._upper=Pi(cr(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),s=this._upper.decode(t,n+this._lower.span);return C(C({},o),s)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function v(r){return new Ai(1,r)}function je(r){return new Ai(4,r)}function w(r){return new bn(8,!1,r)}function Q(r){return new bn(16,!1,r)}function Ea(r){return new bn(1,!0,r)}function bo(r){return new bn(8,!0,r)}function Fa(r){return new bn(16,!0,r)}var Dt=class extends ur{constructor(t,n,o,s){super(t.span,s);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new Dt(ye(32),e=>new ld(e),e=>e.toBuffer(),r)}var hi=class extends ur{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=fo()}encode(t,n,o=0){return t==null?this.discriminator.encode(0,n,o):(this.discriminator.encode(1,n,o),this.layout.encode(t,n,o+1)+1)}decode(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return null;if(o===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return 1;if(o===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Jw(r,e){return new hi(r,e)}function Xe(r){return new Dt(fo(),md,dd,r)}function md(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function dd(r){return r?1:0}function eA(r,e){let t=cr("length"),n=N([t,G(r,ki(t,-t.span),"values")]);return new Dt(n,({values:o})=>o,o=>({values:o}),e)}function tA(r,e,t){let n=N([w("tag"),e.replicate("data")]);function o({tag:s,data:i}){if(!s.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+s.toString("hex"));return i}return new Dt(n,o,s=>({tag:r,data:s}),t)}function pd(r){let e=cr("length"),t=N([e,ye(ki(e,-e.span),"data")]);return new Dt(t,({data:n})=>n,n=>({data:n}),r)}function nA(r){return new Dt(pd(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function rA(r,e){let t=Ma(fo(),e);return r.forEach((n,o)=>t.addVariant(o,n,n.property)),t}function oA(r,e,t){let n=N([G(r,e,"values")]);return new Dt(n,({values:o})=>o,o=>({values:o}),t)}var Ti=class extends Ca{decode(e,t){return super.decode(e,t)}};function N(r,e,t){return new Ti(r,e,t)}var Ii=class extends Ra{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(o=>o.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function iA(r,e,t){return new Ii(r,e,t)}var xi=class extends La{decode(e,t){let n=super.decode(e,t);if(!n.every(o=>o===0))throw new Error("nonzero padding bytes");return n}};function sA(r){return new xi(r)}function G(r,e,t){let n,o=typeof e=="number"?e:Va(e)?e.toNumber():new Proxy(e,{get(s,i){if(!n){let a=Reflect.get(s,"count");n=Va(a)?a.toNumber():a,Reflect.set(s,"count",n)}return Reflect.get(s,i)},set(s,i,a){return i==="count"&&(n=a),Reflect.set(s,i,a)}});return Na(r,o,t)}var tn=N([B("mint"),B("owner"),w("amount"),je("delegateOption"),B("delegate"),v("state"),je("isNativeOption"),w("isNative"),w("delegatedAmount"),je("closeAuthorityOption"),B("closeAuthority")]);function fd(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Bi(r,...e){if(!fd(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Si(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function va(r,e){Bi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var wo=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Tt=(r,e)=>r<<32-e|r>>>e;var pA=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function yd(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Ki(r){return typeof r=="string"&&(r=yd(r)),Bi(r),r}var go=class{clone(){return this._cloneInto()}},fA={}.toString;function Da(r){let e=n=>r().update(Ki(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function bd(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),u=n?4:0,c=n?0:4;r.setUint32(e+u,i,n),r.setUint32(e+c,a,n)}var Wa=(r,e,t)=>r&e^~r&t,qa=(r,e,t)=>r&e^r&t^e&t,Ao=class extends go{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=wo(this.buffer)}update(e){Si(this);let{view:t,buffer:n,blockLen:o}=this;e=Ki(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let u=wo(e);for(;o<=s-i;i+=o)this.process(u,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),va(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let m=i;m<o;m++)t[m]=0;bd(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=wo(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],s)}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:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var gd=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]),nn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),rn=new Uint32Array(64),Ci=class extends Ao{constructor(){super(64,32,8,!1),this.A=nn[0]|0,this.B=nn[1]|0,this.C=nn[2]|0,this.D=nn[3]|0,this.E=nn[4]|0,this.F=nn[5]|0,this.G=nn[6]|0,this.H=nn[7]|0}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:u}=this;return[e,t,n,o,s,i,a,u]}set(e,t,n,o,s,i,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)rn[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=rn[m-15],p=rn[m-2],y=Tt(d,7)^Tt(d,18)^d>>>3,f=Tt(p,17)^Tt(p,19)^p>>>10;rn[m]=f+rn[m-7]+y+rn[m-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=Tt(a,6)^Tt(a,11)^Tt(a,25),p=l+d+Wa(a,u,c)+gd[m]+rn[m]|0,f=(Tt(n,2)^Tt(n,13)^Tt(n,22))+qa(n,o,s)|0;l=c,c=u,u=a,a=i+p|0,i=s,s=o,o=n,n=p+f|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+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,o,s,i,a,u,c,l)}roundClean(){rn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ua=Da(()=>new Ci);var LA=ue("Raydium_Util");function Xa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],o=[];for(let{pubkey:s,account:i}of t.value){let a=tn.decode(i.data),{mint:u,amount:c}=a;n.push({publicKey:s,mint:u,amount:c,isAssociated:ge(r,u,i.owner).publicKey.equals(s),isNative:!1,programId:i.owner}),o.push({pubkey:s,accountInfo:a,programId:i.owner})}return e&&n.push({mint:Ga.default,amount:new Pd(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:o}}function Qe({fromPublicKey:r,programId:e=Ad}){let t=wd.generate().publicKey.toBase58().slice(0,32);return{publicKey:kd(r,t,e),seed:t}}function kd(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),o=Ua(n);return new Ga(o)}function Ri(r){let{mint:e,tokenAccount:t,owner:n,programId:o=Fn}=r;return hd(t,e,n,o)}function Wt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:s=Fn}=r;return Td(e,t,o,n,s)}async function qt(r){let{connection:e,amount:t,commitment:n,payer:o,owner:s,skipCloseAccount:i}=r,a=await e.getMinimumBalanceForRentExemption(tn.span,n),u=z(t).add(new Sd(a)),c=Qe({fromPublicKey:o,programId:Fn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Bd.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:tn.span,programId:Fn}),Ri({mint:new xd(_e.address),tokenAccount:c.publicKey,owner:s,programId:Fn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:i?[]:[E.CloseAccount],endInstructions:i?[]:[Wt({tokenAccount:c.publicKey,payer:o,owner:s})]}}function lr({source:r,destination:e,owner:t,amount:n,multiSigners:o=[],tokenProgram:s=Fn}){return Id(r,e,t,BigInt(String(n)),o,s)}var mr=class extends Be{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:o}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=o||[],this._clientOwnedToken=!!(n||o)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ge(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let o=C(C({},{}),t),[s,i,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:on},o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Kd},o.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Xa({owner:this.scope.ownerPubKey,solAccountResp:s,tokenAccountResp:{context:i.context,value:[...i.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=on,associatedOnly:o=!0}){await this.fetchWalletTokenAccounts();let s=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),i=this.getAssociatedTokenAccount(t,n);for(let a of s){let{publicKey:u}=a;if(u&&(!o||o&&i.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,g,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:o,associatedOnly:s,owner:i,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Po(t.tokenProgram||on),m=this.getAssociatedTokenAccount(n,new Po(l)),d=(a?[]:this.tokenAccountRawInfos).filter(P=>P.accountInfo.mint.equals(n)&&(!s||P.pubkey.equals(m))).sort((P,A)=>P.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(o===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(s){let P=Li(i,m,i,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(P),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&vn.decode(A.data).mint.equals(n)&&vn.decode(A.data).owner.equals(i)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(P),p.instructionTypes.push(E.CreateATA);if(n.equals(J)&&o.amount){let A=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:o.payer||this.scope.ownerPubKey,amount:(f=o.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),o.amount&&(p.instructions.push(lr({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:o.amount,tokenProgram:on})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(Wt({owner:i,payer:o.payer||i,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let P=Qe({fromPublicKey:i,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(vn.span),h=Cd.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:P.seed,newAccountPubkey:P.publicKey,lamports:A+Number((b=(g=o.amount)==null?void 0:g.toString())!=null?b:0),space:vn.span,programId:l});return p.instructions.push(h,Ri({mint:n,tokenAccount:P.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(Wt({owner:i,payer:o.payer||i,tokenAccount:P.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:P.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=on,autoUnwrapWSOLToSOL:o}){var u;await this.fetchWalletTokenAccounts();let s=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,i=this.scope.ownerPubKey,a={};if(!s){let c=this.getAssociatedTokenAccount(t,n),l=await Li(i,c,i,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],s=c}return o&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Wt({owner:i,payer:i,tokenAccount:s,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:s,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:o,mint:s,programId:i=on,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(s,i);if(new Po(J).equals(s)){let p=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:o,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(this.scope.ownerPubKey,d,this.scope.ownerPubKey,s,i);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(on)&&vn.decode(f.data).mint.equals(s)&&vn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${s.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:o=on,amount:s,useSOLBalance:i,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Po(J))&&i){let l=await this.handleTokenAccount({side:"in",amount:s||0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:d}=l,p=Ie(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:o}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:d}=m,p=Ie(m,["tokenAccount"]);u=d,c.addInstruction(p)}return C({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Hd}from"@solana/spl-token";import{PublicKey as he,SystemProgram as Zd}from"@solana/web3.js";import{PublicKey as $a}from"@solana/web3.js";var Oi=N([v("instruction")]),Ni=N([v("instruction")]),Rd=N([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Q("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),G(w(),15,"padding")]),Ld=N([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),Q("perShareReward"),w("lastSlot"),w("perSlotReward")]),Od=N([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),Q("perShareRewardA"),w("perSlotRewardA"),v("option"),B("rewardVaultB"),ye(7),w("totalRewardB"),Q("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),Nd=N([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Q("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),G(Rd,5,"rewardInfos"),B("creator"),B(),G(w(),32,"padding")]),za=new Proxy(Ld,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return D(C({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(r,e,t)}}),Ya=new Proxy(Od,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return D(C({},o),{version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]})}:Reflect.get(r,e,t)}}),dr=new Proxy(Nd,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return D(C({},o),{version:6,rewardInfos:o.rewardInfos.map(s=>{var i;return D(C({},s),{rewardType:((i=Object.entries(sn).find(a=>String(a[1])===s.rewardType.toString()))!=null?i:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Md=N([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Mi=N([v("instruction"),w("nonce"),G(Md,5,"rewardTimeInfo")]),_i=N([v("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Vi=N([v("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),cP=N([w("state"),B("id"),B("owner"),w("deposited"),G(w(),1,"rewardDebts")]),pr=N([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),1,"rewardDebts"),w(""),w("voteLockedBalance"),G(w(),15)]),lP=N([w("state"),B("id"),B("owner"),w("deposited"),G(w(),2,"rewardDebts")]),ja=N([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),2,"rewardDebts"),G(w(),17)]),Qa=N([w(),w("state"),B("id"),B("owner"),w("deposited"),G(Q(),5,"rewardDebts"),G(w(),16)]),et=N([v("instruction"),w("amount")]),_d=N([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ea("digitShift"),G(v(),7,"reserved1"),G(w(),7,"reserved2")]),Ha=N([ye(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),G(v(),32,"reserved1"),G(_d,4,"votingMints"),bo("timeOffset"),v("bump"),G(v(),7,"reserved2"),G(w(),11,"reserved3")]),Vd=N([bo("startTime"),bo("endTime"),v("kind"),G(v(),15,"reserved")]),Ed=N([G(Vd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Xe("isUsed"),Xe("allowClawback"),v("votingMintConfigIdx"),G(v(),29,"reserved")]),Za=N([ye(8),B("voterAuthority"),B("registrar"),G(Ed,32,"deposits"),v("voterBump"),v("voterWweightRecordBump"),G(v(),94,"reserved")]);var wP=ue("Raydium_farm_config"),Ja=new $a("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),eu=new $a("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),tu={3:za,5:Ya,6:dr},nu={3:pr,5:ja,6:Qa},Ei=r=>[3,5,6].indexOf(r)!==-1,Fi=r=>{var i;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,o=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,s={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${o}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${o}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${o}`}};return(i=s[e])==null?void 0:i.call(s)},sn={"Standard SPL":0,"Option tokens":1},ft={[di.toString()]:3,[pi.toString()]:5,[Vn.toString()]:6};import{PublicKey as ie,SystemProgram as gn,SYSVAR_RENT_PUBKEY as Dd,SYSVAR_CLOCK_PUBKEY as br,TransactionInstruction as De}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Wd,TOKEN_PROGRAM_ID as ut,ASSOCIATED_TOKEN_PROGRAM_ID as qd}from"@solana/spl-token";import ko from"bn.js";function vi(r,e,t){return se([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Di(r,e){return se([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Wi(r,e){return se([e.toBuffer()],r)}function qi(r,e,t){return se([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ui(r,e,t){return se([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Gi(r,e,t,n){return se([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import it from"bn.js";var fr=ue("Raydium.farm.util");function yr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:o}=se([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return o}function He({programId:r,poolId:e,owner:t,version:n}){let{publicKey:o}=se([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return o}var ru=({programId:r,poolId:e})=>se([e.toBuffer()],r);function ou(r){return{isSet:new it(1),rewardPerSecond:z(r.perSecond),rewardOpenTime:z(r.openTime),rewardEndTime:z(r.endTime),rewardType:z(sn[r.rewardType])}}function Xi(r){return z(r.endTime).sub(z(r.openTime)).mul(z(r.perSecond))}function Dn(r){let e=nu[r];return e||fr.logWithError("invalid version",r),e}function Fd(r){let e=tu[r];return e||fr.logWithError("invalid version",r),e}function vd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new it(t)))return r;let o=new it(t).sub(r.lastSlot);r.lastSlot=new it(t);for(let s of r.rewardInfos){if(e.amount.eq(new it(0)))continue;let i=s.perSlotReward.mul(o);s.perShareReward=s.perShareReward.add(i.mul(new it(10).pow(new it(r.version===3?9:15))).div(e.amount)),s.totalReward=s.totalReward.add(i)}}else if(r.version===6)for(let o of r.rewardInfos){if(o.rewardState.eq(new it(0)))continue;let s=it.min(new it(n),o.rewardEndTime);if(o.rewardOpenTime.gte(s))continue;let a=s.sub(o.rewardLastUpdateTime).mul(o.rewardPerSecond),u=o.totalReward.sub(o.totalRewardEmissioned);u.lt(a)?(a=u,o.rewardLastUpdateTime=o.rewardLastUpdateTime.add(u.div(o.rewardPerSecond))):o.rewardLastUpdateTime=s,!e.amount.eq(new it(0))&&(o.accRewardPerShare=o.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),o.totalRewardEmissioned=o.totalRewardEmissioned.add(a))}return r}async function _P({connection:r,farmPools:e,owner:t,config:n,chainTime:o}){let s=!1,i=!1,a=new it(10),u=[];for(let d of e){let p=be(d);p.version===6?i=!0:s=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:He({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await ot(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:g}of l){let b=f.toBase58();if(c[b]=C({},c[b]),y==="state"){let P=Fd(p);(!g||!g.data||g.data.length!==P.span)&&fr.logWithError(`invalid farm state account info, pools.id, ${d}`),c[b].state=P.decode(g.data)}else if(y==="lpVault")(!g||!g.data||g.data.length!==tn.span)&&fr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[b].lpVault=tn.decode(g.data);else if(y==="ledger"){let P=Dn(p);g&&g.data&&(g.data.length!==P.span&&fr.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[b].ledger=P.decode(g.data))}}let m=i||s?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=vd(c[d].state,c[d].lpVault,m,o));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new it(9)):a.pow(new it(15)),g=p.rewardInfos.map((b,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(p.version===6?b.accRewardPerShare:b.perShareReward).div(f).sub(A)});c[d].wrapped=D(C({},c[d].wrapped),{pendingRewards:g})}return c}function VP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ta(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ia(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function zi(r,e,t,n){let o=await r.getAccountInfo(e);if(o===null)throw Error("registrar info check error");let i=Ha.decode(o.data).votingMints.findIndex(l=>l.mint.equals(n));if(i===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:i,isInit:!1};let c=Za.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===i);return c===-1?{index:i,isInit:!1}:{index:c,isInit:!0}}var Ud=ue("Raydium_farm_instruction"),gr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function ho(r){let{version:e,id:t,ledger:n,programId:o,owner:s}=r,i={3:9,5:10}[e];i||Ud.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Oi.span);Oi.encode({instruction:i},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:s,isWritable:!1}),k({pubkey:gn.programId,isWritable:!1}),k({pubkey:Dd,isWritable:!1})];return{instruction:new De({programId:o,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function iu(r){var n;let e=Buffer.alloc(Mi.span);Mi.encode({instruction:0,nonce:new ko(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Zo,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Me}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let o of r.rewardInfo)t.push(k({pubkey:o.rewardMint,isWritable:!1}),k({pubkey:o.rewardVault}),k({pubkey:o.userRewardToken}));return{instruction:new De({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function su(r){let e=Buffer.alloc(Ni.span);Ni.encode({instruction:5},e);let t=[k({pubkey:ut,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new De({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Gd(r,e,t,n,o,s,i,a,u,c,l,m,d){let p=N([v("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Hr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let g=Buffer.from([...gr.voterStakeRegistryDeposit,...f]);return new De({keys:y,programId:r,data:g})}function Xd(r,e,t,n){let o=N([]),s=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:gn.programId,isSigner:!1,isWritable:!1}],i=Buffer.alloc(o.span);o.encode({},i);let a=Buffer.from([...gr.voterStakeRegistryUpdateVoterWeightRecord,...i]);return new De({keys:s,programId:r,data:a})}function zd(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([v("depositEntryIndex"),w("amount")]),g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Hr,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},b);let P=Buffer.from([...gr.voterStakeRegistryWithdraw,...b]);return new De({keys:g,programId:r,data:P})}function Yd(r,e,t,n,o,s){let i=N([v("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:gn.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);return i.encode({ins:23},u),new De({keys:a,programId:r,data:u})}function jd(r,e,t,n,o,s,i,a){let u=N([v("voterBump"),v("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:gn.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:Hr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:i,voterWeightRecordBump:a},l);let m=Buffer.from([...gr.voterStakeRegistryCreateVoter,...l]);return new De({keys:c,programId:r,data:m})}function Qd(r,e,t,n,o,s,i,a,u,c,l,m){let d=N([v("depositEntryIndex"),v("kind"),v("option"),w("startTs"),je("periods"),Xe("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:gn.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:qd,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...gr.voterStakeRegistryCreateDepositEntry,...y]);return new De({keys:p,programId:r,data:f})}async function JP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:s,owner:i,poolId:a,tokenProgram:u}){let c=vi(n,o,s).publicKey,l=He({programId:e,poolId:a,owner:i,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=pr.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new ko(0)))throw Error("user do not has new stake amount");let y=Di(e,a).publicKey,f=Wi(e,a).publicKey,{publicKey:g,nonce:b}=qi(n,c,i),P=ge(g,y,u).publicKey,{publicKey:A,nonce:h}=Ui(n,c,i),I=Gi(t,o,s,i).publicKey,T=[],S=ge(i,y,u).publicKey;if(await r.getAccountInfo(S)===null&&T.push(Wd(i,S,i,y)),await r.getAccountInfo(g)===null){let U=Yd(t,o,i,s,i,I);T.push(U,jd(n,c,g,A,i,i,b,h))}let{index:O,isInit:M}=await zi(r,c,g,y);return M||T.push(Qd(n,c,g,P,i,i,y,O,0,void 0,0,!1)),T.push(Gd(n,c,g,P,S,i,l,a,y,f,e,O,p),Xd(n,c,g,A)),T}async function ek({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:s,owner:i,poolId:a,tokenProgram:u}){let c=vi(n,o,s).publicKey,l=He({programId:e,poolId:a,owner:i,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=pr.decode(m.data);if(d.voteLockedBalance.eq(new ko(0)))throw Error("user has vote locked balance = 0");let p=Di(e,a).publicKey,y=Wi(e,a).publicKey,{publicKey:f}=qi(n,c,i),g=ge(f,p,u).publicKey,{publicKey:b}=Ui(n,c,i),P=Gi(t,o,s,i).publicKey,A=[],{index:h,isInit:I}=await zi(r,c,f,p);if(!I)throw Error("deposit entry index check error");return A.push(zd(n,c,f,i,P,b,g,ge(i,p,u).publicKey,l,a,p,y,e,h,d.voteLockedBalance)),A}function Yi({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:o}){let s=Buffer.alloc(_i.span);_i.encode({instruction:3,rewardReopenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardPerSecond:z(o.perSecond)},s);let i=[k({pubkey:ut,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new De({programId:n.programId,keys:i,data:s})}function ji({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:o}){let s=Buffer.alloc(Vi.span);Vi.encode({instruction:4,isSet:new ko(1),rewardPerSecond:z(o.perSecond),rewardOpenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardType:z(sn[o.rewardType])},s);let i=[...Zo,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:o.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new De({programId:t.programId,keys:i,data:s})}function tk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:o,rewardAccounts:s,owner:i,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],d=He({programId:l,poolId:m,owner:i,version:n}),p=Buffer.alloc(et.span);et.encode({instruction:a,amount:u},p);let y=n===6?[k({pubkey:ut,isWritable:!1}),...c?[k({pubkey:gn.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:d}),k({pubkey:i,isWritable:!1,isSigner:!0}),k({pubkey:o})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:d}),k({pubkey:i,isWritable:!1,isSigner:!0}),k({pubkey:o}),k({pubkey:new ie(t.lpVault)}),k({pubkey:s[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:s[f]})),y.push(k({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(k({pubkey:s[f]}));return new De({programId:l,keys:y,data:p})}function wr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=He({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(et.span);et.encode({instruction:2,amount:z(i)},l);let m=[k({pubkey:ut,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:o[d]}));return new De({programId:a,keys:m,data:l})}function Ar(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(et.span);et.encode({instruction:12,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:o[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function Pr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(et.span);et.encode({instruction:11,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function au(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(et.span);et.encode({instruction:10,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function uu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(et.span);et.encode({instruction:11,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:o[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function cu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=He({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(et.span);et.encode({instruction:1,amount:z(i)},l);let m=[k({pubkey:ut,isWritable:!1}),k({pubkey:gn.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:o[d]}));return new De({programId:a,keys:m,data:l})}var kr=class extends Be{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Me)){let n=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Xi(D(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:o=Vn,txVersion:s}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new he(e.lpMint.address),lockInfo:{lockMint:Ja,lockVault:eu},version:6,rewardInfos:t,programId:o},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Qe({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(dr.span);u.addInstruction({instructions:[Zd.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:dr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=ru({programId:new he(a.programId),poolId:l.publicKey}),y=yr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],g=[];for(let I of a.rewardInfos){I.openTime>=I.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",I.openTime.toString()),isNaN(sn[I.rewardType])&&this.logAndCreateError("rewardType error",I.rewardType),Number(I.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",I.perSecond),f.push(ou(I));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:I,payer:c});S&&u.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=I.mint.equals(Me)?new he(_e.address):I.mint;g.push({rewardMint:x,rewardVault:yr({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:new he(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});P&&u.addInstruction(P),b||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:h}=iu({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:b,programId:a.programId,rewardInfo:g,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[h]}).versionBuild({txVersion:s,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:b,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:o}){var g;let s=ft[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let i=be((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:i.id,rewardInfos:e.rewardInfos,lpVault:i.lpVault,programId:i.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Me)?new he(_e.address):n.mint,l=a.rewardInfos.findIndex(b=>new he(b.mint.address).equals(c)),m=i.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(g=m.vault)!=null?g:Me,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[Yi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:o}){var l;let s=ft[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let i=be((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:i.id,rewardInfos:e.rewardInfos,lpVault:i.lpVault,programId:i.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Me)?new he(_e.address):m.mint,p=a.rewardInfos.findIndex(A=>new he(A.mint.address).equals(d)),y=i.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Me,{rewardPubKey:g,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:m,payer:u});b&&c.addInstruction(b),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Yi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:g,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:o})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:o,payer:s}=e,i=ft[n.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let a=be((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder(),l=o.mint.equals(Me)?new he(_e.address):o.mint,m=yr({programId:new he(n.programId),poolId:new he(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:o,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=l,c.addInstruction({instructions:[ji({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:o})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:o,payer:s}=e,i=ft[n.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let a=be((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of o){let m=l.mint.equals(Me)?new he(_e.address):l.mint,d=yr({programId:new he(n.programId),poolId:new he(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=ji({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(C({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:o,feePayer:s,useSOLBalance:i,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=ft[d];Ei(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new he(n.programId),new he(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=He({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let F of this.scope.account.tokenAccounts)if(a){let H=ge(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&H.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let h=g.lpMint,I=A[h.address];I||this.logAndCreateError("you don't have any lp","lp zero",A);let T=[];for(let F of m){let H=i&&F.mint.address===J.toString(),Z=A[F.mint.address];if(!Z){let{account:W,instructionParams:pt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new he(F.mint.address),notUseTokenAccount:H,createInfo:{payer:s||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!H,associatedOnly:H?!1:a,checkCreateATAOwner:u});Z=W,pt&&P.addInstruction(pt)}A[F.mint.address]=Z,T.push(Z)}let S,x=await this.scope.connection.getAccountInfo(b);if(x&&(S=Dn(p).decode(x.data)),n.programId!==Vn.toString()&&!S){let{instruction:F,instructionType:H}=ho({id:f,programId:y,version:p,ledger:b,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[F],instructionTypes:[H]})}let K=Fi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});K&&this.logAndCreateError(K);let O={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:I,rewardAccounts:T,userAuxiliaryLedgers:c==null?void 0:c.map(F=>new he(F))},M=p===6?cu(O):p===5?uu(O):au(O),U={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return P.addInstruction({instructions:[M],instructionTypes:[U[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:o,deposited:s,useSOLBalance:i,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=ft[n.programId];Ei(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let g={};for(let K of this.scope.account.tokenAccounts)if(u){let O=ge(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&O.equals(K.publicKey)&&(g[K.mint.toString()]=K.publicKey)}else g[K.mint.toString()]=K.publicKey;if(s)s.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=He({programId:new he(n.programId),poolId:new he(n.id),owner:this.scope.ownerPubKey,version:p}),O=await this.scope.connection.getAccountInfo(K);O||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:O}),Dn(p).decode(O.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let b=y.lpMint.address,P=i&&b===J.toString(),A=g[b.toString()];if(!A){let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new he(b),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,O&&f.addInstruction(O)}g[b.toString()]=A;let h=[];for(let K of d){let O=i&&K.mint.address===J.toString(),M=g[K.mint.address];if(!M){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new he(K.mint.address),notUseTokenAccount:O,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});M=U,F&&f.addInstruction(F)}g[K.mint.address]=M,h.push(M)}let I=Fi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:h});I&&this.logAndCreateError(I);let T={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new he(K))},S=p===6?wr(T):p===5?Ar(T):Pr(T),x={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let o=be((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),s=ft[e.programId];s!==6&&this.logAndCreateError("invalid farm version",s);let i=e.rewardInfos.findIndex(y=>y.mint.address===Me.toString()?new he(_e.address):t),a=o.rewardInfos[i];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Me,c=this.createTxBuilder(),l;if(t.equals(Me)){let y=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Xi(D(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[Hd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=su({programId:o.programId,id:o.id,authority:o.authority,lpVault:o.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:o,associatedOnly:s=!0,checkCreateATAOwner:i=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(s){let f=ge(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:g,rewardInfos:b,id:P}=y,A=ft[f],h=g.address,I=n&&h===J.toString(),T=m[h];if(!T){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.programId,mint:new he(h),notUseTokenAccount:I,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:I?!1:s,checkCreateATAOwner:i});T=U,F&&l.addInstruction(F)}m[h.toString()]=T;let S=[];for(let U of b){let F=n&&U.mint.address===J.toString(),H=m[U.mint.address];if(!H){let{account:Z,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:U.mint.programId,mint:new he(U.mint.address),notUseTokenAccount:F,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:s,checkCreateATAOwner:i});H=Z,W&&l.addInstruction(W)}m[U.mint.address]=H,S.push(H)}let x=p[P],K={amount:Ee,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(U=>new he(U))},O=A===6?wr(K):A===5?Ar(K):Pr(K),M={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[O],instructionTypes:[M[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Oe}from"@solana/web3.js";import{AccountLayout as Ep,NATIVE_MINT as ju,TOKEN_PROGRAM_ID as Ro}from"@solana/spl-token";var Ik=N([je("mintAuthorityOption"),B("mintAuthority"),w("supply"),v("decimals"),v("isInitialized"),je("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as $d}from"@solana/web3.js";import{MintLayout as lu,TOKEN_PROGRAM_ID as Jd}from"@solana/spl-token";var Mk=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new $d(e));return!t||t.data.length!==lu.span?void 0:lu.decode(t.data)},_k=({mint:r,decimals:e,programId:t=Jd,logoURI:n="",priority:o=3})=>{let s=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:s,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:s,tags:[],priority:o}},To=r=>new pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),Qi=o=>{var s=o,{amount:r,isRaw:e,name:t}=s,n=Ie(s,["amount","isRaw","name"]);return new fe(new pe({mint:at(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function Vk(r){return r.address===Kt.address?_e:r}function Ek(r){return r.address===_e.address?Kt:r}var wn=o=>{var s=o,{address:r,programId:e,decimals:t}=s,n=Ie(s,["address","programId","decimals"]);return C({chainId:101,address:at(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Hi=r=>r?D(C({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:D(C({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:D(C({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as Un,ASSOCIATED_TOKEN_PROGRAM_ID as pp}from"@solana/spl-token";import{PublicKey as we,TransactionInstruction as Ut,SystemProgram as wu,SYSVAR_RENT_PUBKEY as fp}from"@solana/web3.js";var Zi=N([v("instruction"),w("amountIn"),w("minAmountOut")]),$i=N([v("instruction"),w("maxAmountIn"),w("amountOut")]),Qk=N([v("instruction"),v("nonce")]),Ji=N([v("instruction"),v("nonce"),w("startTime")]),hr=N([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),G(w(),3,"padding")]),ep=N([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),G(w(),64,"padding")]),es=N([v("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),ts=N([v("instruction"),w("amountIn")]),Hk={4:hr,5:ep},mu=N([w("fee")]);import{PublicKey as tp}from"@solana/web3.js";var qn=new tp("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pn=5e4,np=N([w("x"),w("y"),w("price")]),rp=N([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),G(np,Pn,"DataElement")]);function op(r,e){return[0,Pn-2]}function ip(r){return[0,Pn-2]}function sp(r){return[0,Pn-2]}function ap(r,e,t){let[n,o]=op(e,t),s=n,i=o,a=0,u=e*r.multiplier/t;for(;s<=i;){if(a=Math.floor((i+s)/2),a===0||a>=Pn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)i=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];s=a+1}}return[a,a,!1]}function ns(r,e,t){let[n,o,s]=ap(r,e,t);if(!s)return 0;if(n===o){let i=r.DataElement[n].x;return e*r.multiplier/i}else{let i=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[o].x,c=r.DataElement[o].y,l=t*(u*a-i*c),m=i*l,d=(u-i)*(e*a-i*t)*c,p=m+d;return e*r.multiplier*l/p}}function An(r,e,t){return e*r.multiplier/t}function du(r,e,t){return e*t/r.multiplier}function up(r,e){let[t,n]=ip(e),o=t,s=n,i=0,a=e;for(;o<s;){if(i=Math.floor((s+o)/2),i<=0||i>Pn-2)return[i,i,!1];let u=r.DataElement[i].x,c=r.DataElement[i-1].x,l=r.DataElement[i+1].x;if(a===u)return[i,i,!0];if(a===c)return[i-1,i-1,!0];if(a===l)return[i+1,i+1,!0];if(a<c)s=i-1;else{if(a>c&&a<u)return[i-1,i,!0];if(a>u&&a<l)return[i,i+1,!0];o=i+1}}return[i,i,!1]}function cp(r,e){let[t,n]=sp(e),o=t,s=n,i=0,a=e;for(;o<=s;){if(i=Math.floor((s+o)/2),i<=0||i>=Pn-2)return[i,i,!1];let u=r.DataElement[i].y,c=r.DataElement[i-1].y,l=r.DataElement[i+1].y;if(a===u)return[i,i,!0];if(a===c)return[i-1,i-1,!0];if(a===l)return[i+1,i+1,!0];if(a<l)o=i+1;else{if(a<c&&a>u)return[i-1,i,!0];if(a<u&&a>l)return[i,i+1,!0];s=i-1}}return[i,i,!1]}function pu(r,e,t,n){let o=n?e+t:e-t,[s,i,a]=up(r,o);if(!a)return[0,0,!1,a];if(s===i)return[r.DataElement[i].price,r.DataElement[i].y,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[i].x,l=r.DataElement[s].price,m=r.DataElement[i].price,d=r.DataElement[s].y,p=r.DataElement[i].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(o-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-o)*r.multiplier/l),[y,f,!1,a]}}}function lp(r,e,t,n){let o=n?e-t:e+t,[s,i,a]=cp(r,o);if(!a)return[0,0,!1,a];if(s===i)return[r.DataElement[i].price,r.DataElement[i].x,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[i].x,l=r.DataElement[s].price,m=r.DataElement[i].price,d=r.DataElement[s].y,p=r.DataElement[i].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-o)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(o-p)/r.multiplier),[y,f,!1,a]}}}function mp(r,e){let t=pu(r,e,0,!1);return t[3]?t[0]:0}function fu(r,e,t,n){let o=ns(r,e,t),s=An(r,e,o),i=An(r,t,o),a=An(r,n,o),u=!0,[c,l,m,d]=pu(r,s,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=i-l;return du(r,p,o)}}function yu(r,e,t,n){let o=ns(r,e,t),s=An(r,e,o),i=An(r,t,o),a=An(r,n,o),u=!1,[c,l,m,d]=lp(r,i,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=s-l;return du(r,p,o)}}function dp(r){let e=rp.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function bu(r,e,t,n){let o=mp(r,An(r,e,ns(r,e,t)))/r.multiplier;return n?o:1/o}var Wn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(qn);e&&(this._layoutData=dp(e==null?void 0:e.data))}}};var gu=ue("Raydium_liquidity_instruction");function Au(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:s,fixedSide:i}=r,a=Buffer.alloc(es.span);es.encode({instruction:3,baseAmountIn:z(o),quoteAmountIn:z(s),fixedSide:i==="base"?Ee:aa},a);let u=[k({pubkey:Un,isWritable:!1}),k({pubkey:new we(e.id)}),k({pubkey:new we(t.authority),isWritable:!1}),k({pubkey:new we(t.openOrders),isWritable:!1}),k({pubkey:new we(t.targetOrders)}),k({pubkey:new we(e.lpMint.address)}),k({pubkey:new we(t.vault.A)}),k({pubkey:new we(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:qn})),u.push(k({pubkey:new we(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new we(t.marketEventQueue),isWritable:!1})),new Ut({programId:new we(e.programId),keys:u,data:a})}function rs(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:o}=r,s=be(t),i=4;if(e.pooltype.includes("StablePool")&&(i=5),i===4||i===5){let a=Buffer.alloc(ts.span);ts.encode({instruction:4,amountIn:z(o)},a);let u=[k({pubkey:Un,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.mintLp.address}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return i===5?u.push(k({pubkey:qn})):(u.push(k({pubkey:s.id})),u.push(k({pubkey:s.id}))),u.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks})),new Ut({programId:s.programId,keys:u,data:a})}return new Ut({programId:s.programId,keys:[]})}function Pu({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:s,pcMint:i,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:g,userLpVault:b,nonce:P,openTime:A,coinAmount:h,pcAmount:I,ammConfigId:T,feeDestinationId:S}){let x=N([v("instruction"),v("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:pp,isSigner:!1,isWritable:!1},{pubkey:wu.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0}],O=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:I},O),{instruction:new Ut({keys:K,programId:r,data:O}),instructionType:E.AmmV4CreatePool}}function dh(r){let e=N([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new we(r.id),isWritable:!1}),k({pubkey:new we(r.authority),isWritable:!1}),k({pubkey:new we(r.openOrders),isWritable:!1}),k({pubkey:new we(r.vault.A),isWritable:!1}),k({pubkey:new we(r.vault.B),isWritable:!1}),k({pubkey:new we(r.mintLp.address),isWritable:!1}),k({pubkey:new we(r.marketId),isWritable:!1}),k({pubkey:new we(r.marketEventQueue),isWritable:!1})];return new Ut({programId:new we(r.programId),keys:n,data:t})}function yp({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},o){let s=be(r),i=Buffer.alloc(Zi.span);Zi.encode({instruction:9,amountIn:z(t),minAmountOut:z(n)},i);let a=[k({pubkey:Un,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders})];return o===4&&a.push(k({pubkey:s.targetOrders})),a.push(k({pubkey:s.vault.A}),k({pubkey:s.vault.B})),o===5&&a.push(k({pubkey:qn})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Ut({programId:s.programId,keys:a,data:i})}function bp({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},o){let s=be(r),i=Buffer.alloc($i.span);$i.encode({instruction:11,maxAmountIn:z(t),amountOut:z(n)},i);let a=[k({pubkey:Un,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return o===5&&a.push(k({pubkey:qn})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Ut({programId:s.programId,keys:a,data:i})}function Io(r){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:s,fixedSide:i}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(i==="in")return yp(D(C({},a),{amountIn:o,minAmountOut:s}),t);if(i==="out")return bp(D(C({},a),{maxAmountIn:o,amountOut:s}),t);gu.logWithError("invalid params","params",r)}throw gu.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function ph({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Ji.span);Ji.encode({instruction:0,nonce:5,startTime:z(t)},n);let o=be(r),s=[k({pubkey:Un,isWritable:!1}),k({pubkey:wu.programId,isWritable:!1}),k({pubkey:fp,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.mintA.address,isWritable:!1}),k({pubkey:o.mintB.address,isWritable:!1}),k({pubkey:o.vault.A,isWritable:!1}),k({pubkey:o.vault.B,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:o.id,isWritable:!1}),k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Ut({programId:o.programId,keys:s,data:n})}function ku({poolKeys:r}){let e=N([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new we(r.id),isWritable:!1}),k({pubkey:new we(r.authority),isWritable:!1}),k({pubkey:new we(r.openOrders),isWritable:!1}),k({pubkey:new we(r.vault.A),isWritable:!1}),k({pubkey:new we(r.vault.B),isWritable:!1}),k({pubkey:new we(r.mintLp.address),isWritable:!1}),k({pubkey:new we(r.marketId),isWritable:!1}),k({pubkey:new we(r.marketEventQueue),isWritable:!1})];return{instruction:new Ut({programId:new we(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as ze,TOKEN_2022_PROGRAM_ID as an,ASSOCIATED_TOKEN_PROGRAM_ID as Fu}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as xt,SystemProgram as Gn,Keypair as ms}from"@solana/web3.js";import vu from"bn.js";import Sp from"bn.js";function hu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function yh(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function bh(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function xo(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function os(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function is(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Tr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Tu(r,e){return Tr(r,e)?null:os(r,e)}function Iu(r,e){return Tr(r,e)?null:is(r,e)}var gp=Buffer.from("amm_config","utf8"),wp=Buffer.from("pool","utf8"),Ap=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("pool_reward_vault","utf8"),xu=Buffer.from("position","utf8"),kp=Buffer.from("tick_array","utf8"),hp=Buffer.from("operation","utf8"),Tp=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ph(r,e){return se([gp,hu(e)],r)}function Bu(r,e,t,n){return se([wp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function ss(r,e,t){return se([Ap,e.toBuffer(),t.toBuffer()],r)}function Su(r,e,t){return se([Pp,e.toBuffer(),t.toBuffer()],r)}function Ae(r,e,t){return se([kp,e.toBuffer(),xo(t)],r)}function kn(r,e,t,n){return se([xu,e.toBuffer(),xo(t),xo(n)],r)}function yt(r,e){return se([xu,e.toBuffer()],r)}function Bo(r){return se([Buffer.from("metadata","utf8"),Mn.toBuffer(),r.toBuffer()],Mn)}function Ir(r){return se([hp],r)}function ct(r,e){return se([Tp,e.toBuffer()],r)}import Ot from"bn.js";var de=new Ot(0),lt=new Ot(1),Gt=new Ot(-1),mt=new Ot(1).shln(64),So=new Ot(1).shln(128),as=mt.sub(lt),xr=64,Ku=So.subn(1),Ze=-443636,tt=-Ze,Nt=new Ot("4295048016"),Mt=new Ot("79226673521066979257578248091"),Cu=16,Ru="59543866431248",Lu="184467440737095516",Ou="15793534762490258745",Ko=new Ot(10).pow(new Ot(6)),Ip=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Ip||{}),Th={[500]:10,[3e3]:60,[1e4]:200},Ih={version:6,liquidity:de,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:de,feeGrowthGlobalX64B:de,protocolFeesTokenA:de,protocolFeesTokenB:de,swapInAmountTokenA:de,swapOutAmountTokenB:de,swapInAmountTokenB:de,swapOutAmountTokenA:de,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},Nu={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},xh=new Ot("18446744073700000000");var xp=15,le=class{static async getTickArrays(e,t,n,o,s,i,a){let u=[],c=Y.getTickArrayStartIndexByTick(o,s),l=Y.getInitializedTickArrayInRange(i,a,s,c,Math.floor(xp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=Ae(t,n,l[p]);u.push(y)}let m=(await kt(e,u)).map(p=>p!==null?Br.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(C({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,o,s,i){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,o,s,i);for(;a==null||a.liquidityGross.lten(0);){if(c=Y.getNextTickArrayStartIndex(c,s,i),this.checkIsValidStartIndex(c,s))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,i);[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,o,s){let i=Math.floor(e/le.tickCount(t)),a=n?Y.searchLowBitFromStart(o,s,i-1,1,t):Y.searchHightBitFromStart(o,s,i+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,o){let s;if(o){let a=Fe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a-1}}else{let a=0;for(;a<Fe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a+1}}let{publicKey:i}=Ae(e,t,n.startTickIndex);return{nextTick:s,tickArrayAddress:i,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,o,s,i){let a=Y.getTickArrayStartIndexByTick(o,s),u=Math.floor((o-a)/s),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(i)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}=Ae(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(Y.checkIsOutOfBoundary(e)){if(e>tt)return!1;let n=Y.getTickArrayStartIndexByTick(Ze,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Fe*e}};import oe from"bn.js";import{PublicKey as It}from"@solana/web3.js";import Ce from"bn.js";var us=14,Xt=class{static maxTickInTickarrayBitmap(e){return e*Fe*hn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),o=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(o+=1);let s=n*o;return e<0?{minValue:-s,maxValue:-s+n}:{minValue:s,maxValue:s+n}}static nextInitializedTickArrayStartIndex(e,t,n,o){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let s=this.maxTickInTickarrayBitmap(n),i=o?t-le.tickCount(n):t+le.tickCount(n);if(i<-s||i>=s)return{isInit:!1,tickIndex:t};let a=n*Fe,u=i/a+512;i<0&&i%a!=0&&u--;let c=Math.abs(u);if(o){let l=e.shln(1024-c-1),m=Tu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-s}}else{let l=e.shrn(c),m=Iu(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}},Sr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Xt.maxTickInTickarrayBitmap(t),o=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&o--,o}static getBitmap(e,t,n){let o=this.getBitmapOffset(e,t);return e<0?{offset:o,tickarrayBitmap:n.negativeTickArrayBitmap[o]}:{offset:o,tickarrayBitmap:n.positiveTickArrayBitmap[o]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:o}=this.extensionTickBoundary(t);if(e>=o&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Xt.maxTickInTickarrayBitmap(e),n=-t;if(tt<=t)throw Error(`extensionTickBoundary check error: ${tt}, ${t}`);if(n<=Ze)throw Error(`extensionTickBoundary check error: ${n}, ${Ze}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:o}=this.getBitmap(e,t,n),s=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:Y.mergeTickArrayBitmap(o).testn(s),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,o){let s=le.tickCount(t),i=n?e-s:e+s,{tickarrayBitmap:a}=this.getBitmap(i,t,o);return this.nextInitializedTickArrayInBitmap(a,i,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,o){let{minValue:s,maxValue:i}=Xt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(o){let u=Y.mergeTickArrayBitmap(e).shln(hn-1-a),c=Tr(512,u)?null:os(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s}}else{let u=Y.mergeTickArrayBitmap(e).shrn(a),c=Tr(512,u)?null:is(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Xt.maxTickInTickarrayBitmap(t),o=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(o=hn-o),o}};import _t from"bn.js";var Kr=class{static getfeeGrowthInside(e,t,n){let o=new _t(0),s=new _t(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,s=t.feeGrowthOutsideX64B):(o=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),s=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let i=new _t(0),a=new _t(0);e.tickCurrent<n.tick?(i=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64A,o),i),c=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64B,s),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:i}=this.getfeeGrowthInside(e,n,o),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,mt),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64B),t.liquidity,mt),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,o){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:i}=this.getfeeGrowthInside(e,n,o),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,mt),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64B),t.liquidity,mt),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,o){let s=[],i=this.getRewardGrowthInsideV2(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<i.length;a++){let u=i[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,mt),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static GetPositionRewards(e,t,n,o){let s=[],i=this.getRewardGrowthInside(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<i.length;a++){let u=i[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,mt),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static getRewardGrowthInside(e,t,n,o){let s=[];for(let i=0;i<o.length;i++){let a=new _t(0);t.liquidityGross.eqn(0)?a=o[i].rewardGrowthGlobalX64:e<t.tick?a=o[i].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[i]):a=t.rewardGrowthsOutsideX64[i];let u=new _t(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[i]:u=o[i].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[i])),s.push(te.wrappingSubU128(te.wrappingSubU128(o[i].rewardGrowthGlobalX64,a),u))}return s}static getRewardGrowthInsideV2(e,t,n,o){let s=[];for(let i=0;i<o.length;i++){let a=new _t(0);t.liquidityGross.eqn(0)?a=o[i].rewardGrowthGlobalX64:e<t.tick?a=o[i].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[i]):a=t.rewardGrowthsOutsideX64[i];let u=new _t(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[i]:u=o[i].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[i])),s.push(te.wrappingSubU128(te.wrappingSubU128(o[i].rewardGrowthGlobalX64,a),u))}return s}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:o,add:s,epochInfo:i}){var g,b,P,A;let a=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),u=ee.getSqrtPriceX64FromTick(t.tickLower),c=ee.getSqrtPriceX64FromTick(t.tickUpper),l=s?1+o:1-o,m=ce.getAmountsFromLiquidity(a,u,c,n,s),[d,p]=[ke(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,i,!0),ke(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,i,!0)],[y,f]=[ke(new _t(new V(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,i,!0),ke(new _t(new V(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,i,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Rt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Mu}from"@solana/spl-token";var Re=class{static getOutputAmountAndRemainAccounts(e,t,n,o,s,i=!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}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o,l,s,i);return u.push(...y),{allTrade:d,expectedAmountOut:p.mul(Gt),remainingAccounts:u,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,o,s){let i=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,i);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,i);if(f.isExist){let{publicKey:g}=Ae(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,i,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o.mul(Gt),c,s);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:o}=Re.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Sr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):Y.checkTickArrayIsInitialized(Y.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Ae(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}let{isExist:s,nextStartIndex:i}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(s){let{publicKey:a}=Ae(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),o=t?Y.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):Y.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return o.length>0?{isExist:!0,nextStartIndex:o[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:o,tickIndex:s}=Xt.nextInitializedTickArrayStartIndex(Y.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(o)return{isExist:!0,nextStartIndex:s};t=s;let{isInit:i,tickIndex:a}=Sr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(i)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ze||t>tt)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:s}){var a,u,c;let i=[];for(let l=0;l<s.length;l++){let m=s[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=D(C({},m),{perSecond:te.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new It(d)});if(p.tokenMint.equals(It.default))continue;if(n<=p.openTime.toNumber()||o.eq(de)){i.push(p);continue}let y=new Ce(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=te.mulDivFloor(f,p.emissionsPerSecondX64,o),b=p.rewardGrowthGlobalX64.add(g),P=te.mulDivFloor(f,p.emissionsPerSecondX64,mt),A=p.rewardTotalEmissioned.add(P);i.push(D(C({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:A,lastUpdateTime:y}))}return i}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:o}=this.tickRange(e);for(let s of t){let i=Y.getTickArrayStartIndexByTick(s,e);if(i>=n||i<o)return!0}return!1}static tickRange(e){let t=Xt.maxTickInTickarrayBitmap(e),n=-t;return t>tt&&(t=le.getArrayStartIndex(tt,e)+le.tickCount(e)),n<Ze&&(n=le.getArrayStartIndex(Ze,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/le.tickCount(t)*hn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await ot(e,t.map(i=>({pubkey:i})),{batchRequest:n}),s={};for(let i of o)i.accountInfo!==null&&(s[i.pubkey.toString()]=_u.decode(i.accountInfo.data));return s}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},s=[];for(let u of t){let c=Y.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=Y.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=Ae(u.programId,u.id,m);s.push({pubkey:d}),o[d.toString()]=u.id}}let i=await ot(e,s,{batchRequest:n}),a={};for(let u of i){if(!u.accountInfo)continue;let c=o[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Br.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(C({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:o=!1,updateOwnerRewardAndFee:s=!0}){var a;let i=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(i.find(l=>l.equals(c.state.programId))||i.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 i)c.push(yt(p,d).publicKey);let l=await kt(t,c,{batchRequest:o}),m={};for(let d of l){if(d===null)continue;let p=Co.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,b=Y._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),P=Y._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ce.getAmountsFromLiquidity(g.sqrtPriceX64,b.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(b.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>D(C({},x),{pendingReward:new Ce(0)})),leverage:I,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let T=await Y.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await Y.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(s){let d=Object.values(m),p=await kt(t,d,{batchRequest:o}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let b=d[f].toString();y[b]=Br.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let b of g){let P=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,h=y[m[P].toString()],I=y[m[A].toString()],T=h.ticks[Y.getTickOffsetInArray(b.tickLower,f.tickSpacing)],S=I.ticks[Y.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await Kr.GetPositionFees(f,b,T,S),O=await Kr.GetPositionRewards(f,b,T,S);b.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),b.tokenFeeAmountB=K.gte(new Ce(0))?K:new Ce(0);for(let M=0;M<O.length;M++)b.rewardInfos[M].pendingReward=O[M].gte(new Ce(0))?O[M]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:o,amountIn:s,slippage:i,priceLimit:a=new V(0),catchLiquidityInsufficient:u=!1}){var U;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 V(0))?c=l?Nt.add(new Ce(1)):Mt.sub(new Ce(1)):c=ee.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ke(s,m,o,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:g,executionPrice:b,feeAmount:P}=Re.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((U=p.fee)!=null?U:de),c,u),A=ke(f,d,o,!1),h=ee.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),I=l?h:new V(1).div(h),T=f.mul(new Ce(Math.floor((1-i)*1e10))).div(new Ce(1e10)),S=ke(T,d,o,!1),x=l?e.currentPrice:new V(1).div(e.currentPrice),K=new V(I).sub(x).abs(),O=x,M=new Ve(new V(K).mul(10**15).toFixed(0),new V(O).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:Rt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:M,fee:P,remainingAccounts:g,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:o,slippage:s,epochInfo:i,catchLiquidityInsufficient:a=!1}){let u=o.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new pe(D(C({},c),{mint:c.address,isToken2022:c.programId===Mu.toBase58()})),new pe(D(C({},l),{mint:l.address,isToken2022:l.programId===Mu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:g,expirationTime:b,currentPrice:P,executionPrice:A,priceImpact:h,fee:I,remainingAccounts:T,executionPriceX64:S}=Re.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new It(c.address),amountIn:n,slippage:s,epochInfo:i,catchLiquidityInsufficient:a}),x=D(C({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),K=D(C({},f),{amount:new fe(d,f.amount),fee:f.fee===void 0?void 0:new fe(d,f.fee)}),O=D(C({},g),{amount:new fe(d,g.amount),fee:g.fee===void 0?void 0:new fe(d,g.fee)}),M=new ve({baseToken:m,denominator:new Ce(10).pow(new Ce(20+m.decimals)),quoteToken:d,numerator:P.mul(new V(10**(20+d.decimals))).toFixed(0)}),U=new ve({baseToken:m,denominator:new Ce(10).pow(new Ce(20+m.decimals)),quoteToken:d,numerator:A.mul(new V(10**(20+d.decimals))).toFixed(0)}),F=new fe(m,I);return{allTrade:p,realAmountIn:x,amountOut:K,minAmountOut:O,expirationTime:b,currentPrice:M,executionPrice:U,priceImpact:h,fee:F,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var y,f,g;let s=e[t],i=Y.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=Y.getTickPrice({poolInfo:e,tick:o,baseIn:!0}).price.toNumber(),u=Math.max(i,s.priceMin),l=Math.min(a,s.priceMax)-u,m=a-i,d=s.priceMax-s.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:s.feeApr*p,rewardsApr:[(y=s.rewardApr[0])!=null?y:0*p,(f=s.rewardApr[1])!=null?f:0*p,(g=s.rewardApr[2])!=null?g:0*p],apr:s.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:s,positionTickLowerIndex:i,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=o[at(e.mintA.address).toString()],d=o[at(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=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),g=ee.getSqrtPriceX64FromTick(i),b=ee.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,g,b,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:I}=ce.getAmountsFromLiquidityWithSlippage(f,g,b,s,!1,!1,0),T=new V(P.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(d.value)),S=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(I.toString()).div(new V(10).pow(y)).mul(d.value)),x=S.div(T.add(S)).div(S),O=new V(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),M=3600*24*365,U=e.rewardDefaultInfos.map(F=>{var W,pt;let H=F.mint.decimals,Z=o[F.mint.address];return u<((W=F.startTime)!=null?W:0)||u>((pt=F.endTime)!=null?pt:0)||!F.perSecond||!Z||H===void 0?0:new V(Z.value).mul(new V(F.perSecond).mul(M)).div(new V(10).pow(H)).mul(x).mul(100).toNumber()});return{feeApr:O,rewardsApr:U,apr:O+U.reduce((F,H)=>F+H,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:s,slippage:i,add:a,epochInfo:u,amountHasFee:c}){var b,P;let l=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=ee.getSqrtPriceX64FromTick(n),d=ee.getSqrtPriceX64FromTick(o),p=a?1-i:1+i,y=ke(s,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new Ce(new V(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new Ce(0);else if(l.lte(d)){let A=ce.getLiquidityFromTokenAmountA(l,d,f,!a),h=ce.getLiquidityFromTokenAmountB(m,l,f);g=t?A:h}else g=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,d,f);return Re.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:o,liquidity:g,slippage:i,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:s,slippage:i,add:a}){var g,b,P,A;let u=ee.getSqrtPriceX64FromTick(n),c=ee.getSqrtPriceX64FromTick(o),l=a?1+i:1-i,m=ce.getAmountsFromLiquidity(ee.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),u,c,s,a),[d,p]=[ke(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),ke(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[y,f]=[ke(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),ke(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:s,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Rt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(u=>!n[u.id]).map(u=>new It(u.id));(await kt(e,o)).forEach((u,c)=>{!u||(n[o[c].toBase58()]=In.decode(u.data))});let i=t.map(u=>ct(new It(u.programId),new It(u.id)).publicKey),a=await Re.fetchExBitmaps({connection:e,exBitmapAddress:i,batchRequest:!1});return t.reduce((u,c)=>D(C({},u),{[c.id]:D(C({},n[c.id]),{id:new It(c.id),version:6,programId:new It(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:D(C({},c.config),{id:new It(c.config.id),fundOwner:""}),currentPrice:new V(c.price),exBitmapInfo:a[ct(new It(c.programId),new It(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]}};function lT({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:o,slippage:s,add:i,epochInfo:a,amountHasFee:u}){var A,h,I,T;let[c,l,m,d]=e<t?[e,t,n,o]:[t,e,o,n],p=ee.priceToSqrtPriceX64(new V(r.price),r.mintA.decimals,r.mintB.decimals),y=ee.getSqrtPriceX64FromTick(c),f=ee.getSqrtPriceX64FromTick(l),[g,b]=[ke(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),ke(d,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(p,y,f,g.amount.sub((I=g.fee)!=null?I:de),b.amount.sub((T=b.fee)!=null?T:de));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:s,add:i,epochInfo:a,amountAddFee:!u})}var te=class{static mulDivRoundingUp(e,t,n){let o=e.mul(t),s=o.div(n);return o.mod(n).eq(de)||(s=s.add(lt)),s}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(lt)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new oe(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(So).sub(t).mod(So)}};function We(r,e){return cs(r.mul(e),64,256)}function Bp(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function cs(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ee=class{static sqrtPriceX64ToPrice(e,t,n){return te.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return te.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,o){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))throw new Error("liquidity must greater than 0");return o?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,o){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))throw new Error("liquidity must greater than 0");return o?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,o){if(n.eq(de))return e;let s=t.shln(xr);if(o){let i=s,a=s.add(n.mul(e));return a.gte(i)?te.mulDivCeil(i,e,a):te.mulDivRoundingUp(i,lt,i.div(e).add(n))}else{let i=n.mul(e);if(!s.gt(i))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=s.sub(i);return te.mulDivCeil(s,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,o){let s=n.shln(xr);if(o)return e.add(s.div(t));{let i=te.mulDivRoundingUp(s,lt,t);if(!e.gt(i))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(i)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ze||e>tt)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new oe("18445821805675395072"):new oe("18446744073709551616");return(t&2)!=0&&(n=We(n,new oe("18444899583751176192"))),(t&4)!=0&&(n=We(n,new oe("18443055278223355904"))),(t&8)!=0&&(n=We(n,new oe("18439367220385607680"))),(t&16)!=0&&(n=We(n,new oe("18431993317065453568"))),(t&32)!=0&&(n=We(n,new oe("18417254355718170624"))),(t&64)!=0&&(n=We(n,new oe("18387811781193609216"))),(t&128)!=0&&(n=We(n,new oe("18329067761203558400"))),(t&256)!=0&&(n=We(n,new oe("18212142134806163456"))),(t&512)!=0&&(n=We(n,new oe("17980523815641700352"))),(t&1024)!=0&&(n=We(n,new oe("17526086738831433728"))),(t&2048)!=0&&(n=We(n,new oe("16651378430235570176"))),(t&4096)!=0&&(n=We(n,new oe("15030750278694412288"))),(t&8192)!=0&&(n=We(n,new oe("12247334978884435968"))),(t&16384)!=0&&(n=We(n,new oe("8131365268886854656"))),(t&32768)!=0&&(n=We(n,new oe("3584323654725218816"))),(t&65536)!=0&&(n=We(n,new oe("696457651848324352"))),(t&131072)!=0&&(n=We(n,new oe("26294789957507116"))),(t&262144)!=0&&(n=We(n,new oe("37481735321082"))),e>0&&(n=Ku.div(n)),n}static getTickFromPrice(e,t,n){return ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Mt)||e.lt(Nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new oe(t-64),o=Bp(n,32,128),s=new oe("8000000000000000","hex"),i=0,a=new oe(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;s.gt(new oe(0))&&i<Cu;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(s.mul(y)),s=s.shrn(1),i+=1}let c=a.shrn(32),m=o.add(c).mul(new oe(Ru)),d=cs(m.sub(new oe(Lu)),64,128).toNumber(),p=cs(m.add(new oe(Ou)),64,128).toNumber();return d==p?d:ee.getSqrtPriceX64FromTick(p).lte(e)?p:d}},xn=class{static getTickWithPriceAndTickspacing(e,t,n,o){let i=ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,n,o))/t;return i<0?i=Math.floor(i):i=Math.ceil(i),i*t}static roundPriceWithTickspacing(e,t,n,o){let s=xn.getTickWithPriceAndTickspacing(e,t,n,o),i=ee.getSqrtPriceX64FromTick(s);return ee.sqrtPriceX64ToPrice(i,n,o)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");let s=n.ushln(xr),i=t.sub(e);return o?te.mulDivRoundingUp(te.mulDivCeil(s,i,t),lt,e):te.mulDivFloor(s,i,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return o?te.mulDivCeil(n,t.sub(e),mt):te.mulDivFloor(n,t.sub(e),mt)}static getLiquidityFromTokenAmountA(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let s=n.mul(e).mul(t),i=t.sub(e),a=s.div(i);return o?te.mulDivRoundingUp(a,lt,as):a.shrn(xr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),te.mulDivFloor(n,as,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,o,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,o,!1);if(e.lt(n)){let i=ce.getLiquidityFromTokenAmountA(e,n,o,!1),a=ce.getLiquidityFromTokenAmountB(t,e,s);return i.lt(a)?i:a}else return ce.getLiquidityFromTokenAmountB(t,n,s)}static getAmountsFromLiquidity(e,t,n,o,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,o,s),amountB:new oe(0)};if(e.lt(n)){let i=ce.getTokenAmountAFromLiquidity(e,n,o,s),a=ce.getTokenAmountBFromLiquidity(t,e,o,s);return{amountA:i,amountB:a}}else return{amountA:new oe(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,o,s)}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,s,i,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,o,i),l=s?1+a:1-a,m=new oe(new V(u.toString()).mul(l).toFixed(0)),d=new oe(new V(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:o,slippage:s,add:i,epochInfo:a,amountAddFee:u}){var P,A,h,I;let c=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=ee.getSqrtPriceX64FromTick(t),m=ee.getSqrtPriceX64FromTick(n),d=i?1+s:1-s,p=ce.getAmountsFromLiquidity(c,l,m,o,i),[y,f]=[ke(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),ke(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,b]=[ke(new oe(new V(p.amountA.toString()).mul(d).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ke(new oe(new V(p.amountB.toString()).mul(d).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,u)];return{liquidity:o,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:b,expirationTime:Rt(y.expirationTime,f.expirationTime)}}},Tn=class{static swapCompute(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f=!1){if(d.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=i?Nt.add(lt):Mt.sub(lt)),i){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(Mt))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(de),b={amountSpecifiedRemaining:d,amountCalculated:de,sqrtPriceX64:m,tick:c>p?Math.min(p+le.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new oe(0)},P=p,A=n[p],h=0,I=!i&&A.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(y);){h>10;let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let S=Y.nextInitTick(A,b.tick,l,i,I),x=S||null,K=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let M=Re.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:o,exBitmapInfo:s},P,i);if(!M.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")}P=M.nextStartIndex;let{publicKey:U}=Ae(e,t,P);K=U,A=n[P];try{x=Y.firstInitializedTick(A,i)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==P&&K&&(b.accounts.push(K),p=P),T.tickNext<Ze?T.tickNext=Ze:T.tickNext>tt&&(T.tickNext=tt),T.sqrtPriceNextX64=ee.getSqrtPriceX64FromTick(T.tickNext);let O;if(i&&T.sqrtPriceNextX64.lt(y)||!i&&T.sqrtPriceNextX64.gt(y)?O=y:O=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Tn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),g?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let M=x.liquidityNet;i&&(M=M.mul(Gt)),b.liquidity=ce.addDelta(b.liquidity,M)}I=T.tickNext!=b.tick&&!i&&A.startTickIndex===T.tickNext,b.tick=i?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let M=ee.getTickFromSqrtPriceX64(b.sqrtPriceX64);I=M!=b.tick&&!i&&A.startTickIndex===M,b.tick=M}++h}try{let{nextStartIndex:T,isExist:S}=le.nextInitializedTickArray(b.tick,l,i,o,s);S&&p!==T&&(b.accounts.push(Ae(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:de,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,o,s){let i={sqrtPriceX64Next:new oe(0),amountIn:new oe(0),amountOut:new oe(0),feeAmount:new oe(0)},a=e.gte(t),u=o.gte(de);if(u){let l=te.mulDivFloor(o,Ko.sub(new oe(s.toString())),Ko);i.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(i.amountIn)?i.sqrtPriceX64Next=t:i.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromInput(e,n,l,a)}else i.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),o.mul(Gt).gte(i.amountOut)?i.sqrtPriceX64Next=t:i.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromOutput(e,n,o.mul(Gt),a);let c=t.eq(i.sqrtPriceX64Next);return a?(c&&u||(i.amountIn=ce.getTokenAmountAFromLiquidity(i.sqrtPriceX64Next,e,n,!0)),c&&!u||(i.amountOut=ce.getTokenAmountBFromLiquidity(i.sqrtPriceX64Next,e,n,!1))):(i.amountIn=c&&u?i.amountIn:ce.getTokenAmountBFromLiquidity(e,i.sqrtPriceX64Next,n,!0),i.amountOut=c&&!u?i.amountOut:ce.getTokenAmountAFromLiquidity(e,i.sqrtPriceX64Next,n,!1)),!u&&i.amountOut.gt(o.mul(Gt))&&(i.amountOut=o.mul(Gt)),u&&!i.sqrtPriceX64Next.eq(t)?i.feeAmount=o.sub(i.amountIn):i.feeAmount=te.mulDivCeil(i.amountIn,new oe(s),Ko.sub(new oe(s))),[i.sqrtPriceX64Next,i.amountIn,i.amountOut,i.feeAmount]}};var Fe=60,hn=512,Y=class{static getTickArrayAddressByTick(e,t,n,o){let s=Y.getTickArrayStartIndexByTick(n,o),{publicKey:i}=Ae(e,t,s);return i}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=Y.getTickArrayStartIndexByTick(e,t),o=Math.floor((e-n)/t);if(o<0||o>=Fe)throw new Error("tick offset in array overflow");return o}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),o=e/n;return e<0&&e%n!=0?o=Math.ceil(o)-1:o=Math.floor(o),o}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Fe,o=Math.floor(e/n)+512;return Math.abs(o)}static checkTickArrayIsInitialized(e,t,n){let o=n*Fe,s=Math.floor(t/o)+512,i=Math.abs(s);return{isInitialized:e.testn(i),startIndex:(i-512)*o}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Fe:e+t*Fe}static mergeTickArrayBitmap(e){let t=new Sp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,o,s){let i=Math.floor(o/(n*Fe));return[...Y.searchLowBitFromStart(e,t,i-1,s,n),...Y.searchHightBitFromStart(e,t,i,s,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return Y.searchHightBitFromStart(e,t,0,hn,n)}static getAllInitializedTickArrayInfo(e,t,n,o,s){let i=[],a=Y.getAllInitializedTickArrayStartIndex(n,o,s);for(let u of a){let{publicKey:c}=Ae(e,t,u);i.push({tickArrayStartIndex:u,tickArrayAddress:c})}return i}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,o,s){let i=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Y.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(i[c].testn(l)&&a.push(n),n--,a.length===o)break}let u=le.tickCount(s);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,o,s){let i=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Y.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(i[c].testn(l)&&a.push(n),n++,a.length===o)break}let u=le.tickCount(s);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ze||e>tt}static nextInitTick(e,t,n,o,s){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(o)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(s||(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 o=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:o}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),s=xn.getTickWithPriceAndTickspacing(o,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),i=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let o=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:o}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),s=xn.getTickWithPriceAndTickspacing(o,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),i=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}};var Vu=N([ye(8),v("bump"),Lt("index"),B(""),je("protocolFeeRate"),je("tradeFeeRate"),Lt("tickSpacing"),G(w(),8,"")]),Kp=N([je("blockTimestamp"),Q("sqrtPriceX64"),Q("cumulativeTimePriceX64"),G(Q(),1,"")]),ls=N([ye(8),Xe("initialized"),B("poolId"),G(Kp,1e3,"observations"),G(Q(),5,"")]),Cp=N([v("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Q("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),Q("rewardGrowthGlobalX64")]),In=N([ye(8),v("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),v("mintDecimalsA"),v("mintDecimalsB"),Lt("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Ge("tickCurrent"),Lt("observationIndex"),Lt("observationUpdateDuration"),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),v("status"),G(v(),7,""),G(Cp,3,"rewardInfos"),G(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),G(w(),15*4-3,"padding")]),Rp=N([Q("growthInsideLastX64"),w("rewardAmountOwed")]),Co=N([ye(8),v("bump"),B("nftMint"),B("poolId"),Ge("tickLower"),Ge("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(Rp,3,"rewardInfos"),G(w(),8,"")]),MT=N([ye(8),v("bump"),B("poolId"),Ge("tickLowerIndex"),Ge("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(Q(),3,"rewardGrowthInside"),G(w(),8,"")]),Lp=N([Ge("tick"),Fa("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),G(Q(),3,"rewardGrowthsOutsideX64"),G(je(),13,"")]),Br=N([ye(8),B("poolId"),Ge("startTickIndex"),G(Lp,Fe,"ticks"),v("initializedTickCount"),G(v(),115,"")]),Eu=N([ye(329),G(B(),100,"whitelistMints")]),_u=N([ye(8),B("poolId"),G(G(w(),8),us,"positiveTickArrayBitmap"),G(G(w(),8),us,"negativeTickArrayBitmap")]);var Du=ue("Raydium_Clmm"),Bt={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]},Se=class{static createPoolInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([Q("sqrtPriceX64"),w("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},b);let P=Buffer.from([...Bt.createPool,...b]);return new xt({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:o,mintA:s,mintB:i,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Qe({fromPublicKey:o,programId:n}),[d,p]=[new q(s.address),new q(i.address)],y=[Gn.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(ls.span),space:ls.span,programId:n})],{publicKey:f}=Bu(n,a,d,p),{publicKey:g}=ss(n,f,d),{publicKey:b}=ss(n,f,p);return y.push(this.createPoolInstruction(n,f,o,a,m.publicKey,d,g,new q(s.programId||ze),p,b,new q(i.programId||ze),ct(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let M=N([Ge("tickLowerIndex"),Ge("tickUpperIndex"),Ge("tickArrayLowerStartIndex"),Ge("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),v("optionBaseFlag"),Xe("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:i,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:rt,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:Fu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(M.span);M.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},H);let Z=Buffer.from([...Bt.openPosition,...H]);return new xt({keys:F,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,liquidity:i,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=ms.generate();m.push(x),y=x.publicKey}let f=Y.getTickArrayStartIndexByTick(o,e.config.tickSpacing),g=Y.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=Ae(d,p,f),{publicKey:P}=Ae(d,p,g),{publicKey:A}=ge(n.wallet,y,ze),{publicKey:h}=Bo(y),{publicKey:I}=yt(d,y),{publicKey:T}=kn(d,p,o,s),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),o,s,f,g,i,a,u,c);return{signers:m,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,base:i,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=ms.generate();m.push(x),y=x.publicKey}let f=Y.getTickArrayStartIndexByTick(o,e.config.tickSpacing),g=Y.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=Ae(d,p,f),{publicKey:P}=Ae(d,p,g),{publicKey:A}=ge(n.wallet,y,ze),{publicKey:h}=Bo(y),{publicKey:I}=yt(d,y),{publicKey:T}=kn(d,p,o,s),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),o,s,f,g,c,i,a,u,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?ct(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let M=N([Ge("tickLowerIndex"),Ge("tickUpperIndex"),Ge("tickArrayLowerStartIndex"),Ge("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),v("optionBaseFlag"),Xe("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:i,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:rt,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:Fu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(M.span);M.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:new vu(0),amountMaxA:S==="MintA"?x:K,amountMaxB:S==="MintA"?K:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},H);let Z=Buffer.from([...Bt.openPosition,...H]);return new xt({keys:F,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,liquidity:i,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new q((await l(1))[0]);else{let x=ms.generate();d.push(x),m=x.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=Y.getTickArrayStartIndexByTick(o,e.config.tickSpacing),g=Y.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=Ae(p,y,f),{publicKey:P}=Ae(p,y,g),{publicKey:A}=ge(n.wallet,m,ze),{publicKey:h}=Bo(m),{publicKey:I}=yt(p,m),{publicKey:T}=kn(p,y,o,s),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(t.mintA.address),new q(t.mintB.address),o,s,f,g,i,a,u,c,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?ct(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,o,s){let i=N([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);i.encode({},u);let c=Buffer.from([...Bt.closePosition,...u]);return new xt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o}){let s=new q(e.programId),{publicKey:i}=ge(n.wallet,o.nftMint,ze),{publicKey:a}=yt(s,o.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,o.nftMint,i,a)),{address:{positionNftAccount:i,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P){let A=N([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),Xe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,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:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...Bt.increaseLiquidity,...T]);return new xt({keys:I,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:s,amountMaxA:i,amountMaxB:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Y.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Y.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Ae(u,c,l),{publicKey:p}=Ae(u,c,m),{publicKey:y}=ge(o.wallet,n.nftMint,ze),{publicKey:f}=yt(u,n.nftMint),{publicKey:g}=kn(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,o.wallet,y,f,c,g,d,p,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,i,a,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[b],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:s,baseAmount:i,otherAmountMax:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Y.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Y.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Ae(u,c,l),{publicKey:p}=Ae(u,c,m),{publicKey:y}=ge(o.wallet,n.nftMint,ze),{publicKey:f}=yt(u,n.nftMint),{publicKey:g}=kn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,o.wallet,y,f,c,g,d,p,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,i,a,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P){let A=N([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),Xe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,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:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:new vu(0),amountMaxA:f==="MintA"?g:b,amountMaxB:f==="MintA"?b:g,baseFlag:f==="MintA",optionBaseFlag:1},T);let S=Buffer.from([...Bt.increaseLiquidity,...T]);return new xt({keys:I,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=N([Q("liquidity"),w("amountMinA"),w("amountMinB")]),I=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{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:i,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:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I],S=Buffer.alloc(h.span);h.encode({liquidity:g,amountMinA:b,amountMinB:P},S);let x=Buffer.from([...Bt.decreaseLiquidity,...S]);return new xt({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:s,amountMinA:i,amountMinB:a,programId:u}){let[c,l]=[new q(e.programId),new q(e.id)],m=Y.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=Y.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Ae(c,l,m),{publicKey:y}=Ae(c,l,d),{publicKey:f}=ge(o.wallet,n.nftMint,u),{publicKey:g}=yt(c,n.nftMint),{publicKey:b}=kn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new q(t.rewardInfos[h].vault),ownerRewardVault:o.rewardAccounts[h],rewardMint:new q(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,o.wallet,f,g,l,b,p,y,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),P,s,i,a,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ct(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:b},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b){let P=N([w("amount"),w("otherAmountThreshold"),Q("sqrtPriceLimitX64"),Xe("isBaseInput")]),A=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],I=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},I);let T=Buffer.from([...Bt.swap,...I]);return new xt({keys:h,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:s,amountIn:i,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new q(e.programId),new q(e.id)],[d,p]=[new q(t.vault.A),new q(t.vault.B)],[y,f]=[new q(e.mintA.address),new q(e.mintB.address)],g=e.mintA.address===s.toString(),b=[this.swapInstruction(l,o.wallet,m,new q(e.config.id),g?o.tokenAccountA:o.tokenAccountB,g?o.tokenAccountB:o.tokenAccountA,g?d:p,g?p:d,g?y:f,g?f:y,c,n,i,a,u,!0,ct(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,o,s,i,a,u,c,l,m,d){let p=N([w("openTime"),w("endTime"),Q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:z(l),endTime:z(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...Bt.initReward,...f]);return new xt({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[s,i]=[new q(e.programId),new q(e.id)],a=Su(s,i,o.mint).publicKey,u=Ir(s).publicKey,c=[this.initRewardInstruction(s,n.wallet,i,u,new q(e.config.id),n.tokenAccount,o.programId,o.mint,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,o,s,i,a,u,c,l,m,d){let p=N([v("rewardIndex"),Q("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:z(l),endTime:z(m)},f);let g=Buffer.from([...Bt.setRewardEmissions,...f]);return new xt({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[s,i]=[new q(e.programId),new q(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===o.mint.toString()&&(a=d,u=new q(t.rewardInfos[d].vault),c=new q(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Du.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Ir(s).publicKey,m=[this.setRewardInstruction(s,n.wallet,i,l,new q(e.config.id),n.tokenAccount,u,c,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,o,s,i,a){let u=N([v("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Bt.collectReward,...l]);return new xt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[s,i]=[new q(e.programId),new q(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,u=new q(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Du.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(s,n.wallet,i,n.tokenAccount,u,o,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:o,amountOut:s,amountInMax:i,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new q(e.programId),new q(e.id)],[m,d]=[new q(t.vault.A),new q(t.vault.B)],[p,y]=[new q(e.mintA.address),new q(e.mintB.address)],f=e.mintA.address===o.toString(),g=[this.swapInstruction(c,n.wallet,l,new q(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,s,i,a,!1)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Xu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _p}from"@solana/spl-token";import{PublicKey as Np}from"@solana/web3.js";import Wu from"bn.js";var qu=new Wu(25),Uu=new Wu(1e4),Op={4:3,5:3};var Mp=ue("Raydium_liquidity_serum");function Gu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,o;for(;n<100;){try{let s=t.concat(Buffer.from([n]),Buffer.alloc(7));o=Np.createProgramAddressSync(s,r)}catch(s){if(s instanceof TypeError)throw s;n++;continue}return{publicKey:o,nonce:n}}throw Mp.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import Cr from"bn.js";function fs({programId:r}){let{publicKey:e}=se([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function Bn({name:r,programId:e,marketId:t}){let{publicKey:n}=se([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Vp({programId:r,marketId:e}){let{publicKey:t}=se([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function ys({programId:r}){return se([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function zu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:s,quoteDecimals:i,programId:a,marketProgramId:u}){let c=Bn({name:"amm_associated_seed",programId:a,marketId:t}),l=Bn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=ys({programId:a}),p=Bn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Bn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Bn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=Vp({programId:a,marketId:t}),b=Bn({name:"target_associated_seed",programId:a,marketId:t}),P=Bn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=Gu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:s,quoteDecimals:i,lpDecimals:s,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:g,targetOrders:b,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Xu.default,configId:fs({programId:a})}}var ds;async function dI({connection:r,poolKeysList:e,config:t}){ds||(ds=new Wn({connection:r}),await ds.initStableModelLayout());let n=e.map(i=>ku({poolKeys:i}));return(await ba(r,n.map(i=>i.instruction),"GetPoolData")).map(i=>{let a=ga(i,"GetPoolData"),u=new Cr(vt(a,"status")),c=Number(vt(a,"coin_decimals")),l=Number(vt(a,"pc_decimals")),m=Number(vt(a,"lp_decimals")),d=new Cr(vt(a,"pool_coin_amount")),p=new Cr(vt(a,"pool_pc_amount")),y=new Cr(vt(a,"pool_lp_supply")),f="0";try{f=vt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new Cr(f)}})}var ps={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Yu=r=>{let e={},t=_p.toBase58();return Object.keys(r).map(n=>{let o=r[n],[s,i]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:wn({address:s,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:wn({address:i,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new V(o.baseReserve.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(o.quoteReserve.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new V(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:ps,week:ps,month:ps,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:Xu.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:wn({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())})}}),e};import st from"bn.js";var Rr=class extends Be{constructor(t){super(t);this.stableLayout=new Wn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:o,baseIn:s}){let i=new st(new V(n).mul(10**t[s?"mintA":"mintB"].decimals).toFixed(0)),a=To(t[s?"mintB":"mintA"]),[u,c]=[new st(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new st(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new st(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",s?t.mintA.symbol:t.mintB.symbol,"amountIn:",i.toString(),"anotherToken:",s?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=s?"base":"quote";this.logDebug("input side:",m);let d=Ee;i.isZero()||(d=m==="base"?eo(i.mul(c),u):eo(i.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=eo(i.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ve(new st(1)).add(o).mul(d).quotient,g=new fe(a,d),b=new fe(a,f);return this.logDebug("anotherAmount:",g.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:g,maxAnotherAmount:b,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:o,amountInB:s,fixedSide:i,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",s),(o.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:s.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[o.token,s.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let b=await l.getCreatedTokenAccount({mint:new Oe(n.lpMint.address)}),P=[p,y],A=[f,g],h=[o.raw,s.raw],I=o.token.mint.toBase58()===n.mintA.address?"base":"quote",T="base";["quote","base"].includes(I)||this.logAndCreateError("invalid fixedSide","fixedSide",i),I==="quote"?(P.reverse(),A.reverse(),h.reverse(),T=i==="a"?"quote":"base"):I==="base"&&(T=i==="a"?"base":"quote");let[S,x]=P,[K,O]=A,[M,U]=h,F=await this.getAmmPoolKeys(n.id),H=this.createTxBuilder(),ln=await l.handleTokenAccount({side:"in",amount:M,mint:S.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Z}=ln,W=Ie(ln,["tokenAccount"]);H.addInstruction(W);let Vt=await l.handleTokenAccount({side:"in",amount:U,mint:x.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:pt}=Vt,Cn=Ie(Vt,["tokenAccount"]);H.addInstruction(Cn);let Rn=await l.handleTokenAccount({side:"out",amount:0,mint:new Oe(n.lpMint.address),tokenAccount:b,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:cn}=Rn,Yt=Ie(Rn,["tokenAccount"]);return H.addInstruction(Yt),H.addInstruction({instructions:[Au({poolInfo:n,poolKeys:F,userKeys:{baseTokenAccount:Z,quoteTokenAccount:pt,lpTokenAccount:cn,owner:this.scope.ownerPubKey},baseAmountIn:M,quoteAmountIn:U,fixedSide:T})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),H.addCustomComputeBudget(c),u===0&&await H.buildV0(),H.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:o,config:s,txVersion:i,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Oe(n.mintA.address),new Oe(n.mintB.address),new Oe(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),g=this.createTxBuilder(),{bypassAssociatedCheck:b,checkCreateATAOwner:P}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:A}=S,h=Ie(S,["tokenAccount"]);g.addInstruction(h);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:I}=x,T=Ie(x,["tokenAccount"]);return g.addInstruction(T),g.addInstruction({instructions:[rs({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(a),i===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:s,farmInfo:i,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Ro,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder();g.addCustomComputeBudget(c);let b={};for(let W of this.scope.account.tokenAccountRawInfos)(b[W.accountInfo.mint.toString()]===void 0||ge(this.scope.ownerPubKey,W.accountInfo.mint,Ro).publicKey.equals(W.pubkey))&&(b[W.accountInfo.mint.toString()]=W.pubkey);let P=b[t.lpMint.address];if(P===void 0)throw Error("find lp account error in trade accounts");let A=o.add(a!=null?a:new st(0)),h=t.mintA.address===pe.WSOL.mint.toString(),I=t.mintB.address===pe.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ro,mint:new Oe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ro,mint:new Oe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(K||{}),x===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=x,i!==void 0&&!(a!=null&&a.isZero())){let W=ft[i.programId],pt=He({programId:new Oe(i.programId),poolId:new Oe(i.id),owner:this.scope.ownerPubKey,version:W}),Cn,cn=await this.scope.connection.getAccountInfo(pt);if(cn&&(Cn=Dn(W).decode(cn.data)),W!==6&&!Cn){let{instruction:jt,instructionType:Wo}=ho({id:new Oe(i.id),programId:new Oe(i.programId),version:W,ledger:pt,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[jt],instructionTypes:[Wo]})}let Yt=[];for(let jt of i.rewardInfos){let Wo=jt.mint.address===pe.WSOL.mint.toString();if(b[jt.mint.address])Yt.push(b[jt.mint.address]);else{let{account:Os,instructionParams:Ns}=await this.scope.account.getOrCreateTokenAccount({mint:new Oe(jt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Wo,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Os||this.logAndCreateError("farm reward account not found:",jt.mint.address),Ns&&g.addInstruction(Ns),Yt.push(Os)}}let ln=(await this.scope.api.fetchFarmKeysById({ids:i.id}))[0],Vt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:i,farmKeys:ln,lpAccount:P,rewardAccounts:Yt},Rn=ft[i.programId],Ic=Rn===6?wr(Vt):Rn===5?Ar(Vt):Pr(Vt),xc={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};g.addInstruction({instructions:[Ic],instructionTypes:[xc[Rn]]})}let O=await this.getAmmPoolKeys(t.id),M=rs({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:P,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:A});g.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[U,F]=t.mintA.address===n.mintA.address?[T,x]:[x,T],H=await this.scope.clmm.getClmmPoolKeys(t.id),Z=await Se.openPositionFromBaseInstructions(D(C({poolInfo:n,poolKeys:H,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:F},withMetadata:"create"},s),{base:u,getEphemeralSigners:y}));return g.addInstruction({instructions:[...Z.instructions],signers:Z.signers,instructionTypes:[...Z.instructionTypes],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),f===0?g.sizeCheckBuildV0():g.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:s,baseAmount:i,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var U;let g=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),b=c.useSOLBalance&&o.mint.equals(ju),P=c.useSOLBalance&&s.mint.equals(ju),A=this.createTxBuilder(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:b?{payer:g,amount:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:m});A.addInstruction(I||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:g,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),h===void 0||T===void 0)throw Error("you don't has some token account");let x=zu({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:s.mint,baseDecimals:o.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:O,instructionType:M}=Pu(D(C({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:T,userLpVault:ge(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:i,pcAmount:a}));return A.addInstruction({instructions:[O],instructionTypes:[M]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=fs({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return mu.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:s,slippage:i}){let[a,u]=[o.toString(),s.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.programId===sr.toBase58(),g;if(f)g=new V(y.toString()).div(p.toString());else{let O=bu(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?g=new V(1e6).div(O*1e6):g=new V(O*1e6).div(1e6)}let b=n,P=new st(0),A=new st(0);if(!b.isZero())if(f){A=en(b.mul(qu),Uu);let O=b.sub(A),M=p.add(O);P=y.mul(O).div(M)}else{A=b.mul(new st(2)).div(new st(1e4));let O=b.sub(A);d==="quote"?P=new st(fu(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber())):P=new st(yu(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber()))}let h=new st(new V(P.toString()).mul(1-i).toFixed(0)),I=P,T=h,S=new V(P.toString()).div(new V(b.sub(A).toString()).toFixed(0));!b.isZero()&&!P.isZero()&&(S=new V(P.toString()).div(b.sub(A).toString()));let x=g.sub(S).div(g).mul(100);return{amountOut:I,minAmountOut:T,currentPrice:g,executionPrice:S,priceImpact:x,fee:A}}async swap({poolInfo:t,amountIn:n,amountOut:o,inputMint:s,fixedSide:i,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new Oe(l.address),programId:new Oe(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Oe(m.address),programId:new Oe(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Oe(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Ie(h,["tokenAccount"]);c.addInstruction(f);let I=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Oe(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=I,b=Ie(I,["tokenAccount"]);c.addInstruction(b);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[Io({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:n,amountOut:o,fixedSide:i})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await ot(this.scope.connection,t.map(l=>({pubkey:new Oe(l)})),n),s={},i=[];for(let l=0;l<t.length;l++){let m=o[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=hr.decode(m.accountInfo.data);s[String(t[l])]=D(C({},d),{programId:m.accountInfo.owner}),i.push(d.baseVault,d.quoteVault)}let a={},u=await ot(this.scope.connection,i.map(l=>({pubkey:new Oe(l)})),n);for(let l=0;l<i.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+i[l]);a[String(i[l])]=new st(Ep.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(s)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=D(C({},m),{baseReserve:d,quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(m.quoteDecimal.toString())).div(new V(d.toString()).div(new V(10).pow(m.baseDecimal.toString())))})}return c}};import{PublicKey as ae}from"@solana/web3.js";import bt from"bn.js";import{TOKEN_PROGRAM_ID as Qu}from"@solana/spl-token";var Lr=class extends Be{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ae.default,mint1:o,mint2:s,ammConfig:i,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new bt(new ae(o.address).toBuffer()).gt(new bt(new ae(s.address).toBuffer()))?[s,o,new V(1).div(a)]:[o,s,a],g=ee.priceToSqrtPriceX64(f,p.decimals,y.decimals),b=await Se.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:i.id,initialPriceX64:g,startTime:u,forerunCreate:l});return d.addInstruction(b),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:D(C({},b.address),{programId:t.toString(),id:b.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:b.address.mintAVault.toString(),B:b.address.mintBVault.toString()},rewardInfos:[],config:{id:i.id.toString(),index:i.index,protocolFeeRate:i.protocolFeeRate,tradeFeeRate:i.tradeFeeRate,tickSpacing:i.tickSpacing,fundFeeRate:i.fundFeeRate,description:i.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:b.address.poolId.toString(),mintA:p,mintB:y,feeRate:i.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:i.id.toString(),index:i.index,protocolFeeRate:i.protocolFeeRate,tradeFeeRate:i.tradeFeeRate,tickSpacing:i.tickSpacing,fundFeeRate:i.fundFeeRate,description:i.description,defaultRange:0,defaultRangePoint:[]}},Nu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,base:i,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),g=null,b=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),A=n.useSOLBalance&&e.mintB.address===J.toString(),[h,I]=i==="MintA"?[a,u]:[u,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(g=T),f.addInstruction(S||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||I.isZero()?{payer:this.scope.ownerPubKey,amount:I}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(K||{}),(!g||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let O=t||await this.getClmmPoolKeys(e.id),M=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:O,ownerInfo:D(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b}),tickLower:o,tickUpper:s,base:i,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(M),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:M.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:o,amountMaxB:s,tickLower:i,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,g=null,b=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:b?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:I,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(g=I),y.addInstruction(T||{}),(f===void 0||g===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Se.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},tickLower:i,tickUpper:a,liquidity:u,amountMaxA:o,amountMaxB:s,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:o,amountMaxB:s,liquidity:i,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:i,amountMaxA:o,amountMaxB:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:o,baseAmount:s,otherAmountMax:i,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(o==="MintA"?s:i).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?s:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(o==="MintA"?i:s).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?i:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:o,baseAmount:s,otherAmountMax:i});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:o,amountMinA:s,amountMinB:i,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=o.useSOLBalance&&t.mintA.address===J.toString(),y=o.useSOLBalance&&t.mintB.address===J.toString(),f,g,{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=b,P&&d.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});g=A,h&&d.addInstruction(h);let I=[];for(let K of t.rewardDefaultInfos){let O=o.useSOLBalance&&K.mint.address===J.toString(),M;if(K.mint.address===t.mintA.address)M=f;else if(K.mint.address===t.mintB.address)M=g;else{let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(K.mint.programId),mint:new ae(K.mint.address),notUseTokenAccount:O,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});M=U,F&&d.addInstruction(F)}I.push(M)}!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=await this.getClmmPoolKeys(t.id),S=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:I},liquidity:a,amountMinA:s,amountMinB:i});d.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let x=C({},S.address);if(o.closePosition){let K=await Se.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=C(C({},x),K.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),s=await this.getClmmPoolKeys(e.id),i=Se.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return o.addInstruction(i).versionBuild({txVersion:n,extInfo:{address:i.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:o,checkCreateATAOwner:s});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Se.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:o,checkCreateATAOwner:s});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=Se.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ae(l.mint.programId),mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});c=C(C({},c),g.address),u.addInstruction(g)}return u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(J),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:o,checkCreateATAOwner:s});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Se.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:o,checkCreateATAOwner:s});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Se.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});u.addInstruction(f),c=C(C({},c),f.address)}return u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1}){let i=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());i||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(i.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:o,checkCreateATAOwner:s});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Se.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1}){let i=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:o,checkCreateATAOwner:s});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&i.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Se.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});i.addInstruction(y),a=C(C({},a),y.address)}return i.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:o,priceLimit:s,observationId:i,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===J.toBase58(),y=a.useSOLBalance&&e.mintB.address===J.toBase58(),f;!s||s.equals(new V(0))?f=t.toString()===e.mintA.address?Nt.add(new bt(1)):Mt.sub(new bt(1)):f=ee.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let g;if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});g=A,h&&d.addInstruction(h)}let b;if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});b=A,h&&d.addInstruction(h)}(!g||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return d.addInstruction(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b},inputMint:new ae(t),amountIn:n,amountOutMin:o,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,programId:i,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)o?ge(this.scope.ownerPubKey,m.accountInfo.mint,i).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),y=n.useSOLBalance&&d.mintB.address===J.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ae(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:o,checkCreateATAOwner:s});f=A,h&&l.addInstruction(h)}let g=c[d.mintB.address];if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ae(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:o,checkCreateATAOwner:s});g=A,h&&l.addInstruction(h)}c[d.mintA.address]=f,c[d.mintB.address]=g;let b=[];for(let A of d.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===J.toString(),I=c[A.mint.address];if(!I){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(A.mint.programId),mint:new ae(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:o});I=T,S&&l.addInstruction(S)}c[A.mint.address]=I,b.push(I)}let P=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let h=Se.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:b},liquidity:new bt(0),amountMinA:new bt(0),amountMinB:new bt(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Ir(e).publicKey);return t?Eu.decode(t.data).whitelistMints.filter(o=>!o.equals(ae.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(i=>i.accountInfo.amount.eq(new bt(1))).map(i=>yt(new ae(e),i.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),s=[];return o.forEach(i=>{if(!i)return;let a=Co.decode(i.data);s.push(a)}),s}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await ot(this.scope.connection,e.map(s=>({pubkey:new ae(s)})),t),o={};for(let s=0;s<e.length;s++){let i=n[s];if(i===null||!i.accountInfo)throw Error("fetch pool info error: "+String(e[s]));let a=In.decode(i.accountInfo.data),u=ee.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[s])]=D(C({},a),{currentPrice:u,programId:i.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(u=>e[u].ammConfig.toBase58())),o=await ot(this.scope.connection,Array.from(n).map(u=>({pubkey:new ae(u)}))),s={};o.forEach(u=>{!u.accountInfo||(s[u.pubkey.toBase58()]=Vu.decode(u.accountInfo.data))});let i=await Re.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(u=>{var m,d,p,y;let[c,l]=[e[u].mintA.toBase58(),e[u].mintB.toBase58()];return{id:u,programId:e[u].programId.toBase58(),mintA:wn({address:c,decimals:e[u].mintDecimalsA,programId:t[c].programId.toBase58()||Qu.toBase58(),extensions:{feeConfig:(m=t[c])!=null&&m.feeConfig?Hi((d=t[c])==null?void 0:d.feeConfig):void 0}}),mintB:wn({address:l,decimals:e[u].mintDecimalsB,programId:t[l].programId.toBase58()||Qu.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Hi((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[u].currentPrice,config:D(C({},s[e[u].ammConfig.toBase58()]),{id:e[u].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Re.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(i)});return{computeClmmPoolInfo:i,computePoolTickData:a}}};import{PublicKey as X}from"@solana/web3.js";import{NATIVE_MINT as Oo,TOKEN_PROGRAM_ID as un,AccountLayout as Zp}from"@solana/spl-token";var Fp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),vp=Buffer.from("amm_config","utf8"),Dp=Buffer.from("pool","utf8"),Wp=Buffer.from("pool_lp_mint","utf8"),qp=Buffer.from("pool_vault","utf8"),Up=Buffer.from("observation","utf8");function Gp(r){return se([Fp],r)}function Xp(r,e){return se([vp,jp(e)],r)}function zp(r,e,t,n){return se([Dp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Yp(r,e){return se([Wp,e.toBuffer()],r)}function Hu(r,e,t){return se([qp,e.toBuffer(),t.toBuffer()],r)}function Lo(r,e){return se([Up,e.toBuffer()],r)}function jp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Zu({programId:r,mintA:e,mintB:t}){let n=Xp(r,0).publicKey,o=Gp(r).publicKey,s=zp(r,n,e,t).publicKey,i=Yp(r,s).publicKey,a=Hu(r,s,e).publicKey,u=Hu(r,s,t).publicKey,c=Lo(r,s).publicKey;return{poolId:s,configId:n,authority:o,lpMint:i,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Or}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bs,TOKEN_2022_PROGRAM_ID as $u,ASSOCIATED_TOKEN_PROGRAM_ID as Qp}from"@solana/spl-token";var Hp=ue("Raydium_cpmm"),Nr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Ju(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=N([w("amountMaxA"),w("amountMaxB"),w("openTime")]),I=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Qp,isSigner:!1,isWritable:!1},{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],T=Buffer.alloc(h.span);return h.encode({amountMaxA:b,amountMaxB:P,openTime:A},T),new Or({keys:I,programId:r,data:Buffer.from([...Nr.initialize,...T])})}function ec(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],b=Buffer.alloc(f.span);return Hp.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},b),new Or({keys:g,programId:r,data:Buffer.from([...Nr.deposit,...b])})}function tc(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([w("lpAmount"),w("amountMinA"),w("amountMinB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ta,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},b),new Or({keys:g,programId:r,data:Buffer.from([...Nr.withdraw,...b])})}function nc(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y,f){let g=N([w("amountIn"),w("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountIn:y,amounOutMin:f},P),new Or({keys:b,programId:r,data:Buffer.from([...Nr.swapBaseInput,...P])})}function rc(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y,f){let g=N([w("amountInMax"),w("amountOut")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountInMax:y,amountOut:f},P),new Or({keys:b,programId:r,data:Buffer.from([...Nr.swapBaseOutput,...P])})}import $e from"bn.js";var oc=N([ye(8),v("bump"),Xe("disableCreatePool"),Lt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),G(w(),16)]),ic=N([ye(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),v("bump"),v("status"),v("lpDecimals"),v("mintDecimalA"),v("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),G(w(),32)]);var Mr=class extends Be{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await this.scope.connection.getMultipleAccountsInfo(e.map(m=>new X(m))),o={},s=new Set,i=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=ic.decode(d.data);o[String(e[m])]=p,s.add(String(p.configId)),i.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...s],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new X(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=oc.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(i.map(m=>new X(m)));for(let m=0;m<i.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+i[m]);u[String(i[m])]=new $e(Zp.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(o)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=D(C({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(d.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(d.mintDecimalA)))})}return l}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:o,associatedOnly:s=!1,checkCreateATAOwner:i=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var U,F,H;let d=o.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new $e(new X(c.mintA.address).toBuffer()).lte(new $e(new X(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[g,b]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=o.useSOLBalance&&y.address===Oo.toBase58(),A=o.useSOLBalance&&f.address===Oo.toBase58(),[h,I]=[new X(y.address),new X(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:s,checkCreateATAOwner:i});T.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:new X(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:b}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:i});if(T.addInstruction(O||{}),S===void 0||K===void 0)throw Error("you don't has some token account");let M=Zu({programId:e,mintA:h,mintB:I});return T.addInstruction({instructions:[Ju(e,this.scope.ownerPubKey,M.configId,M.authority,M.poolId,h,I,M.lpMint,S,K,ge(this.scope.ownerPubKey,M.lpMint).publicKey,M.vaultA,M.vaultB,t,new X((F=y.programId)!=null?F:un),new X((H=f.programId)!=null?H:un),M.observationId,g,b,n)],instructionTypes:[E.CpmmCreatePool]}),T.addCustomComputeBudget(u),T.versionBuild({txVersion:a,extInfo:{address:D(C({},M),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:o,slippage:s,computeResult:i,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=i?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:g}=i||this.computePairAmount({poolInfo:D(C({},t),{lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new Ve(0),baseIn:o,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(o?t.mintA.decimals:t.mintB.decimals))}),b=g.amount,P=t.mintA.address===Oo.toString(),A=t.mintB.address===Oo.toString(),h=this.createTxBuilder(),[I,T]=[new X(t.mintA.address),new X(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(o?n:b).isZero()?{payer:this.scope.ownerPubKey,amount:o?n:b}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(o?b:n).isZero()?{payer:this.scope.ownerPubKey,amount:o?b:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(O||{}),!S&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let M=await l.getCreatedTokenAccount({mint:new X(t.lpMint.address)}),W=await l.handleTokenAccount({side:"out",amount:0,mint:new X(t.lpMint.address),tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:U}=W,F=Ie(W,["tokenAccount"]);h.addInstruction(F);let H=await this.getCpmmPoolKeys(t.id),Z=new Ve(new $e(1)).sub(s);return h.addInstruction({instructions:[ec(new X(t.programId),this.scope.ownerPubKey,new X(H.authority),new X(t.id),U,S,K,new X(H.vault.A),new X(H.vault.B),I,T,new X(t.lpMint.address),i?i==null?void 0:i.liquidity:Z.mul(y).quotient,o?f.amount:b,o?b:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var U,F;let{poolInfo:t,lpAmount:n,slippage:o,computeBudgetConfig:s,txVersion:i}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new Ve(new $e(1)).sub(o),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[ke(c,t.mintA.extensions.feeConfig,m,!0),ke(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[g,b]=[new X(t.mintA.address),new X(t.mintB.address)],P=g.equals(J),A=b.equals(J),h,I,{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=T,S&&f.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});I=x,K&&f.addInstruction(K),(!h||!I)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let O=await y.getCreatedTokenAccount({mint:new X(t.lpMint.address)});O||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let M=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[tc(new X(t.programId),this.scope.ownerPubKey,new X(M.authority),new X(t.id),O,h,I,new X(M.vault.A),new X(M.vault.B),g,b,new X(t.lpMint.address),n,c.sub((U=d.fee)!=null?U:new $e(0)),l.sub((F=p.fee)!=null?F:new $e(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]}),f.addCustomComputeBudget(s),f.versionBuild({txVersion:i})}async swap(e){var I,T,K,O,M,U;let{poolInfo:t,baseIn:n,swapResult:o,slippage:s=0,config:i,computeBudgetConfig:a,txVersion:u}=e,{bypassAssociatedCheck:c,checkCreateATAOwner:l}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},i),m=this.createTxBuilder(),[d,p]=[new X(t.mintA.address),new X(t.mintB.address)],y=await this.scope.account.getCreatedTokenAccount({programId:new X((I=t.mintA.programId)!=null?I:un),mint:d,associatedOnly:!1}),f=await this.scope.account.getCreatedTokenAccount({programId:new X((T=t.mintB.programId)!=null?T:un),mint:p,associatedOnly:!1});o.destinationAmountSwapped=o.destinationAmountSwapped.mul(new $e((1-s)*1e4)).div(new $e(1e4));let S=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?o.sourceAmountSwapped:0,programId:new X(t.mintA.programId),mint:d,tokenAccount:y,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:g}=S,b=Ie(S,["tokenAccount"]);m.addInstruction(b);let x=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?0:o.sourceAmountSwapped,programId:new X(t.mintB.programId),mint:p,tokenAccount:f,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:P}=x,A=Ie(x,["tokenAccount"]);m.addInstruction(A),!g&&!P&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?nc(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),g,P,new X(h.vault.A),new X(h.vault.B),new X((K=t.mintA.programId)!=null?K:un),new X((O=t.mintB.programId)!=null?O:un),d,p,Lo(new X(t.programId),new X(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped):rc(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),P,g,new X(h.vault.B),new X(h.vault.A),new X((M=t.mintB.programId)!=null?M:un),new X((U=t.mintA.programId)!=null?U:un),p,d,Lo(new X(t.programId),new X(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:u})}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:o,slippage:s,epochInfo:i,baseIn:a}){var P,A,h,I,T,S,x,K;let u=1-Number(s.toSignificant())/100,c=new $e(new V(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=ke(c,e[a?"mintA":"mintB"].extensions.feeConfig,i,!1),m=c.sub((P=l.fee)!=null?P:new $e(0)),d=new $e(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(h=(A=l.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${s.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:Ee,fee:void 0,expirationTime:void 0};if(!m.isZero()){let O=$p(y,t,n,d);this.logDebug("lpAmountData:",{amountA:O.amountA.toString(),amountB:O.amountB.toString()}),f=ke(O[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,i,!0)}let g=new Ve(new $e(1)).add(s),b=ke(g.mul(f.amount.sub((I=f.fee)!=null?I:new $e(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",b.amount.toString(),"maxAnotherAmountFee:",(K=(x=b.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:b,liquidity:y}}};function $p(r,e,t,n){let o=r.mul(e).div(n);!o.isZero()&&!r.mul(e).mod(n).isZero()&&(o=o.add(new $e(1)));let s=r.mul(t).div(n);return!s.isZero()&&!r.mul(t).mod(n).isZero()&&(s=s.add(new $e(1))),{amountA:o,amountB:s}}import{PublicKey as Sn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as dt,TOKEN_2022_PROGRAM_ID as hs,createTransferInstruction as ef}from"@solana/spl-token";import _o from"bn.js";import{TOKEN_PROGRAM_ID as As,TOKEN_2022_PROGRAM_ID as gs}from"@solana/spl-token";import{PublicKey as gt,TransactionInstruction as Ps,SystemProgram as ac}from"@solana/web3.js";import ws from"bn.js";function wB(r,e,t,n,o,s,i,a,u,c,l,m){let d=N([v("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:ac.programId,isSigner:!1,isWritable:!1},{pubkey:As,isSigner:!1,isWritable:!1},{pubkey:new gt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new gt(t.id),isSigner:!1,isWritable:!0},{pubkey:new gt(n.id),isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=be(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=be(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new gt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=be(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new Ps({keys:p,programId:r,data:y})}function AB(r,e,t,n,o,s,i,a,u,c){let l=N([v("instruction")]),m=[{pubkey:ac.programId,isSigner:!1,isWritable:!1},{pubkey:As,isSigner:!1,isWritable:!1},{pubkey:new gt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new gt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new gt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=be(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=be(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new gt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=be(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new Ps({keys:m,programId:r,data:d})}function sc(r,e,t,n,o,s){if(r.version===4&&r.pooltype.includes("StablePool")){let i=be(e);return[{pubkey:i.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.authority,isSigner:!1,isWritable:!1},{pubkey:i.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:new gt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:i.openOrders,isSigner:!1,isWritable:!0},{pubkey:i.vault.A,isSigner:!1,isWritable:!0},{pubkey:i.vault.B,isSigner:!1,isWritable:!0},{pubkey:i.marketId,isSigner:!1,isWritable:!0},{pubkey:i.marketBids,isSigner:!1,isWritable:!0},{pubkey:i.marketAsks,isSigner:!1,isWritable:!0},{pubkey:i.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0}]}else if(r.version===6){let i=r,a=be(e),u=i.mintA.address===t;return[{pubkey:new gt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,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(gs)||a.mintB.programId.equals(gs)?[{pubkey:gs,isSigner:!1,isWritable:!1},{pubkey:Nn,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}]:[],...(s!=null?s:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ct(new gt(String(r.programId)),new gt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let i=be(e);return[{pubkey:i.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.authority,isSigner:!1,isWritable:!1},{pubkey:i.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:i.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:i.openOrders,isSigner:!1,isWritable:!0},{pubkey:i.vault.A,isSigner:!1,isWritable:!0},{pubkey:i.vault.B,isSigner:!1,isWritable:!0},{pubkey:i.marketId,isSigner:!1,isWritable:!0},{pubkey:i.marketBids,isSigner:!1,isWritable:!0},{pubkey:i.marketAsks,isSigner:!1,isWritable:!0},{pubkey:i.marketEventQueue,isSigner:!1,isWritable:!0},...i.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:i.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:i.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0}]]}}function Jp(r,e,t,n,o,s,i,a,u,c,l,m,d,p){let y=N([v("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:As,isSigner:!1,isWritable:!1}];f.push(...sc(a,c,s,t,n,p[0])),f.push(...sc(u,l,i,n,o,p[1]));let g=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},g),new Ps({keys:f,programId:r,data:g})}function uc({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var o,s,i,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=be(m),p=t.equals(d.mintA.address)?Nt.add(lt):Mt.sub(lt);return Se.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((s=(o=n.minAmountOut.fee)==null?void 0:o.raw)!=null?s:new ws(0)),sqrtPriceLimitX64:p,remainingAccounts:(i=n.remainingAccounts[0])!=null?i:[]})}else{let m=n.poolKey[0];return{signers:[],instructions:[Io({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 ws(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.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:[Jp(r,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 ws(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var cc={[co.toBase58()]:3},lc={3:co};var ks=N([ye(5),ye(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),ye(7)]),mc={3:ks};import{PublicKey as dc}from"@solana/web3.js";var No=ue("Serum"),Mo=class{static getProgramId(e){let t=lc[e];return t||No.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=cc[t];return n||No.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=mc[e];return t||No.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()],o=0,s;for(;o<100;){try{let i=n.concat(Buffer.from([o]),Buffer.alloc(7));s=dc.createProgramAddressSync(i,e)}catch(i){if(i instanceof TypeError)throw i;o++;continue}return{publicKey:s,nonce:o}}return No.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:dc.default,nonce:o}}};var zt=new _o(0),_r=class extends Be{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(J));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:o=1}=e,s=await this.getWSolAccounts(),i=this.createTxBuilder();i.addCustomComputeBudget(e.computeBudgetConfig);let a=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});i.addInstruction(a);let u=z(t);for(let c=0;c<s.length;c++)u.gte(s[c].amount)?(i.addInstruction({instructions:[Wt({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(s[c].amount)):(i.addInstruction({instructions:[Wt({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),lr({destination:a.addresses.newAccount,source:s[c].publicKey,amount:u,owner:this.scope.ownerPubKey,tokenProgram:n}));return i.versionBuild({txVersion:o})}async wrapWSol(e,t,n){let o=await this.getWSolAccounts(),s=this.createTxBuilder(),i=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return s.addInstruction(i),o.length&&s.addInstruction({instructions:[lr({destination:o[0].publicKey,source:i.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Wt({tokenAccount:i.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),s.versionBuild({txVersion:n!=null?n:1})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts(sr,{dataSlice:{offset:hr.offsetOf("baseMint"),length:64}}),t=N([B("baseMint"),B("quoteMint")]),n=e.map(a=>({id:a.pubkey,version:4,mintA:t.decode(a.account.data).baseMint,mintB:t.decode(a.account.data).quoteMint})),o=N([B("mintA"),B("mintB")]);return{clmmPools:(await this.scope.connection.getProgramAccounts(fi,{filters:[{dataSize:In.span}],dataSlice:{offset:In.offsetOf("mintA"),length:64}})).map(a=>{let u=o.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:o}){e=e.toString()===Sn.default.toString()?J:e,t=t.toString()===Sn.default.toString()?J:t;let s={},i={},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),i[l.id.toString()]=l),l.mintA.equals(e)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:dt,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:dt,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:dt,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:dt,in:[],out:[],mDecimals:0}),u[m].out.push(l)}}let c=[];for(let l of o)(l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),s[l.id.toBase58()]=l,c.push(l)),l.mintA.equals(e)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:dt,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:dt,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:dt,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:dt,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&&i[d.id.toString()]===void 0?i[d.id.toString()]=d:d.version!==6&&s[d.id.toString()]===void 0&&(s[d.id.toString()]=d),p.version===6&&i[p.id.toString()]===void 0?i[p.id.toString()]=p:p.version!==6&&s[p.id.toString()]===void 0&&(s[p.id.toString()]=p)}return{directPath:a,addLiquidityPools:c,routePathDict:u,needSimulate:Object.values(s),needTickArray:Object.values(i)}}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:s,slippage:i,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:P,executionPriceX64:A}=Re.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:i,epochInfo:s,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(g.toFixed()),fee:[b],remainingAccounts:[P],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:i,clmmExPriceX64:[A],expirationTime:Rt(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:i});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:Qi(D(C({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Qi(D(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new fe(u.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:i,clmmExPriceX64:[void 0]}}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:s,tickCache:i,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var b,P,A,h,I,T,S,x,K;let m=l===void 0?new _o(0):e.raw.mul(new _o(l.feeBps.toNumber())).div(new _o(1e4)),d=e.raw.sub(m),p=new fe(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=D(C({},t),{address:at(t.address).toString()}),g=[];for(let O of n)try{g.push(D(C({},this.computeAmountOut({itemPool:O,tickCache:i,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(M){this.logDebug("direct error",O.version,O.id.toString(),M.message)}this.logDebug("direct done");for(let[O,M]of Object.entries(o)){let U={chainId:101,address:O,programId:M.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:M.mDecimals,tags:[],extensions:{}},F=M.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:i,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:U,amountIn:p})}}catch(W){this.logDebug("route in error",Z.version,Z.id.toString(),W.message);return}}).sort((Z,W)=>{var cn,Yt,ln,Vt;let pt=Z===void 0?zt:Z.data.amountOut.amount.raw.sub((Yt=(cn=Z.data.amountOut.fee)==null?void 0:cn.raw)!=null?Yt:zt),Cn=W===void 0?zt:W.data.amountOut.amount.raw.sub((Vt=(ln=W.data.amountOut.fee)==null?void 0:ln.raw)!=null?Vt:zt);return pt.lt(Cn)?1:-1})[0];if(F===void 0)continue;let H=new fe(To(U),F.data.amountOut.amount.raw.sub((P=(b=F.data.amountOut.fee)==null?void 0:b.raw)!=null?P:zt));for(let Z of M.out)try{let W=this.computeAmountOut({itemPool:Z,tickCache:i,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:H});g.push(D(C({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new ve({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((h=(A=W.amountOut.fee)==null?void 0:A.raw)!=null?h:zt)}).toFixed()),priceImpact:new V(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,Z],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(I=W.amountOut.fee)!=null&&I.raw?new fe(F.data.amountOut.amount.token,((S=(T=F.data.amountOut.fee)==null?void 0:T.raw)!=null?S:zt).add((K=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?K:zt)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:Rt(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",Z.version,Z.id.toString(),W.message)}}return g.filter(O=>O.allTrade).sort((O,M)=>O.amountOut.amount.raw.sub(M.amountOut.amount.raw).gt(zt)?-1:1)}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:o,routeProgram:s,txVersion:i}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(J),m=c.amount.token.mint.equals(J),d=u.amount.token.mint,p=u.amount.token.isToken2022?hs:dt,y=c.amount.token.mint,f=c.amount.token.isToken2022?hs:dt,{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:P,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 h;if(e.routeType==="route"){let S=e.middleToken,{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.isToken2022?hs:dt,mint:S.mint,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:n.checkCreateATAOwner});h=x,K&&a.addInstruction(K)}let I=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),T=uc({routeProgram:s,inputMint:d,swapInfo:D(C({},e),{poolInfo:[...e.poolInfoList],poolKey:I}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:h,destinationToken:P}});return e.feeConfig!==void 0&&a.addInstruction({instructions:[ef(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]}),a.addInstruction(T),i===0?a.sizeCheckBuildV0({computeBudgetConfig:o,address:T.address}):a.sizeCheckBuild({computeBudgetConfig:o,address:T.address})}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let o=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 s=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(d=>d.id)),i=Yu(s);Object.values(i).forEach(d=>{o.delete(d.mintA.address),o.delete(d.mintB.address)}),console.log("fetching mints info, total: ",o.size);let a=await Aa({connection:this.scope.connection,mints:Array.from(o).map(d=>new Sn(d))});Object.values(i).forEach(d=>{a[d.mintA.address]={address:new Sn(d.mintA.address),programId:dt,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 Sn(d.mintB.address),programId:dt,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)=>D(C({},d),{[p]:D(C({},e.routePathDict[p]),{mintProgram:a[p].programId,mDecimals:a[p].decimals,in:e.routePathDict[p].in.map(y=>i[y.id.toBase58()]||c[y.id.toBase58()]),out:e.routePathDict[p].out.map(y=>i[y.id.toBase58()]||c[y.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:s,ammSimulateCache:i,clmmPoolsRpcInfo:u,computeClmmPoolInfo:c,computePoolTickData:l,routePathDict:m}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let o=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(o.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});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(o));Object.keys(c).forEach(l=>{n[l]=c[l]})}let i=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};i.size>0&&(await ot(this.scope.connection,Array.from(i).map(l=>({pubkey:new Sn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=ks.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Mo.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:D(C({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else{let l=n[c.id.toString()],m=C({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:ys({programId:new Sn(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}}),u}};import{TOKEN_PROGRAM_ID as tf}from"@solana/spl-token";import{PublicKey as nf,Transaction as Ts,TransactionInstruction as rf}from"@solana/web3.js";import pc from"bn.js";var Je=class extends Be{static getPdaPoolId(e,t){return se([Je.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return se([Je.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new pc(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:s}){if(n.length===0)return[];let i=n.map(l=>Je.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Je.VERSION_PROJECT.length;l++)a.push(...i.map(m=>Je.getPdaOwnerId(t,m,o,l).publicKey));let u=await kt(e,[...i,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=i[d],y=a[l],f=u[d],g=u[n.length+l];if(!(f&&g)||f.data.length!==Je.POOL_LAYOUT.span||g.data.length!==Je.OWNER_LAYOUT.span)continue;let b=Je.POOL_LAYOUT.decode(f.data),P=Je.OWNER_LAYOUT.decode(g.data),A=b.openTime.toNumber(),h=b.endTime.toNumber(),I=P.tokenInfo.map(x=>x.debtAmount.gt(new pc(0))).filter(x=>!x).length!==3,T=s>A&&s<h&&b.status===1,S=I&&T;c.push({programId:t,poolId:p,ammId:b.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Je.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:S,canClaimErrorType:I?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:b.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,s=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(pe.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!u.mintAddress.equals(pe.WSOL.mint),associatedOnly:u.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),s.push(c)}n.addInstruction({instructions:[Je.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:o,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:i,signers:a}=n.build();return[{transaction:i,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,s={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(pe.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!m.mintAddress.equals(pe.WSOL.mint),associatedOnly:m.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(s[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Je.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:o,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:i,signers:a}=n.build(),u=n.allInstructions;return io(u,[o,...a.map(c=>c.publicKey)])?[{transaction:i,signer:a}]:[{transaction:new Ts().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Ts().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ts().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=N([]),s=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:tf,isSigner:!1,isWritable:!1}],i=Buffer.alloc(o.span);o.encode({},i);let a=Buffer.from([10,66,208,184,161,6,191,98,...i]);return new rf({keys:s,programId:e,data:a})}},wt=Je;wt.CLAIMED_NUM=3,wt.POOL_LAYOUT=N([ye(8),v("bump"),v("status"),w("openTime"),w("endTime"),B("ammId"),G(N([v("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Je.CLAIMED_NUM,"tokenInfo"),G(w(),10,"padding")]),wt.OWNER_LAYOUT=N([ye(8),v("bump"),v("version"),B("poolId"),B("owner"),w("lpAmount"),G(N([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Je.CLAIMED_NUM,"tokenInfo"),G(w(),4,"padding")]),wt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new nf(e)),wt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},wt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wc}from"@solana/spl-token";import Er from"bn.js";import{TransactionInstruction as sf,SYSVAR_RENT_PUBKEY as af}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fc}from"@solana/spl-token";import{createInitializeAccountInstruction as yc}from"@solana/spl-token";import{SystemProgram as Kn,Transaction as bc}from"@solana/web3.js";function of(r="accountFlags"){let e=new yo(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Is=N([ye(5),of("accountFlags"),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),ye(7)]);function uf({programId:r,marketInfo:e}){let t=N([v("version"),je("instruction"),w("baseLotSize"),w("quoteLotSize"),Lt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:af,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),o=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},o),new sf({keys:n,programId:r,data:o})}async function gc({connection:r,wallet:e,marketInfo:t}){let n=new bc,o=await r.getMinimumBalanceForRentExemption(165);n.add(Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:fc}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:fc}),yc(t.baseVault.publicKey,t.baseMint,t.vaultOwner),yc(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let s=new bc;return s.add(Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Is.span),space:Is.span,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),uf({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:s,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var Xn=class extends Be{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:o,dexProgramId:s,txVersion:i,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Qe({fromPublicKey:u,programId:s}),l=Qe({fromPublicKey:u,programId:s}),m=Qe({fromPublicKey:u,programId:s}),d=Qe({fromPublicKey:u,programId:s}),p=Qe({fromPublicKey:u,programId:s}),y=Qe({fromPublicKey:u,programId:wc}),f=Qe({fromPublicKey:u,programId:wc}),g=0,b=new Er(100);function P(){let K=new Er(0);for(;;)try{return{vaultOwner:Vr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],s),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new Er(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),I=new Er(Math.round(10**e.decimals*n)),T=new Er(Math.round(n*10**t.decimals*o));if(I.eq(Ee))throw Error("lot size is too small");if(T.eq(Ee))throw Error("tick size or lot size is too small");let S=await gc({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:s,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:g,quoteDustThreshold:b,vaultSignerNonce:h,baseLotSize:I,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let K of S.slice(1,S.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return i===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Vr(e.mint),quoteMin:new Vr(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Vr(e.mint),quoteMin:new Vr(t.mint)}})}};import{PublicKey as vr}from"@solana/web3.js";import{TransactionInstruction as Bs,SYSVAR_CLOCK_PUBKEY as cf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ss}from"@solana/spl-token";var xs=N([v("instruction"),Oa("amount")]),Fr=N([v("instruction")]);function tK({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:ei,isSigner:!1,isWritable:!1},...Object.entries(t).map(([s,i])=>({pubkey:i,isSigner:s==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(s)}))],o=Buffer.alloc(xs.span);return xs.encode({instruction:1,amount:Number(e)},o),new Bs({keys:n,programId:r,data:o})}function Vo({programId:r},e){let t=[{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:ei,isSigner:!1,isWritable:!1},...Object.entries(e).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner"].includes(o)}))],n=Buffer.alloc(Fr.span);return Fr.encode({instruction:2},n),new Bs({keys:t,programId:r,data:n})}function Ks(r){let{poolConfig:e,userKeys:t,side:n}=r,o=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,s=n==="base"?e.baseVault:e.quoteVault,i=Buffer.alloc(Fr.span);Fr.encode({instruction:2},i);let a=[{pubkey:Ss,isWritable:!1,isSigner:!1},{pubkey:cf,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Bs({programId:e.programId,keys:a,data:i})}import Ac from"bn.js";var lf={[ar.IDO_PROGRAM_ID_V1.toString()]:1,[ar.IDO_PROGRAM_ID_V2.toString()]:2,[ar.IDO_PROGRAM_ID_V3.toString()]:3,[ar.IDO_PROGRAM_ID_V4.toString()]:4},zn=class extends Be{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:o=!1,txVersion:s}){let i=this.createTxBuilder(),a=lf[t.programId];a||this.logAndCreateError("invalid version",a);let u=be(t),[c,l]=[!new Ac(e.coin).isZero(),!new Ac(e.pc).isZero()],m=u.projectInfo.mint.address.equals(J),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:o});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&i.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:o});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&g&&i.addInstruction(g),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return i.addInstruction({instructions:[...c?[Vo({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new vr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Vo({programId:new vr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new vr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:s});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),i.addInstruction({instructions:[Vo({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new vr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:s});let b={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new vr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return i.addInstruction({instructions:[...c?[Ks(D(C({},b),{side:"base"}))]:[],...l?[Ks(D(C({},b),{side:"quote"}))]:[]]}).versionBuild({txVersion:s})}};import{PublicKey as mf}from"@solana/web3.js";import{MintLayout as df,TOKEN_2022_PROGRAM_ID as Cs,TOKEN_PROGRAM_ID as Rs}from"@solana/spl-token";var Dr=class extends Be{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:o="strict"}=t||{},{mintList:s,blacklist:i,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(o,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Kt.address,Kt),this._mintGroup.official.add(Kt.address),i.forEach(c=>{this._blackTokenMap.set(c.address,D(C({},c),{priority:-1}))}),s.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Cs.toBase58():Rs.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Cs.toBase58():Rs.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?Cs.toBase58():Rs.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),o=this._tokenMap.get(n);if(o)return o;if(n.toLocaleUpperCase()==="SOL")return Kt;let s=(await this.scope.api.getTokenInfo([n]))[0];if(s)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(C({},s),{priority:2})),s;let i=await this.scope.connection.getAccountInfo(new mf(n));if(!i)throw new Error(`mint address not found: ${n}`);let a=df.decode(i.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:i.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var Eo=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:o,api:s,defaultChainTime:i,defaultChainTimeOffset:a,apiCacheTime:u,blockhashCommitment:c="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=o?new ht(o):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=c,this.api=s,this._apiCacheTime=u||5*60*1e3,this.logger=ue("Raydium"),this.farm=new kr({scope:this,moduleName:"Raydium_Farm"}),this.account=new mr({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Rr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Dr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new _r({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Lr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Mr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new wt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Xn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new zn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,value:{chainTime:i||Date.now()-a,offset:a}})}static async load(e){var l;let t=pf({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:o,logCount:s,logRequests:i,urlConfigs:a}=t,u=new mo({cluster:n,timeout:o,urlConfigs:a,logCount:s,logRequests:i}),c=new Eo(D(C({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(po);return this._owner.publicKey}setOwner(e){return this._owner=e?new ht(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ka);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(po),new Error(po)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var s;let n=(s=this.apiData.jupTokenList)==null?void 0:s[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let o=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:o}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import kc from"bn.js";var Ls=new kc(1e6);function ff(r,e,t){return r.mul(e).add(t).sub(new kc(1)).div(t)}function Pc(r,e,t){return r.mul(e).div(t)}var Fo=class{static tradingFee(e,t){return ff(e,t,Ls)}static protocolFee(e,t){return Pc(e,t,Ls)}static fundFee(e,t){return Pc(e,t,Ls)}};import Wr from"bn.js";function vo(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function yf(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=vo(r,e);return n.gt(Yn)&&(t=t.add(new Wr(1)),e=r.div(t),n=vo(r,t),n.gt(Yn)&&(e=e.add(new Wr(1)))),[t,e]}var Yn=new Wr(0),Do=class{static swapWithoutFees(e,t,n){let o=t.mul(n),s=t.add(e),[i,a]=yf(o,s),u=a.sub(t),c=n.sub(i);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,o,s){let i=e.mul(n).div(t),a=e.mul(o).div(t);if(s===0)return{tokenAmount0:i,tokenAmount1:a};if(s===1)return vo(e.mul(n),t).gt(Yn)&&i.gt(Yn)&&(i=i.add(new Wr(1))),vo(e.mul(o),t).gt(Yn)&&a.gt(Yn)&&(a=a.add(new Wr(1))),{tokenAmount0:i,tokenAmount1:a};throw Error("roundDirection value error")}};var hc=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(hc||{}),Tc=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,o){let s=Fo.tradingFee(e,o),i=e.sub(s),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Do.swapWithoutFees(i,t,n),c=a.add(s);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:s}}};var h0=r=>r;export{vb as ACCOUNT_TYPE_SIZE,mg as ALL_PROGRAM_ID,gp as AMM_CONFIG_SEED,om as AMM_STABLE,sr as AMM_V4,_f as ANAMint,Ue as API_URLS,Jl as AccountType,mo as Api,Cu as BIT_PRECISION,en as BNDivCeil,bn as BNLayout,Uy as BN_100,Gy as BN_1000,Xy as BN_10000,qy as BN_FIVE,aa as BN_ONE,dn as BN_TEN,Wy as BN_THREE,Dy as BN_TWO,Ee as BN_ZERO,Aw as BitStructure,La as Blob,fi as CLMM_PROGRAM_ID,ei as CLOCK_PROGRAM_ID,mm as CREATE_CPMM_POOL_AUTH,dm as CREATE_CPMM_POOL_FEE_ACC,lm as CREATE_CPMM_POOL_PROGRAM,Lr as Clmm,Vu as ClmmConfigLayout,Se as ClmmInstrument,Do as ConstantProductCurve,oc as CpmmConfigInfoLayout,Fo as CpmmFee,ic as CpmmPoolInfoLayout,$n as Currency,pn as CurrencyAmount,Tc as CurveCalculator,dg as DEVNET_PROGRAM_ID,vg as DEV_API_URLS,fm as DEV_CREATE_CPMM_POOL_AUTH,ym as DEV_CREATE_CPMM_POOL_FEE_ACC,pm as DEV_CREATE_CPMM_POOL_PROGRAM,np as DataElement,Vf as ETHMint,us as EXTENSION_TICKARRAY_BITMAP_SIZE,Ja as FARM_LOCK_MINT,eu as FARM_LOCK_VAULT,di as FARM_PROGRAM_ID_V3,pi as FARM_PROGRAM_ID_V5,Vn as FARM_PROGRAM_ID_V6,ft as FARM_PROGRAM_TO_VERSION,nu as FARM_VERSION_TO_LEDGER_LAYOUT,tu as FARM_VERSION_TO_STATE_LAYOUT,lg as FEE_DESTINATION_ID,Ko as FEE_RATE_DENOMINATOR,Ls as FEE_RATE_DENOMINATOR_VALUE,xp as FETCH_TICKARRAY_COUNT,Ip as Fee,re as Fraction,ar as IDO_ALL_PROGRAM,sm as IDO_PROGRAM_ID_V1,am as IDO_PROGRAM_ID_V2,um as IDO_PROGRAM_ID_V3,cm as IDO_PROGRAM_ID_V4,Hr as INSTRUCTION_PROGRAM_ID,E as InstructionType,yi as JupTokenType,Uu as LIQUIDITY_FEES_DENOMINATOR,qu as LIQUIDITY_FEES_NUMERATOR,Op as LIQUIDITY_VERSION_TO_SERUM_VERSION,Hk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Ru as LOG_B_2_X32,Lu as LOG_B_P_ERR_MARGIN_LOWER_X64,Ou as LOG_B_P_ERR_MARGIN_UPPER_X64,ao as LOOKUP_TABLE_CACHE,ur as Layout,ce as LiquidityMath,Rc as LogLevel,Uo as Logger,Is as MARKET_STATE_LAYOUT_V2,ks as MARKET_STATE_LAYOUT_V3,mc as MARKET_VERSION_TO_STATE_LAYOUT,ya as MAX_BASE64_SIZE,Mt as MAX_SQRT_PRICE_X64,tt as MAX_TICK,Nn as MEMO_PROGRAM_ID,ta as MEMO_PROGRAM_ID2,Mn as METADATA_PROGRAM_ID,Nt as MIN_SQRT_PRICE_X64,Ze as MIN_TICK,qn as MODEL_DATA_PUBKEY,Mo as Market,te as MathUtil,as as MaxU64,Ku as MaxUint128,Gt as NEGATIVE_ONE,Mf as NRVMint,lt as ONE,rm as OPEN_BOOK_PROGRAM,hp as OPERATION_SEED,ls as ObservationInfoLayout,Kp as ObservationLayout,Eu as OperationLayout,hi as OptionLayout,ht as Owner,Sf as PAIMint,Pp as POOL_REWARD_VAULT_SEED,wp as POOL_SEED,Tp as POOL_TICK_ARRAY_BITMAP_SEED,Ap as POOL_VAULT_SEED,xu as POSITION_SEED,Ve as Percent,xa as PoolFetchType,In as PoolInfoLayout,Re as PoolUtils,Co as PositionInfoLayout,Rp as PositionRewardInfoLayout,Kr as PositionUtils,ve as Price,MT as ProtocolPositionLayout,So as Q128,mt as Q64,Bf as RAYMint,rt as RENT_PROGRAM_ID,Eo as Raydium,Cp as RewardInfo,hc as RoundDirection,oi as Rounding,im as Router,cc as SERUM_PROGRAMID_TO_VERSION,co as SERUM_PROGRAM_ID_V3,lc as SERUM_VERSION_TO_PROGRAMID,Ba as SESSION_KEY,Me as SOLMint,Kt as SOL_INFO,Ik as SPL_MINT_LAYOUT,Kf as SRMMint,bi as STORAGE_KEY,Zr as SYSTEM_PROGRAM_ID,ee as SqrtPriceMath,Wn as StableLayout,Ti as Structure,Tn as SwapMath,hn as TICK_ARRAY_BITMAP_SIZE,kp as TICK_ARRAY_SEED,Fe as TICK_ARRAY_SIZE,Th as TICK_SPACINGS,_e as TOKEN_WSOL,Xt as TickArrayBitmap,_u as TickArrayBitmapExtensionLayout,Sr as TickArrayBitmapExtensionUtils,Br as TickArrayLayout,Lp as TickLayout,xn as TickMath,le as TickQuery,Y as TickUtils,pe as Token,fe as TokenAmount,uo as TxBuilder,fn as TxVersion,xr as U64Resolution,xh as U64_IGNORE_RANGE,Ai as UInt,Cf as USDCMint,Nf as USDHMint,Rf as USDTMint,nm as UTIL1216,Ii as Union,Za as Voter,Ed as VoterDepositEntry,Vd as VoterLockup,Ha as VoterRegistrar,_d as VoterVotingMintConfig,J as WSOLMint,yo as WideBits,Dt as WrappedLayout,de as ZERO,ra as _100_PERCENT,k as accountMeta,Sy as add,oo as addComputeBudget,es as addLiquidityLayout,oA as array,Oi as associatedLedgerAccountLayout,Pi as bits,ye as blob,Xe as bool,Xi as calFarmRewardAmount,ff as ceilDiv,Jn as checkLegacyTxSize,er as checkV0TxSize,li as chunkArray,Fr as claimLayout,Wt as closeAccountInstruction,Zo as commonSystemAccountMeta,ho as createAssociatedLedgerAccountInstruction,ue as createLogger,mu as createPoolFeeLayout,Pu as createPoolV4InstructionV2,Qk as createPoolV4Layout,qt as createWSolAccountInstructions,Yw as cstr,my as currencyEquals,vl as decimalToFraction,md as decodeBool,Ty as div,eo as divCeil,et as dwLayout,dd as encodeBool,iw as endlessRetry,Vl as eq,qw as f32,Uw as f32be,Gw as f64,Xw as f64be,Vi as farmAddRewardLayout,cP as farmLedgerLayoutV3_1,pr as farmLedgerLayoutV3_2,lP as farmLedgerLayoutV5_1,ja as farmLedgerLayoutV5_2,Qa as farmLedgerLayoutV6_1,ou as farmRewardInfoToConfig,Mi as farmRewardLayout,_i as farmRewardRestartLayout,Md as farmRewardTimeInfoLayout,za as farmStateV3Layout,Ya as farmStateV5Layout,dr as farmStateV6Layout,_P as fetchMultipleFarmInfoAndUpdate,dI as fetchMultipleInfo,Aa as fetchMultipleMintInfos,se as findProgramAddress,Zi as fixedSwapInLayout,$i as fixedSwapOutLayout,Pc as floorDiv,io as forecastTransactionSize,dp as formatLayout,Qe as generatePubKey,ge as getATAAddress,ru as getAssociatedAuthority,fs as getAssociatedConfigId,He as getAssociatedLedgerAccount,yr as getAssociatedLedgerPoolAccount,Vp as getAssociatedOpenOrders,zu as getAssociatedPoolKeys,Xp as getCpmmPdaAmmConfigId,zp as getCpmmPdaPoolId,Zu as getCreatePoolKeys,ha as getDate,zi as getDepositEntryIndex,yu as getDxByDyBaseIn,fu as getDyByDxBaseIn,Rb as getEpochInfo,Dn as getFarmLedgerLayout,Fd as getFarmStateLayout,ys as getLiquidityAssociatedAuthority,Bn as getLiquidityAssociatedId,lT as getLiquidityFromAmounts,By as getMax,kt as getMultipleAccountsInfo,ot as getMultipleAccountsInfoWithCustomFlags,mi as getMultipleLookupTableInfo,Ph as getPdaAmmConfigId,ct as getPdaExBitmapAccount,Yp as getPdaLpMint,Bo as getPdaMetadataKey,Lo as getPdaObservationId,Ir as getPdaOperationAccount,yt as getPdaPersonalPositionAddress,Gp as getPdaPoolAuthority,Bu as getPdaPoolId,Su as getPdaPoolRewardVaulId,ss as getPdaPoolVaultId,kn as getPdaProtocolPositionAddress,Ae as getPdaTickArrayAddress,Hu as getPdaVault,_n as getRecentBlockHash,vi as getRegistrarAddress,wm as getSessionKey,bu as getStablePrice,tm as getTime,wb as getTimestamp,Gi as getTokenOwnerRecordAddress,Ag as getTransferAmountFee,ke as getTransferAmountFeeV2,qi as getVoterAddress,Ui as getVoterWeightRecordAddress,Wi as getVotingMintAuthority,Di as getVotingTokenMint,Yd as governanceCreateTokenOwnerRecord,Pw as greedy,_l as gt,hy as gte,Fa as i128,yh as i16ToBytes,xo as i32ToBytes,bo as i64,Ea as i8,Ji as initPoolLayout,Ri as initTokenAccountInstruction,uf as initializeMarket,rg as intersection,Ia as isDateAfter,Ta as isDateBefore,Dl as isDecimal,xy as isMeaningfulNumber,ka as isNumber,Ei as isValidFarmVersion,Tr as isZero,be as jsonInfo2PoolKeys,VP as judgeFarmType,os as leadingZeros,Iu as leastSignificantBit,hr as liquidityStateV4Layout,ep as liquidityStateV5Layout,Py as lt,ky as lte,Lf as mSOLMint,Io as makeAMMSwapInstruction,Au as makeAddLiquidityInstruction,ji as makeAddNewRewardInstruction,Vo as makeClaimInstruction,Ks as makeClaimInstructionV4,Ju as makeCreateCpmmPoolInInstruction,iu as makeCreateFarmInstruction,gc as makeCreateMarketInstruction,su as makeCreatorWithdrawFarmRewardInstruction,ec as makeDepositCpmmInInstruction,au as makeDepositInstructionV3,uu as makeDepositInstructionV5,cu as makeDepositInstructionV6,JP as makeDepositTokenInstruction,tk as makeDepositWithdrawInstruction,ph as makeInitPoolInstructionV4,tK as makePurchaseInstruction,Yi as makeRestartRewardInstruction,ku as makeSimulatePoolInfoInstruction,nc as makeSwapCpmmBaseInInInstruction,rc as makeSwapCpmmBaseOutInInstruction,yp as makeSwapFixedInInstruction,bp as makeSwapFixedOutInstruction,uc as makeSwapInstruction,lr as makeTransferInstruction,tc as makeWithdrawCpmmInInstruction,Pr as makeWithdrawInstructionV3,Ar as makeWithdrawInstructionV5,wr as makeWithdrawInstructionV6,ek as makeWithdrawTokenInstruction,Rt as minExpirationTime,Ih as mockCreatePoolInfo,Nu as mockV3CreatePoolInfo,rp as modelDataInfoLayout,Tu as mostSignificantBit,ai as mul,ui as notInnerObject,_w as ns64,Ww as ns64be,Oa as nu64,Cw as nu64be,ki as offset,ag as offsetDateTime,Jw as option,z as parseBigNumberish,mn as parseNumberInfo,ga as parseSimulateLogToJson,vt as parseSimulateValue,Xa as parseTokenAccountResp,Mk as parseTokenInfo,sn as poolTypeV6,yn as printSimulate,B as publicKey,xs as purchaseLayout,Ld as realFarmStateV3Layout,Od as realFarmStateV5Layout,Nd as realFarmV6Layout,sa as recursivelyDecimalToFraction,rs as removeLiquidityInstruction,ts as removeLiquidityLayout,wB as route1Instruction,AB as route2Instruction,Jp as routeInstruction,rA as rustEnum,Lw as s16,Vw as s16be,Ow as s24,Ew as s24be,Ge as s32,Fw as s32be,Nw as s40,vw as s40be,Mw as s48,Dw as s48be,Rw as s8,G as seq,Pf as setLoggerLevel,El as shakeFractionDecimal,ba as simulateMultipleInstruction,dh as simulatePoolInfoInstruction,Yl as simulateTransaction,la as sleep,at as solToWSol,Vk as solToWSolToken,tn as splAccountLayout,ca as splitNumber,Of as stSOLMint,nA as str,N as struct,Iy as sub,tA as tagged,ii as tenExponential,Yu as toAmmComputePoolInfo,wn as toApiV3Token,Fl as toBN,jl as toBuffer,Hi as toFeeConfig,ua as toFraction,Ay as toFractionWithDecimals,zy as toPercent,To as toToken,Qi as toTokenAmount,_k as toTokenInfo,Yy as toTokenPrice,jy as toTotalPrice,ia as toUsdCurrency,is as trailingZeros,Jo as tryParsePublicKey,Q as u128,Lt as u16,hu as u16ToBytes,Iw as u16be,kw as u24,xw as u24be,je as u32,bh as u32ToBytes,Bw as u32be,hw as u40,Sw as u40be,Tw as u48,Kw as u48be,w as u64,v as u8,iA as union,h0 as unionArr,zw as unionLayoutDiscriminator,ig as uniq,vd as updateFarmPoolInfo,lo as updateReqHistory,jw as utf8,$o as validateAndParsePublicKey,Fi as validateFarmRewards,eA as vec,pd as vecU8,Qd as voterStakeRegistryCreateDepositEntry,jd as voterStakeRegistryCreateVoter,Gd as voterStakeRegistryDeposit,Xd as voterStakeRegistryUpdateVoterWeightRecord,zd as voterStakeRegistryWithdraw,Ek as wSolToSolToken,Ni as withdrawRewardLayout,og as xor,sA as zeros};
1
+ var Bc=Object.defineProperty,Sc=Object.defineProperties;var Kc=Object.getOwnPropertyDescriptors;var qr=Object.getOwnPropertySymbols;var _s=Object.prototype.hasOwnProperty,Vs=Object.prototype.propertyIsEnumerable;var Ms=(r,e,t)=>e in r?Bc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e)=>{for(var t in e||(e={}))_s.call(e,t)&&Ms(r,t,e[t]);if(qr)for(var t of qr(e))Vs.call(e,t)&&Ms(r,t,e[t]);return r},D=(r,e)=>Sc(r,Kc(e));var Ie=(r,e)=>{var t={};for(var n in r)_s.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&qr)for(var n of qr(r))e.indexOf(n)<0&&Vs.call(r,n)&&(t[n]=r[n]);return t};import Sa from"axios";import{get as qo,set as Es}from"lodash";import Fs from"dayjs";import Cc from"dayjs/plugin/utc";Fs.extend(Cc);var Rc=(o=>(o[o.Error=0]="Error",o[o.Warning=1]="Warning",o[o.Info=2]="Info",o[o.Debug=3]="Debug",o))(Rc||{}),Uo=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 Fs().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}},Go={},vs={};function ue(r){let e=qo(Go,r);if(!e){let t=qo(vs,r);e=new Uo({name:r,logLevel:t}),Es(Go,r,e)}return e}function Pf(r,e){Es(vs,r,e);let t=qo(Go,r);t&&(t.level=e)}import{PublicKey as Ul}from"@solana/web3.js";import Gl from"bn.js";import Wl from"big.js";import Jt from"bn.js";import Te from"bn.js";var Ln=9e15,$t=1e9,Xo="0123456789abcdef",Gr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Xr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",zo={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ln,maxE:Ln,crypto:!1},Us,Et,ne=!0,Yr="[DecimalError] ",Zt=Yr+"Invalid argument: ",Gs=Yr+"Precision limit exceeded",Xs=Yr+"crypto unavailable",zs="[object Decimal]",Ye=Math.floor,Ne=Math.pow,Lc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Oc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Nc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ys=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Pt=1e7,$=7,Mc=9007199254740991,_c=Gr.length-1,Yo=Xr.length-1,_={toStringTag:zs};_.absoluteValue=_.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),j(r)};_.ceil=function(){return j(new this.constructor(this),this.e+1,2)};_.clampedTo=_.clamp=function(r,e){var t,n=this,o=n.constructor;if(r=new o(r),e=new o(e),!r.s||!e.s)return new o(NaN);if(r.gt(e))throw Error(Zt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new o(n)};_.comparedTo=_.cmp=function(r){var e,t,n,o,s=this,i=s.d,a=(r=new s.constructor(r)).d,u=s.s,c=r.s;if(!i||!a)return!u||!c?NaN:u!==c?u:i===a?0:!i^u<0?1:-1;if(!i[0]||!a[0])return i[0]?u:a[0]?-c:0;if(u!==c)return u;if(s.e!==r.e)return s.e>r.e^u<0?1:-1;for(n=i.length,o=a.length,e=0,t=n<o?n:o;e<t;++e)if(i[e]!==a[e])return i[e]>a[e]^u<0?1:-1;return n===o?0:n>o^u<0?1:-1};_.cosine=_.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=Vc(n,$s(n,t)),n.precision=r,n.rounding=e,j(Et==2||Et==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};_.cubeRoot=_.cbrt=function(){var r,e,t,n,o,s,i,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(ne=!1,s=l.s*Ne(l.s*l,1/3),!s||Math.abs(s)==1/0?(t=qe(l.d),r=l.e,(s=(r-t.length+1)%3)&&(t+=s==1||s==-2?"0":"00"),s=Ne(t,1/3),r=Ye((r+1)/3)-(r%3==(r<0?-1:2)),s==1/0?t="5e"+r:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(s.toString()),i=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Pe(c.plus(l).times(a),c.plus(u),i+2,1),qe(a.d).slice(0,i)===(t=qe(n.d)).slice(0,i))if(t=t.slice(i-3,i+1),t=="9999"||!o&&t=="4999"){if(!o&&(j(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}i+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(j(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return ne=!0,j(n,r,m.rounding,e)};_.decimalPlaces=_.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ye(this.e/$))*$,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};_.dividedBy=_.div=function(r){return Pe(this,new this.constructor(r))};_.dividedToIntegerBy=_.divToInt=function(r){var e=this,t=e.constructor;return j(Pe(e,new t(r),0,1,1),t.precision,t.rounding)};_.equals=_.eq=function(r){return this.cmp(r)===0};_.floor=function(){return j(new this.constructor(this),this.e+1,3)};_.greaterThan=_.gt=function(r){return this.cmp(r)>0};_.greaterThanOrEqualTo=_.gte=function(r){var e=this.cmp(r);return e==1||e===0};_.hyperbolicCosine=_.cosh=function(){var r,e,t,n,o,s=this,i=s.constructor,a=new i(1);if(!s.isFinite())return new i(s.s?1/0:NaN);if(s.isZero())return a;t=i.precision,n=i.rounding,i.precision=t+Math.max(s.e,s.sd())+4,i.rounding=1,o=s.d.length,o<32?(r=Math.ceil(o/3),e=(1/Qr(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),s=On(i,1,s.times(e),new i(1),!0);for(var u,c=r,l=new i(8);c--;)u=s.times(s),s=a.minus(u.times(l.minus(u.times(l))));return j(s,i.precision=t,i.rounding=n,!0)};_.hyperbolicSine=_.sinh=function(){var r,e,t,n,o=this,s=o.constructor;if(!o.isFinite()||o.isZero())return new s(o);if(e=s.precision,t=s.rounding,s.precision=e+Math.max(o.e,o.sd())+4,s.rounding=1,n=o.d.length,n<3)o=On(s,2,o,o,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,o=o.times(1/Qr(5,r)),o=On(s,2,o,o,!0);for(var i,a=new s(5),u=new s(16),c=new s(20);r--;)i=o.times(o),o=o.times(a.plus(i.times(u.times(i).plus(c))))}return s.precision=e,s.rounding=t,j(o,e,t,!0)};_.hyperbolicTangent=_.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,Pe(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};_.inverseCosine=_.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),o=t.precision,s=t.rounding;return n!==-1?n===0?e.isNeg()?At(t,o,s):new t(0):new t(NaN):e.isZero()?At(t,o+4,s).times(.5):(t.precision=o+6,t.rounding=1,e=e.asin(),r=At(t,o+4,s).times(.5),t.precision=o,t.rounding=s,r.minus(e))};_.inverseHyperbolicCosine=_.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,ne=!1,t=t.times(t).minus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};_.inverseHyperbolicSine=_.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,ne=!1,t=t.times(t).plus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln())};_.inverseHyperbolicTangent=_.atanh=function(){var r,e,t,n,o=this,s=o.constructor;return o.isFinite()?o.e>=0?new s(o.abs().eq(1)?o.s/0:o.isZero()?o:NaN):(r=s.precision,e=s.rounding,n=o.sd(),Math.max(n,r)<2*-o.e-1?j(new s(o),r,e,!0):(s.precision=t=n-o.e,o=Pe(o.plus(1),new s(1).minus(o),t+r,1),s.precision=r+4,s.rounding=1,o=o.ln(),s.precision=r,s.rounding=e,o.times(.5))):new s(NaN)};_.inverseSine=_.asin=function(){var r,e,t,n,o=this,s=o.constructor;return o.isZero()?new s(o):(e=o.abs().cmp(1),t=s.precision,n=s.rounding,e!==-1?e===0?(r=At(s,t+4,n).times(.5),r.s=o.s,r):new s(NaN):(s.precision=t+6,s.rounding=1,o=o.div(new s(1).minus(o.times(o)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=n,o.times(2)))};_.inverseTangent=_.atan=function(){var r,e,t,n,o,s,i,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<=Yo)return i=At(l,m+4,d).times(.25),i.s=c.s,i}else{if(!c.s)return new l(NaN);if(m+4<=Yo)return i=At(l,m+4,d).times(.5),i.s=c.s,i}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/$+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(ne=!1,e=Math.ceil(a/$),n=1,u=c.times(c),i=new l(c),o=c;r!==-1;)if(o=o.times(u),s=i.minus(o.div(n+=2)),o=o.times(u),i=s.plus(o.div(n+=2)),i.d[e]!==void 0)for(r=e;i.d[r]===s.d[r]&&r--;);return t&&(i=i.times(2<<t-1)),ne=!0,j(i,l.precision=m,l.rounding=d,!0)};_.isFinite=function(){return!!this.d};_.isInteger=_.isInt=function(){return!!this.d&&Ye(this.e/$)>this.d.length-2};_.isNaN=function(){return!this.s};_.isNegative=_.isNeg=function(){return this.s<0};_.isPositive=_.isPos=function(){return this.s>0};_.isZero=function(){return!!this.d&&this.d[0]===0};_.lessThan=_.lt=function(r){return this.cmp(r)<0};_.lessThanOrEqualTo=_.lte=function(r){return this.cmp(r)<1};_.logarithm=_.log=function(r){var e,t,n,o,s,i,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.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)s=!0;else{for(o=t[0];o%10===0;)o/=10;s=o!==1}if(ne=!1,a=m+p,i=Ht(c,a),n=e?zr(l,a+10):Ht(r,a),u=Pe(i,n,a,1),jn(u.d,o=m,d))do if(a+=10,i=Ht(c,a),n=e?zr(l,a+10):Ht(r,a),u=Pe(i,n,a,1),!s){+qe(u.d).slice(o+1,o+15)+1==1e14&&(u=j(u,m+1,0));break}while(jn(u.d,o+=10,d));return ne=!0,j(u,m,d)};_.minus=_.sub=function(r){var e,t,n,o,s,i,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return ne?j(r,a,u):r}if(t=Ye(r.e/$),l=Ye(p.e/$),c=c.slice(),s=l-t,s){for(m=s<0,m?(e=c,s=-s,i=d.length):(e=d,t=l,i=c.length),n=Math.max(Math.ceil(a/$),i)+2,s>n&&(s=n,e.length=1),e.reverse(),n=s;n--;)e.push(0);e.reverse()}else{for(n=c.length,i=d.length,m=n<i,m&&(i=n),n=0;n<i;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}s=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),i=c.length,n=d.length-i;n>0;--n)c[i++]=0;for(n=d.length;n>s;){if(c[--n]<d[n]){for(o=n;o&&c[--o]===0;)c[o]=Pt-1;--c[o],c[n]+=Pt}c[n]-=d[n]}for(;c[--i]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=jr(c,t),ne?j(r,a,u):r):new y(u===3?-0:0)};_.modulo=_.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?j(new n(t),n.precision,n.rounding):(ne=!1,n.modulo==9?(e=Pe(t,r.abs(),0,3,1),e.s*=r.s):e=Pe(t,r,0,n.modulo,1),e=e.times(r),ne=!0,t.minus(e))};_.naturalExponential=_.exp=function(){return jo(this)};_.naturalLogarithm=_.ln=function(){return Ht(this)};_.negated=_.neg=function(){var r=new this.constructor(this);return r.s=-r.s,j(r)};_.plus=_.add=function(r){var e,t,n,o,s,i,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),ne?j(r,a,u):r;if(s=Ye(m.e/$),n=Ye(r.e/$),c=c.slice(),o=s-n,o){for(o<0?(t=c,o=-o,i=l.length):(t=l,n=s,i=c.length),s=Math.ceil(a/$),i=s>i?s+1:i+1,o>i&&(o=i,t.length=1),t.reverse();o--;)t.push(0);t.reverse()}for(i=c.length,o=l.length,i-o<0&&(o=i,t=l,l=c,c=t),e=0;o;)e=(c[--o]=c[o]+l[o]+e)/Pt|0,c[o]%=Pt;for(e&&(c.unshift(e),++n),i=c.length;c[--i]==0;)c.pop();return r.d=c,r.e=jr(c,n),ne?j(r,a,u):r};_.precision=_.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Zt+r);return t.d?(e=js(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};_.round=function(){var r=this,e=r.constructor;return j(new e(r),r.e+1,e.rounding)};_.sine=_.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=Fc(n,$s(n,t)),n.precision=r,n.rounding=e,j(Et>2?t.neg():t,r,e,!0)):new n(NaN)};_.squareRoot=_.sqrt=function(){var r,e,t,n,o,s,i=this,a=i.d,u=i.e,c=i.s,l=i.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?i:1/0);for(ne=!1,c=Math.sqrt(+i),c==0||c==1/0?(e=qe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ye((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(s=n,n=s.plus(Pe(i,s,t+2,1)).times(.5),qe(s.d).slice(0,t)===(e=qe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(j(s,u+1,0),s.times(s).eq(i))){n=s;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(j(n,u+1,1),r=!n.times(n).eq(i));break}return ne=!0,j(n,u,l.rounding,r)};_.tangent=_.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=Pe(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,j(Et==2||Et==4?t.neg():t,r,e,!0)):new n(NaN)};_.times=_.mul=function(r){var e,t,n,o,s,i,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Ye(l.e/$)+Ye(r.e/$),u=d.length,c=p.length,u<c&&(s=d,d=p,p=s,i=u,u=c,c=i),s=[],i=u+c,n=i;n--;)s.push(0);for(n=c;--n>=0;){for(e=0,o=u+n;o>n;)a=s[o]+p[n]*d[o-n-1]+e,s[o--]=a%Pt|0,e=a/Pt|0;s[o]=(s[o]+e)%Pt|0}for(;!s[--i];)s.pop();return e?++t:s.shift(),r.d=s,r.e=jr(s,t),ne?j(r,m.precision,m.rounding):r};_.toBinary=function(r,e){return Ho(this,2,r,e)};_.toDecimalPlaces=_.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(nt(r,0,$t),e===void 0?e=n.rounding:nt(e,0,8),j(t,r+t.e+1,e))};_.toExponential=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=St(n,!0):(nt(r,0,$t),e===void 0?e=o.rounding:nt(e,0,8),n=j(new o(n),r+1,e),t=St(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toFixed=function(r,e){var t,n,o=this,s=o.constructor;return r===void 0?t=St(o):(nt(r,0,$t),e===void 0?e=s.rounding:nt(e,0,8),n=j(new s(o),r+o.e+1,e),t=St(n,!1,r+n.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};_.toFraction=function(r){var e,t,n,o,s,i,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),s=e.e=js(y)-p.e-1,i=s%$,e.d[0]=Ne(10,i<0?$+i:i),r==null)r=s>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Zt+a);r=a.gt(e)?s>0?e:c:a}for(ne=!1,a=new f(qe(y)),l=f.precision,f.precision=s=y.length*$*2;m=Pe(a,e,0,1,1),o=t.plus(m.times(n)),o.cmp(r)!=1;)t=n,n=o,o=c,c=u.plus(m.times(o)),u=o,o=e,e=a.minus(m.times(o)),a=o;return o=Pe(r.minus(t),n,0,1,1),u=u.plus(o.times(c)),t=t.plus(o.times(n)),u.s=c.s=p.s,d=Pe(c,n,s,1).minus(p).abs().cmp(Pe(u,t,s,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,ne=!0,d};_.toHexadecimal=_.toHex=function(r,e){return Ho(this,16,r,e)};_.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:nt(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(ne=!1,t=Pe(t,r,0,e,1).times(r),ne=!0,j(t)):(r.s=t.s,t=r),t};_.toNumber=function(){return+this};_.toOctal=function(r,e){return Ho(this,8,r,e)};_.toPower=_.pow=function(r){var e,t,n,o,s,i,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ne(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,s=u.rounding,r.eq(1))return j(a,n,s);if(e=Ye(r.e/$),e>=r.d.length-1&&(t=c<0?-c:c)<=Mc)return o=Qs(u,a,t,n),r.s<0?new u(1).div(o):j(o,n,s);if(i=a.s,i<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(i=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=i,a}return t=Ne(+a,c),e=t==0||!isFinite(t)?Ye(c*(Math.log("0."+qe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?i/0:0):(ne=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),o=jo(r.times(Ht(a,n+t)),n),o.d&&(o=j(o,n+5,1),jn(o.d,n,s)&&(e=n+10,o=j(jo(r.times(Ht(a,e+t)),e),e+5,1),+qe(o.d).slice(n+1,n+15)+1==1e14&&(o=j(o,n+1,0)))),o.s=i,ne=!0,u.rounding=s,j(o,n,s))};_.toPrecision=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=St(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):(nt(r,1,$t),e===void 0?e=o.rounding:nt(e,0,8),n=j(new o(n),r,e),t=St(n,r<=n.e||n.e<=o.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toSignificantDigits=_.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(nt(r,1,$t),e===void 0?e=n.rounding:nt(e,0,8)),j(new n(t),r,e)};_.toString=function(){var r=this,e=r.constructor,t=St(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};_.truncated=_.trunc=function(){return j(new this.constructor(this),this.e+1,1)};_.valueOf=_.toJSON=function(){var r=this,e=r.constructor,t=St(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function qe(r){var e,t,n,o=r.length-1,s="",i=r[0];if(o>0){for(s+=i,e=1;e<o;e++)n=r[e]+"",t=$-n.length,t&&(s+=Qt(t)),s+=n;i=r[e],n=i+"",t=$-n.length,t&&(s+=Qt(t))}else if(i===0)return"0";for(;i%10===0;)i/=10;return s+i}function nt(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Zt+r)}function jn(r,e,t,n){var o,s,i,a;for(s=r[0];s>=10;s/=10)--e;return--e<0?(e+=$,o=0):(o=Math.ceil((e+1)/$),e%=$),s=Ne(10,$-e),a=r[o]%s|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),i=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):i=(t<4&&a+1==s||t>3&&a+1==s/2)&&(r[o+1]/s/100|0)==Ne(10,e-2)-1||(a==s/2||a==0)&&(r[o+1]/s/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),i=(n||t<4)&&a==9999||!n&&t>3&&a==4999):i=((n||t<4)&&a+1==s||!n&&t>3&&a+1==s/2)&&(r[o+1]/s/1e3|0)==Ne(10,e-3)-1,i}function Ur(r,e,t){for(var n,o=[0],s,i=0,a=r.length;i<a;){for(s=o.length;s--;)o[s]*=e;for(o[0]+=Xo.indexOf(r.charAt(i++)),n=0;n<o.length;n++)o[n]>t-1&&(o[n+1]===void 0&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}function Vc(r,e){var t,n,o;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),o=(1/Qr(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),r.precision+=t,e=On(r,1,e.times(o),new r(1));for(var s=t;s--;){var i=e.times(e);e=i.times(i).minus(i).times(8).plus(1)}return r.precision-=t,e}var Pe=function(){function r(n,o,s){var i,a=0,u=n.length;for(n=n.slice();u--;)i=n[u]*o+a,n[u]=i%s|0,a=i/s|0;return a&&n.unshift(a),n}function e(n,o,s,i){var a,u;if(s!=i)u=s>i?1:-1;else for(a=u=0;a<s;a++)if(n[a]!=o[a]){u=n[a]>o[a]?1:-1;break}return u}function t(n,o,s,i){for(var a=0;s--;)n[s]-=a,a=n[s]<o[s]?1:0,n[s]=a*i+n[s]-o[s];for(;!n[0]&&n.length>1;)n.shift()}return function(n,o,s,i,a,u){var c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O,M,U,F=n.constructor,H=n.s==o.s?1:-1,Z=n.d,W=o.d;if(!Z||!Z[0]||!W||!W[0])return new F(!n.s||!o.s||(Z?W&&Z[0]==W[0]:!W)?NaN:Z&&Z[0]==0||!W?H*0:H/0);for(u?(p=1,l=n.e-o.e):(u=Pt,p=$,l=Ye(n.e/p)-Ye(o.e/p)),M=W.length,K=Z.length,b=new F(H),P=b.d=[],m=0;W[m]==(Z[m]||0);m++);if(W[m]>(Z[m]||0)&&l--,s==null?(T=s=F.precision,i=F.rounding):a?T=s+(n.e-o.e)+1:T=s,T<0)P.push(1),y=!0;else{if(T=T/p+2|0,m=0,M==1){for(d=0,W=W[0],T++;(m<K||d)&&T--;m++)S=d*u+(Z[m]||0),P[m]=S/W|0,d=S%W|0;y=d||m<K}else{for(d=u/(W[0]+1)|0,d>1&&(W=r(W,d,u),Z=r(Z,d,u),M=W.length,K=Z.length),x=M,A=Z.slice(0,M),h=A.length;h<M;)A[h++]=0;U=W.slice(),U.unshift(0),O=W[0],W[1]>=u/2&&++O;do d=0,c=e(W,A,M,h),c<0?(I=A[0],M!=h&&(I=I*u+(A[1]||0)),d=I/O|0,d>1?(d>=u&&(d=u-1),f=r(W,d,u),g=f.length,h=A.length,c=e(f,A,g,h),c==1&&(d--,t(f,M<g?U:W,g,u))):(d==0&&(c=d=1),f=W.slice()),g=f.length,g<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(W,A,M,h),c<1&&(d++,t(A,M<h?U:W,h,u))),h=A.length):c===0&&(d++,A=[0]),P[m++]=d,c&&A[0]?A[h++]=Z[x]||0:(A=[Z[x]],h=1);while((x++<K||A[0]!==void 0)&&T--);y=A[0]!==void 0}P[0]||P.shift()}if(p==1)b.e=l,Us=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;b.e=m+l*p-1,j(b,a?s+b.e+1:s,i,y)}return b}}();function j(r,e,t,n){var o,s,i,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(o=1,a=m[0];a>=10;a/=10)o++;if(s=e-o,s<0)s+=$,i=e,l=m[d=0],u=l/Ne(10,o-i-1)%10|0;else if(d=Math.ceil((s+1)/$),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,o=1,s%=$,i=s-$+1}else break e;else{for(l=a=m[d],o=1;a>=10;a/=10)o++;s%=$,i=s-$+o,u=i<0?0:l/Ne(10,o-i-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(i<0?l:l%Ne(10,o-i-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(s>0?i>0?l/Ne(10,o-i):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ne(10,($-e%$)%$),r.e=-e||0):m[0]=r.e=0,r;if(s==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ne(10,$-s),m[d]=i>0?(l/Ne(10,o-i)%Ne(10,i)|0)*a:0),c)for(;;)if(d==0){for(s=1,i=m[0];i>=10;i/=10)s++;for(i=m[0]+=a,a=1;i>=10;i/=10)a++;s!=a&&(r.e++,m[0]==Pt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Pt)break;m[d--]=0,a=1}for(s=m.length;m[--s]===0;)m.pop()}return ne&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function St(r,e,t){if(!r.isFinite())return Zs(r);var n,o=r.e,s=qe(r.d),i=s.length;return e?(t&&(n=t-i)>0?s=s.charAt(0)+"."+s.slice(1)+Qt(n):i>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(r.e<0?"e":"e+")+r.e):o<0?(s="0."+Qt(-o-1)+s,t&&(n=t-i)>0&&(s+=Qt(n))):o>=i?(s+=Qt(o+1-i),t&&(n=t-o-1)>0&&(s=s+"."+Qt(n))):((n=o+1)<i&&(s=s.slice(0,n)+"."+s.slice(n)),t&&(n=t-i)>0&&(o+1===i&&(s+="."),s+=Qt(n))),s}function jr(r,e){var t=r[0];for(e*=$;t>=10;t/=10)e++;return e}function zr(r,e,t){if(e>_c)throw ne=!0,t&&(r.precision=t),Error(Gs);return j(new r(Gr),e,1,!0)}function At(r,e,t){if(e>Yo)throw Error(Gs);return j(new r(Xr),e,t,!0)}function js(r){var e=r.length-1,t=e*$+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Qt(r){for(var e="";r--;)e+="0";return e}function Qs(r,e,t,n){var o,s=new r(1),i=Math.ceil(n/$+4);for(ne=!1;;){if(t%2&&(s=s.times(e),Ws(s.d,i)&&(o=!0)),t=Ye(t/2),t===0){t=s.d.length-1,o&&s.d[t]===0&&++s.d[t];break}e=e.times(e),Ws(e.d,i)}return ne=!0,s}function Ds(r){return r.d[r.d.length-1]&1}function Hs(r,e,t){for(var n,o=new r(e[0]),s=0;++s<e.length;)if(n=new r(e[s]),n.s)o[t](n)&&(o=n);else{o=n;break}return o}function jo(r,e){var t,n,o,s,i,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(ne=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ne(2,m))/Math.LN10*2+5|0,u+=n,t=s=i=new d(1),d.precision=u;;){if(s=j(s.times(r),u,1),t=t.times(++l),a=i.plus(Pe(s,t,u,1)),qe(a.d).slice(0,u)===qe(i.d).slice(0,u)){for(o=m;o--;)i=j(i.times(i),u,1);if(e==null)if(c<3&&jn(i.d,u-n,p,c))d.precision=u+=10,t=s=a=new d(1),l=0,c++;else return j(i,d.precision=y,p,ne=!0);else return d.precision=y,i}i=a}}function Ht(r,e){var t,n,o,s,i,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,b=f.constructor,P=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?(ne=!1,l=A):l=e,b.precision=l+=y,t=qe(g),n=t.charAt(0),Math.abs(s=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=qe(f.d),n=t.charAt(0),p++;s=f.e,n>1?(f=new b("0."+t),s++):f=new b(n+"."+t.slice(1))}else return c=zr(b,l+2,A).times(s+""),f=Ht(new b(n+"."+t.slice(1)),l-y).plus(c),b.precision=A,e==null?j(f,A,P,ne=!0):f;for(m=f,u=i=f=Pe(f.minus(1),f.plus(1),l,1),d=j(f.times(f),l,1),o=3;;){if(i=j(i.times(d),l,1),c=u.plus(Pe(i,new b(o),l,1)),qe(c.d).slice(0,l)===qe(u.d).slice(0,l))if(u=u.times(2),s!==0&&(u=u.plus(zr(b,l+2,A).times(s+""))),u=Pe(u,new b(p),l,1),e==null)if(jn(u.d,l-y,P,a))b.precision=l+=y,c=i=f=Pe(m.minus(1),m.plus(1),l,1),d=j(f.times(f),l,1),o=a=1;else return j(u,b.precision=A,P,ne=!0);else return b.precision=A,u;u=c,o+=2}}function Zs(r){return String(r.s*r.s/0)}function Qo(r,e){var t,n,o;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(o=e.length;e.charCodeAt(o-1)===48;--o);if(e=e.slice(n,o),e){if(o-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%$,t<0&&(n+=$),n<o){for(n&&r.d.push(+e.slice(0,n)),o-=$;n<o;)r.d.push(+e.slice(n,n+=$));e=e.slice(n),n=$-e.length}else n-=o;for(;n--;)e+="0";r.d.push(+e),ne&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Ec(r,e){var t,n,o,s,i,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ys.test(e))return Qo(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Oc.test(e))t=16,e=e.toLowerCase();else if(Lc.test(e))t=2;else if(Nc.test(e))t=8;else throw Error(Zt+e);for(s=e.search(/p/i),s>0?(u=+e.slice(s+1),e=e.substring(2,s)):e=e.slice(2),s=e.indexOf("."),i=s>=0,n=r.constructor,i&&(e=e.replace(".",""),a=e.length,s=a-s,o=Qs(n,new n(t),s,s*2)),c=Ur(e,t,Pt),l=c.length-1,s=l;c[s]===0;--s)c.pop();return s<0?new n(r.s*0):(r.e=jr(c,l),r.d=c,ne=!1,i&&(r=Pe(r,o,a*4)),u&&(r=r.times(Math.abs(u)<54?Ne(2,u):Qn.pow(2,u))),ne=!0,r)}function Fc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:On(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Qr(5,t)),e=On(r,2,e,e);for(var o,s=new r(5),i=new r(16),a=new r(20);t--;)o=e.times(e),e=e.times(s.plus(o.times(i.times(o).minus(a))));return e}function On(r,e,t,n,o){var s,i,a,u,c=1,l=r.precision,m=Math.ceil(l/$);for(ne=!1,u=t.times(t),a=new r(n);;){if(i=Pe(a.times(u),new r(e++*e++),l,1),a=o?n.plus(i):n.minus(i),n=Pe(i.times(u),new r(e++*e++),l,1),i=a.plus(n),i.d[m]!==void 0){for(s=m;i.d[s]===a.d[s]&&s--;);if(s==-1)break}s=a,a=n,n=i,i=s,c++}return ne=!0,i.d.length=m+1,i}function Qr(r,e){for(var t=r;--e;)t*=r;return t}function $s(r,e){var t,n=e.s<0,o=At(r,r.precision,1),s=o.times(.5);if(e=e.abs(),e.lte(s))return Et=n?4:1,e;if(t=e.divToInt(o),t.isZero())Et=n?3:2;else{if(e=e.minus(t.times(o)),e.lte(s))return Et=Ds(t)?n?2:3:n?4:1,e;Et=Ds(t)?n?1:4:n?3:2}return e.minus(o).abs()}function Ho(r,e,t,n){var o,s,i,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(nt(t,1,$t),n===void 0?n=p.rounding:nt(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Zs(r);else{for(l=St(r),i=l.indexOf("."),y?(o=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):o=e,i>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-i,d.d=Ur(St(d),10,o),d.e=d.d.length),m=Ur(l,10,o),s=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(i<0?s--:(r=new p(r),r.d=m,r.e=s,r=Pe(r,d,t,n,0,o),m=r.d,s=r.e,c=Us),i=m[t],a=o/2,c=c||m[t+1]!==void 0,c=n<4?(i!==void 0||c)&&(n===0||n===(r.s<0?3:2)):i>a||i===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>o-1;)m[t]=0,t||(++s,m.unshift(1));for(u=m.length;!m[u-1];--u);for(i=0,l="";i<u;i++)l+=Xo.charAt(m[i]);if(y){if(u>1)if(e==16||e==8){for(i=e==16?4:3,--u;u%i;u++)l+="0";for(m=Ur(l,o,e),u=m.length;!m[u-1];--u);for(i=1,l="1.";i<u;i++)l+=Xo.charAt(m[i])}else l=l.charAt(0)+"."+l.slice(1);l=l+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)l="0"+l;l="0."+l}else if(++s>u)for(s-=u;s--;)l+="0";else s<u&&(l=l.slice(0,s)+"."+l.slice(s))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Ws(r,e){if(r.length>e)return r.length=e,!0}function vc(r){return new this(r).abs()}function Dc(r){return new this(r).acos()}function Wc(r){return new this(r).acosh()}function qc(r,e){return new this(r).plus(e)}function Uc(r){return new this(r).asin()}function Gc(r){return new this(r).asinh()}function Xc(r){return new this(r).atan()}function zc(r){return new this(r).atanh()}function Yc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,o=this.rounding,s=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=At(this,s,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?At(this,n,o):new this(0),t.s=r.s):!r.d||e.isZero()?(t=At(this,s,1).times(.5),t.s=r.s):e.s<0?(this.precision=s,this.rounding=1,t=this.atan(Pe(r,e,s,1)),e=At(this,s,1),this.precision=n,this.rounding=o,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Pe(r,e,s,1)),t}function jc(r){return new this(r).cbrt()}function Qc(r){return j(r=new this(r),r.e+1,2)}function Hc(r,e,t){return new this(r).clamp(e,t)}function Zc(r){if(!r||typeof r!="object")throw Error(Yr+"Object expected");var e,t,n,o=r.defaults===!0,s=["precision",1,$t,"rounding",0,8,"toExpNeg",-Ln,0,"toExpPos",0,Ln,"maxE",0,Ln,"minE",-Ln,0,"modulo",0,9];for(e=0;e<s.length;e+=3)if(t=s[e],o&&(this[t]=zo[t]),(n=r[t])!==void 0)if(Ye(n)===n&&n>=s[e+1]&&n<=s[e+2])this[t]=n;else throw Error(Zt+t+": "+n);if(t="crypto",o&&(this[t]=zo[t]),(n=r[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(Xs);else this[t]=!1;else throw Error(Zt+t+": "+n);return this}function $c(r){return new this(r).cos()}function Jc(r){return new this(r).cosh()}function Js(r){var e,t,n;function o(s){var i,a,u,c=this;if(!(c instanceof o))return new o(s);if(c.constructor=o,qs(s)){c.s=s.s,ne?!s.d||s.e>o.maxE?(c.e=NaN,c.d=null):s.e<o.minE?(c.e=0,c.d=[0]):(c.e=s.e,c.d=s.d.slice()):(c.e=s.e,c.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){c.s=1/s<0?-1:1,c.e=0,c.d=[0];return}if(s<0?(s=-s,c.s=-1):c.s=1,s===~~s&&s<1e7){for(i=0,a=s;a>=10;a/=10)i++;ne?i>o.maxE?(c.e=NaN,c.d=null):i<o.minE?(c.e=0,c.d=[0]):(c.e=i,c.d=[s]):(c.e=i,c.d=[s]);return}else if(s*0!==0){s||(c.s=NaN),c.e=NaN,c.d=null;return}return Qo(c,s.toString())}else if(u!=="string")throw Error(Zt+s);return(a=s.charCodeAt(0))===45?(s=s.slice(1),c.s=-1):(a===43&&(s=s.slice(1)),c.s=1),Ys.test(s)?Qo(c,s):Ec(c,s)}if(o.prototype=_,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=Zc,o.clone=Js,o.isDecimal=qs,o.abs=vc,o.acos=Dc,o.acosh=Wc,o.add=qc,o.asin=Uc,o.asinh=Gc,o.atan=Xc,o.atanh=zc,o.atan2=Yc,o.cbrt=jc,o.ceil=Qc,o.clamp=Hc,o.cos=$c,o.cosh=Jc,o.div=el,o.exp=tl,o.floor=nl,o.hypot=rl,o.ln=ol,o.log=il,o.log10=al,o.log2=sl,o.max=ul,o.min=cl,o.mod=ll,o.mul=ml,o.pow=dl,o.random=pl,o.round=fl,o.sign=yl,o.sin=bl,o.sinh=gl,o.sqrt=wl,o.sub=Al,o.sum=Pl,o.tan=kl,o.tanh=hl,o.trunc=Tl,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return o.config(r),o}function el(r,e){return new this(r).div(e)}function tl(r){return new this(r).exp()}function nl(r){return j(r=new this(r),r.e+1,3)}function rl(){var r,e,t=new this(0);for(ne=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return ne=!0,new this(1/0);t=e}return ne=!0,t.sqrt()}function qs(r){return r instanceof Qn||r&&r.toStringTag===zs||!1}function ol(r){return new this(r).ln()}function il(r,e){return new this(r).log(e)}function sl(r){return new this(r).log(2)}function al(r){return new this(r).log(10)}function ul(){return Hs(this,arguments,"lt")}function cl(){return Hs(this,arguments,"gt")}function ll(r,e){return new this(r).mod(e)}function ml(r,e){return new this(r).mul(e)}function dl(r,e){return new this(r).pow(e)}function pl(r){var e,t,n,o,s=0,i=new this(1),a=[];if(r===void 0?r=this.precision:nt(r,1,$t),n=Math.ceil(r/$),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));s<n;)o=e[s],o>=429e7?e[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=o%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);s<n;)o=e[s]+(e[s+1]<<8)+(e[s+2]<<16)+((e[s+3]&127)<<24),o>=214e7?crypto.randomBytes(4).copy(e,s):(a.push(o%1e7),s+=4);s=n/4}else throw Error(Xs);else for(;s<n;)a[s++]=Math.random()*1e7|0;for(n=a[--s],r%=$,n&&r&&(o=Ne(10,$-r),a[s]=(n/o|0)*o);a[s]===0;s--)a.pop();if(s<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=$)a.shift();for(n=1,o=a[0];o>=10;o/=10)n++;n<$&&(t-=$-n)}return i.e=t,i.d=a,i}function fl(r){return j(r=new this(r),r.e+1,this.rounding)}function yl(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function bl(r){return new this(r).sin()}function gl(r){return new this(r).sinh()}function wl(r){return new this(r).sqrt()}function Al(r,e){return new this(r).sub(e)}function Pl(){var r=0,e=arguments,t=new this(e[r]);for(ne=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return ne=!0,j(t,this.precision,this.rounding)}function kl(r){return new this(r).tan()}function hl(r){return new this(r).tanh()}function Tl(r){return j(r=new this(r),r.e+1,1)}_[Symbol.for("nodejs.util.inspect.custom")]=_.toString;_[Symbol.toStringTag]="Decimal";var Qn=_.constructor=Js(zo);Gr=new Qn(Gr);Xr=new Qn(Xr);var V=Qn;import{PublicKey as ti}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Il}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as ea,SYSVAR_RENT_PUBKEY as xl}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Zo=[k({pubkey:Il,isWritable:!1}),k({pubkey:ea.programId,isWritable:!1}),k({pubkey:xl,isWritable:!1})];function $o({publicKey:r,transformSol:e}){let t=Jo(r.toString());if(t instanceof xe)return e&&t.equals(Me)?J:t;if(e&&t.toString()===Me.toBase58())return J;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Jo(r){try{return new xe(r)}catch{return r}}var Nn=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ta=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),rt=new xe("SysvarRent111111111111111111111111111111111"),ei=new xe("SysvarC1ock11111111111111111111111111111111"),Mn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Hr=new xe("Sysvar1nstructions1111111111111111111111111"),Zr=ea.programId,Bf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Sf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Kf=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Rf=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Lf=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Of=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Nf=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Mf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_f=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Vf=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new xe("So11111111111111111111111111111111111111112"),Me=xe.default;function at(r){return $o({publicKey:r,transformSol:!0})}import{PublicKey as Bl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as na}from"@solana/spl-token";var Kt={chainId:101,address:Bl.default.toBase58(),programId:na.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},_e={chainId:101,address:"So11111111111111111111111111111111111111112",programId:na.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 ni=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:s=!1,isToken2022:i=!1}){if(e===Me.toBase58()||e instanceof ti&&Me.equals(e)){this.decimals=_e.decimals,this.symbol=_e.symbol,this.name=_e.name,this.mint=new ti(_e.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=s?ti.default:$o({publicKey:e}),this.isToken2022=i}equals(e){return this===e?!0:this.mint.equals(e.mint)}},pe=ni;pe.WSOL=new ni(D(C({},_e),{mint:_e.address}));import Jr from"big.js";import Cl from"bn.js";import Rl from"decimal.js-light";import Sl from"toformat";var Kl=Sl,Hn=Kl;var $r=ue("module/fraction"),ri=Hn(Jr),Zn=Hn(Rl),Ll={[0]:Zn.ROUND_DOWN,[1]:Zn.ROUND_HALF_UP,[2]:Zn.ROUND_UP},Ol={[0]:Jr.roundDown,[1]:Jr.roundHalfUp,[2]:Jr.roundUp},re=class{constructor(e,t=new Cl(1)){this.numerator=z(e),this.denominator=z(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new re(this.denominator,this.numerator)}add(e){let t=e instanceof re?e:new re(z(e));return this.denominator.eq(t.denominator)?new re(this.numerator.add(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof re?e:new re(z(e));return this.denominator.eq(t.denominator)?new re(this.numerator.sub(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof re?e:new re(z(e));return new re(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof re?e:new re(z(e));return new re(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||$r.logWithError(`${e} is not an integer.`),e<=0&&$r.logWithError(`${e} is not positive.`),Zn.set({precision:e+1,rounding:Ll[n]});let o=new Zn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||$r.logWithError(`${e} is not an integer.`),e<0&&$r.logWithError(`${e} is negative.`),ri.DP=e,ri.RM=Ol[n]||1,new ri(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Nl=ue("Raydium_price"),ve=class extends re{constructor(t){let{baseToken:n,quoteToken:o,numerator:s,denominator:i}=t;super(s,i);this.baseToken=n,this.quoteToken=o,this.scalar=new re(ii(n.decimals),ii(o.decimals))}get raw(){return new re(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ve({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Nl.logWithError("mul token not equals");let n=super.mul(t);return new ve({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};var si=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},$n=si;$n.SOL=new si(Kt);function my(r,e){return r instanceof pe&&e instanceof pe?r.equals(e):r instanceof pe||e instanceof pe?!1:r===e}import Ml from"bn.js";var ra=new re(new Ml(100)),Ve=class extends re{toSignificant(e=5,t,n){return this.mul(ra).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ra).toFixed(e,t,n)}};function Ke(r){if(r instanceof Ve)return new re(r.numerator,r.denominator);if(r instanceof ve)return r.adjusted;if(r instanceof fe)try{return Ke(r.toExact())}catch{return new re(Ee)}if(r instanceof re)return r;let e=String(r),t=mn(e);return new re(t.numerator,t.denominator)}function Ay(r){var n;if(r instanceof Ve)return{fr:new re(r.numerator,r.denominator)};if(r instanceof ve)return{fr:r.adjusted};if(r instanceof fe)return{fr:Ke(r.toExact()),decimals:r.token.decimals};if(r instanceof re)return{fr:r};let e=String(r),t=mn(e);return{fr:new re(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Py(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ee)}function _l(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gt(Ee)}function ky(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.lte(Ee)}function hy(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gte(Ee)}function Vl(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.eq(Ee)}function Ty(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);try{return t.div(n)}catch{return t}}function Iy(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.sub(n)}function xy(r){return r==null?!1:!Vl(r,0)}function By(r,e){return _l(e,r)?e:r}function ai(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.mul(n)}function Sy(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.add(n)}var oi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(oi||{}),Ee=new Te(0),aa=new Te(1),Dy=new Te(2),Wy=new Te(3),qy=new Te(5),dn=new Te(10),Uy=new Te(100),Gy=new Te(1e3),Xy=new Te(1e4),oa=9007199254740991;function z(r){let e=ue("Raydium_parseBigNumberish");if(r instanceof Te)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Te(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=oa||r<=-oa)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Te(String(r))):typeof r=="bigint"?new Te(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Te(0))}function ii(r){return dn.pow(z(r))}function mn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Te)return{numerator:r.toString(),denominator:"1"};if(r instanceof re)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",o=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],s="1"+"0".repeat(o.length),i=t+(n==="0"?"":n)+o||"0";return{denominator:s,numerator:i,sign:t,int:n,dec:o}}function eo(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function El(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function Fl(r,e=0){return r instanceof Te?r:new Te(El(ua(r).mul(dn.pow(new Te(String(e))))))}function ua(r){if(r instanceof Ve)return new re(r.numerator,r.denominator);if(r instanceof ve)return r.adjusted;if(r instanceof fe)try{return ua(r.toExact())}catch{return new re(Ee)}if(r instanceof re)return r;let e=String(r),t=mn(e);return new re(t.numerator,t.denominator)}function zy(r,e){let{numerator:t,denominator:n}=mn(r);return new Ve(new Te(t),new Te(n).mul(e!=null&&e.alreadyDecimaled?new Te(100):new Te(1)))}function Yy(r){let{token:e,numberPrice:t,decimalDone:n}=r,o=new pe({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:s,denominator:i}=mn(t),a=n?new Te(s).mul(dn.pow(new Te(e.decimals))):s,u=new Te(i).mul(dn.pow(new Te(o.decimals)));return new ve({baseToken:o,denominator:u.toString(),quoteToken:new pe(D(C({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function ia(r){let e=new $n({decimals:6,symbol:"usd",name:"usd"}),t=Fl(ai(r,10**e.decimals));return new pn(e,t)}function jy(r,e){return ia(!e||!r?0:ai(r,e))}function vl(r){if(r==null)return;let{numerator:e,denominator:t}=mn(r.toString());return new re(e,t)}function Dl(r){return r instanceof V}function sa(r){return Dl(r)?vl(r):Array.isArray(r)?r.map(e=>sa(e)):ui(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,sa(t)])):r}var ql=ue("Raydium_amount"),to=Hn(Wl);function ca(r,e){let t="0",n="0";if(r.includes(".")){let o=r.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):ql.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends re{constructor(t,n,o=!0,s){let i=new Jt(0),a=dn.pow(new Jt(t.decimals));if(o)i=z(n);else{let u=new Jt(0),c=new Jt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ca(n.toString(),t.decimals);u=z(l),c=z(m)}u=u.mul(a),i=u.add(c)}super(i,a);this.logger=ue(s||"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 fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return to.DP=this.token.decimals,new to(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},pn=class extends re{constructor(t,n,o=!0,s){let i=new Jt(0),a=dn.pow(new Jt(t.decimals));if(o)i=z(n);else{let u=new Jt(0),c=new Jt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ca(n.toString(),t.decimals);u=z(l),c=z(m)}u=u.mul(a),i=u.add(c)}super(i,a);this.logger=ue(s||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new pn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new pn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.currency.decimals,n,o=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return to.DP=this.currency.decimals,new to(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function la(r){new Promise(e=>setTimeout(e,r))}function wb(){return new Date().getTime()}function ui(r){return typeof r=="object"&&r!==null&&![pe,fe,Ul,re,Gl,ve,Ve].some(e=>typeof e=="object"&&r instanceof e)}function be(r){return typeof r=="string"?Jo(r):Array.isArray(r)?r.map(e=>be(e)):ui(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,be(t)])):r}import{PublicKey as tr,sendAndConfirmTransaction as nr,Transaction as rr,TransactionMessage as or,VersionedTransaction as ir}from"@solana/web3.js";import em from"axios";var fn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(fn||{}),E={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 da,ComputeBudgetProgram as ma,Transaction as ro,TransactionMessage as Xl,Keypair as pa,VersionedTransaction as fa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";var Ft=ue("Raydium_txUtil"),ya=1644;function oo(r){let e=[],t=[];return r.microLamports&&(e.push(ma.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(ma.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function _n(r,e){var n,o;let t=e!=null?e:"confirmed";try{return((o=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:o.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function io(r,e){r.length<1&&Ft.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ft.logWithError(`no signers provided:, ${e.toString()}`);let t=new ro;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ya}catch{return!1}}async function ba(r,e,t,n=!0){let o=new da("RaydiumSimuLateTransaction11111111111111111"),s=[],i=new ro;i.feePayer=o;for(let c of e)io([...i.instructions,c],[o])||(s.push(i),i=new ro,i.feePayer=o),i.add(c);i.instructions.length>0&&s.push(i);let a=[];try{if(a=await Yl(r,s,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Ft.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Ft.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Ft.debug("filteredLog:",u),l.length||Ft.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function ga(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Ft.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function vt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Ft.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function se(r,e){let[t,n]=da.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Yl(r,e,t){let n=[];if(t){let o=await r.getLatestBlockhash(),s=[];for(let c of e){c.recentBlockhash=o.blockhash,c.lastValidBlockHeight=o.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");s.push(p)}let i=s.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(i.length/u);c++)a.push(i.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async o=>await(await r.simulateTransaction(o)).value))}catch(o){o instanceof Error&&Ft.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:o.message})}return n}function Jn({instructions:r,payer:e,signers:t}){return io(r,[e,...t])}function er({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=pa.generate().publicKey.toString()}){let s=new Xl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new fa(s).serialize()).toString("base64").length<ya}catch{return!1}}var no={time:0,data:void 0};async function Rb(r){if(!no.data||(Date.now()-no.time)/1e3>30){let e=await r.getEpochInfo();return no={time:Date.now(),data:e},e}else return no.data}var jl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function yn(r){let e=[];return r.forEach(t=>{t instanceof ro&&(t.recentBlockhash||(t.recentBlockhash=zl.toBase58()),t.feePayer||(t.feePayer=pa.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof fa&&(n=jl(n));let o=n.toString("base64");e.push(o)}),console.log("simulate tx string:",e),e}import{PublicKey as Pa,AddressLookupTableAccount as so}from"@solana/web3.js";import{PublicKey as wa}from"@solana/web3.js";import{MINT_SIZE as Ql,TOKEN_PROGRAM_ID as Hl,getTransferFeeConfig as Zl,unpackMint as $l}from"@solana/spl-token";var ci=ue("Raydium_accountInfo_util");async function kt(r,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:s=100}=C({batchRequest:!1},t),i=li(e,s),a=new Array(i.length).fill([]);if(n){let u=i.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=li(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&ci.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"&&ci.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new wa(g),rentEpoch:b}}return null})))}else try{a=await Promise.all(i.map(u=>r.getMultipleAccountsInfo(u,o)))}catch(u){u instanceof Error&&ci.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function ot(r,e,t){let n=await kt(r,e.map(o=>o.pubkey),t);return e.map((o,s)=>D(C({},o),{accountInfo:n[s]}))}var Jl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Jl||{}),vb=1;async function Aa({connection:r,mints:e,config:t}){var s,i,a;if(e.length===0)return{};let n=await ot(r,e.map(u=>({pubkey:at(u)})),t),o={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Ql){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=$l(u.pubkey,u.accountInfo,(s=u.accountInfo)==null?void 0:s.owner);o[u.pubkey.toString()]=D(C({},c),{programId:((i=u.accountInfo)==null?void 0:i.owner)||Hl,feeConfig:(a=Zl(c))!=null?a:void 0})}return o[wa.default.toBase58()]=o[J.toBase58()],o}async function mi({connection:r,address:e}){let t=await kt(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Pa(o))),n={};for(let o=0;o<e.length;o++){let s=t[o],i=e[o];if(!s)continue;let a=new so({key:i,state:so.deserialize(s.data)});n[i.toString()]=a,ao[i.toString()]=a}return n}var ao={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new so({key:new Pa("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:so.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 uo=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 em.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}=oo(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:o=[],endInstructionTypes:s=[],lookupTableAddress:i=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...i.filter(a=>a!==tr.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){let t=new rr;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:o,skipPreflight:s=!0}=n||{},i=o!=null?o:await _n(this.connection,this.blockhashCommitment);if(t.recentBlockhash=i,this.signers.length&&t.sign(...this.signers),yn([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await nr(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:s}),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:o}=this.build(n),s=t.filter(c=>c.transaction.instructions.length>0),i=[o,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:i,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 _n(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let g=[];for(let b of i){let P=await nr(this.connection,b,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});g.push(P)}return{txIds:g,signedTxs:i}}return{txIds:await await Promise.all(i.map(async(g,b)=>(g.recentBlockhash=y,await nr(this.connection,g,a[b].find(P=>P.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:i}}if(this.signAllTransactions){let g=i.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));yn(g);let b=await this.signAllTransactions(g);if(l){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:p});A.push({txId:I,status:"sent",signedTx:b[P]}),m==null||m([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),m==null||m([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:p});P.push(h)}return{txIds:P,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:o}=d,s=Ie(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),i=C(C({},this.cluster==="devnet"?{}:ao),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)i[p]===void 0&&u.push(new tr(p));let c=await mi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))i[p]=y;let l=new or({payerKey:this.feePayer,recentBlockhash:o?tr.default.toBase58():await _n(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(i)),m=new ir(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),yn([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let b=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,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:s||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),s=t.filter(c=>c.builder.instructions.length>0),i=[o,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return i.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:i,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&i.forEach(f=>f.message.recentBlockhash=d),yn(i),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(i.forEach((b,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let P of i){let A=await this.connection.sendTransaction(P,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:A},"confirmed"),b.push(A)}return{txIds:b,signedTxs:i}}return{txIds:await Promise.all(i.map(async b=>{let P=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:i}}if(this.signAllTransactions){let f=await this.signAllTransactions(i);if(l){let g=0,b=[],P=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,h=>{let I=b.findIndex(T=>T.txId===A);I>-1&&(b[I].status=h.err?"error":"success"),m==null||m([...b]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let g=[];for(let b=0;b<f.length;b+=1){let P=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push(P)}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=Ie(c,["computeBudgetConfig"]),o=t?oo(t):{instructions:[],instructionTypes:[]},s=this.signers.reduce((l,m)=>D(C({},l),{[m.publicKey.toBase58()]:m}),{}),i=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...o.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 tr(f));if(u.length<12&&Jn({instructions:d,payer:this.feePayer,signers:y})||Jn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Jn({instructions:t?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:y})?i.push(new rr().add(...o.instructions,...u)):i.push(new rr().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=>s[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=>s[d]).filter(d=>d!==void 0);Jn({instructions:t?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?i.push(new rr().add(...o.instructions,...u)):i.push(new rr().add(...u)),a.push(m)}return i.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:i,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 _n(this.connection,this.blockhashCommitment);if(i.forEach(async(b,P)=>{b.recentBlockhash=f,a[P].length&&b.sign(...a[P])}),yn(i),(g=this.owner)!=null&&g.isKeyPair){if(m){let b=[];for(let P of i){let A=await nr(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});b.push(A)}return{txIds:b,signedTxs:i}}return{txIds:await Promise.all(i.map(async(b,P)=>await nr(this.connection,b,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:i}}if(this.signAllTransactions){let b=await this.signAllTransactions(i);if(m){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:y});A.push({txId:I,status:"sent",signedTx:b[P]}),d==null||d([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),d==null||d([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,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:o=[]}=g,s=Ie(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),i=C(C({},this.cluster==="devnet"?{}:ao),n),a=Array.from(new Set([...this.lookupTableAddress,...o])),u=[];for(let b of a)i[b]===void 0&&u.push(new tr(b));let c=await mi({connection:this.connection,address:u});for(let[b,P]of Object.entries(c))i[b]=P;let l=t?oo(t):{instructions:[],instructionTypes:[]},m=await _n(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,P)=>D(C({},b),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(b=>{let P=[...f,b],A=t?[...l.instructions,...P]:P;if(f.length<12&&er({instructions:A,payer:this.feePayer,lookupTableAddressAccount:i})||er({instructions:P,payer:this.feePayer,lookupTableAddressAccount:i}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let h={};for(let I of[...new Set(a)])i[I]!==void 0&&(h[I]=i[I]);if(t&&er({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:i,recentBlockhash:m})){let I=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(i));p.push(new ir(I))}else{let I=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(i));p.push(new ir(I))}y.push(Array.from(new Set(f.map(I=>I.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(I=>d[I]).filter(I=>I!==void 0)),f=[b]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&er({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:i,recentBlockhash:m})){let A=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(i));p.push(new ir(A))}else{let A=new or({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(i));p.push(new ir(A))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async b=>{var T;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:I=!0}=b||{};if(p.map(async(S,x)=>{y[x].length&&S.sign(y[x]),h&&(S.message.recentBlockhash=h)}),yn(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:S,blockhash:x}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((K,O)=>{y[O].find(M=>M.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let O of p){let M=await this.connection.sendTransaction(O,{skipPreflight:I}),{lastValidBlockHeight:U,blockhash:F}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:F,lastValidBlockHeight:U,signature:M},"confirmed"),K.push(M)}return{txIds:K,signedTxs:p}}return{txIds:await Promise.all(p.map(async K=>{let O=await this.connection.sendTransaction(K,{skipPreflight:I});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:S,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(P){let x=0,K=[],O=async()=>{if(!S[x])return;let M=await this.connection.sendTransaction(S[x],{skipPreflight:I});K.push({txId:M,status:"sent",signedTx:S[x]}),A==null||A([...K]),x++,this.connection.onSignature(M,U=>{let F=K.findIndex(H=>H.txId===M);F>-1&&(K[F].status=U.err?"error":"success"),A==null||A([...K]),U.err||O()},"processed"),this.connection.getSignatureStatus(M)};return O(),{txIds:[],signedTxs:S}}else{let x=[];for(let K=0;K<S.length;K+=1){let O=await this.connection.sendTransaction(S[K],{skipPreflight:I});x.push(O)}return{txIds:x,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var ht=class{constructor(e){this._owner=e}get publicKey(){return ht.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return ht.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return ht.isKeyPair(this._owner)}get isPublicKey(){return ht.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!ht.isKeyPair(e)}};function li(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function rg(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function og(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function ig(r){return[...new Set(r)]}var ka=r=>typeof r=="number",ha=r=>r?new Date(r):new Date,tm=r=>ha(r).getTime();function Ta(r,e,t){let n=ka(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Ia(r,e,t){let n=ka(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function ag(r,e){let n=tm(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return ha(n)}import{PublicKey as me}from"@solana/web3.js";var di=new me("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),pi=new me("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new me("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),nm=new me("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),rm=new me("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),co=new me("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),sr=new me("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),om=new me("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),fi=new me("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),im=new me("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),lg=new me("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),sm=new me("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),am=new me("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),um=new me("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),cm=new me("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),lm=new me("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),mm=new me("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),dm=new me("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),pm=new me("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),fm=new me("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ym=new me("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),ar={IDO_PROGRAM_ID_V1:sm,IDO_PROGRAM_ID_V2:am,IDO_PROGRAM_ID_V3:um,IDO_PROGRAM_ID_V4:cm},mg={AMM_V4:sr,AMM_STABLE:om,CLMM_PROGRAM_ID:fi,FARM_PROGRAM_ID_V3:di,FARM_PROGRAM_ID_V5:pi,FARM_PROGRAM_ID_V6:Vn,OPEN_BOOK_PROGRAM:rm,SERUM_PROGRAM_ID_V3:co,UTIL1216:nm,Router:im,CREATE_CPMM_POOL_PROGRAM:lm,CREATE_CPMM_POOL_AUTH:mm,CREATE_CPMM_POOL_FEE_ACC:dm},dg={SERUM_MARKET:me.default,OPENBOOK_MARKET:new me("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:me.default,FarmV3:new me("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new me("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new me("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new me("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new me("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new me("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new me("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:pm,CREATE_CPMM_POOL_AUTH:fm,CREATE_CPMM_POOL_FEE_ACC:ym,FEE_DESTINATION_ID:new me("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as bm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gm}from"@solana/spl-token";function ge(r,e,t){return se([r.toBuffer(),(t!=null?t:gm).toBuffer(),e.toBuffer()],new bm("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var Ct=1e4;function Ag(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,s=new Le(o.maximumFee.toString()),i=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Ct){let a=new Le(o.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:i}}else{let a=en(r.mul(new Le(Ct)),new Le(Ct-o.transferFeeBasisPoints)),u=new Le(o.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=en(c.mul(new Le(o.transferFeeBasisPoints)),new Le(Ct)),m=l.gt(s)?s:l;return{amount:c,fee:m,expirationTime:i}}else{let a=en(r.mul(new Le(o.transferFeeBasisPoints)),new Le(Ct)),u=a.gt(s)?s:a;return{amount:r,fee:u,expirationTime:i}}}function ke(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=D(C({},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}}),s=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,i=new Le(s.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(s.transferFeeBasisPoints===Ct){let u=new Le(s.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=en(r.mul(new Le(Ct)),new Le(Ct-s.transferFeeBasisPoints)),c=new Le(s.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=en(l.mul(new Le(s.transferFeeBasisPoints)),new Le(Ct)),d=m.gt(i)?i:m;return{amount:l,fee:d,expirationTime:a}}else{let u=en(r.mul(new Le(s.transferFeeBasisPoints)),new Le(Ct)),c=u.gt(i)?i:u;return{amount:r,fee:c,expirationTime:a}}}function Rt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function en(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var yi=(t=>(t.ALL="all",t.Strict="strict",t))(yi||{}),xa=(i=>(i.All="all",i.Standard="standard",i.Concentrated="concentrated",i.AllFarm="allFarm",i.StandardFarm="standardFarm",i.ConcentratedFarm="concentratedFarm",i))(xa||{});var Ue={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},vg=C({},Ue);var Ba="ray_tab_hash",bi="ray_req_hash",wm=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Ba);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Ba,r)),r},lo=async n=>{var o=n,{logCount:r=1e3,removeLastLog:e}=o,t=Ie(o,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(i=>i());let s=JSON.parse(localStorage.getItem(bi)||"[]").slice(0,r-1);e&&s.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),s.unshift(D(C({},t),{time:Date.now(),session:wm()}));try{localStorage.setItem(bi,JSON.stringify(s))}catch{if(e){let i=!1,a=JSON.stringify(t.data).substring(0,100);for(s[0].data=a+(a.length>100?"...":"");!i;){s.pop();let u=JSON.stringify(t.data).substring(0,100);s[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(bi,JSON.stringify(s)),i=!0}catch{i=!1}}return new Promise(u=>u())}return lo(D(C({},t),{logCount:r,removeLastLog:!0}))}};var En=ue("Raydium_Api"),gi=new Map;async function iw(r,e,t=1e3){let n;for(;n==null;)try{En.debug(`Request ${r} through endlessRetry`),n=await e()}catch(o){En.error(`Request ${r} failed, retry after ${t} ms`,o),await la(t)}return n}var mo=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:o,urlConfigs:s}){this.cluster=e,this.urlConfigs=s||{},this.logCount=o||1e3,this.api=Sa.create({baseURL:this.urlConfigs.BASE_HOST||Ue.BASE_HOST,timeout:t}),this.api.interceptors.request.use(i=>{let{method:a,baseURL:u,url:c}=i;return En.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),i},i=>(En.error("Request failed"),Promise.reject(i))),this.api.interceptors.response.use(i=>{let{config:a,data:u,status:c}=i,{method:l,baseURL:m,url:d}=a;return n&&lo({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),En.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},i=>{let{config:a,response:u={}}=i,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&lo({status:c,url:`${m}${d}`,params:a.params,data:i.message,logCount:this.logCount}),En.error(`${l.toUpperCase()} ${m}${d} ${c||i.message}`),Promise.reject(i)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ue.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ue.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Sa.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(o=>o.numSlots);return n.reduce((o,s)=>o+s,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ue.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ue.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ue.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ue.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ue.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:o="desc",page:s=0,pageSize:i=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ue.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${o}&page=${s}&pageSize=${i}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ue.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],o=t.filter(i=>gi.has(i)?(n.push(gi.get(i)),!1):!0),s=[];return o.length&&(s=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ue.POOL_KEY_BY_ID)+`?ids=${o.join(",")}`)).data.filter(Boolean),s.forEach(a=>{gi.set(a.id,a)})),n.concat(s)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:o="all",sort:s="default",order:i="desc",page:a=1}=e,[u,c]=[t&&at(t).toBase58(),n&&n!=="undefined"?at(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ue.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${o}&poolSortField=${s}&sortType=${i}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Ue.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ue.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ue.CHECK_AVAILABILITY)).data}};import{merge as pf}from"lodash";var po="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ka="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as on,AccountLayout as vn,TOKEN_2022_PROGRAM_ID as Kd}from"@solana/spl-token";import{PublicKey as Po,SystemProgram as Cd}from"@solana/web3.js";var wi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Be=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ue(t)}createTxBuilder(e){return this.scope.checkOwner(),new uo({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(wi(e))}logInfo(...e){this.logger.info(wi(e))}logAndCreateError(...e){let t=wi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as hd,createCloseAccountInstruction as Td,createTransferInstruction as Id,TOKEN_PROGRAM_ID as Fn}from"@solana/spl-token";import{PublicKey as xd,SystemProgram as Bd}from"@solana/web3.js";import Sd from"bn.js";import{PublicKey as Ga,Keypair as wd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ad}from"@solana/spl-token";import Pd from"bn.js";import{PublicKey as ld}from"@solana/web3.js";import _a,{isBN as Va}from"bn.js";import{bits as Am,BitStructure as Pm,blob as km,Blob as hm,cstr as Tm,f32 as Im,f32be as xm,f64 as Bm,f64be as Sm,greedy as Km,Layout as Cm,ns64 as Rm,ns64be as Lm,nu64 as Om,nu64be as Nm,offset as Mm,s16 as _m,s16be as Vm,s24 as Em,s24be as Fm,s32 as vm,s32be as Dm,s40 as Wm,s40be as qm,s48 as Um,s48be as Gm,s8 as Xm,seq as zm,struct as ww,Structure as Ym,u16 as jm,u16be as Qm,u24 as Hm,u24be as Zm,u32 as $m,u32be as Jm,u40 as ed,u40be as td,u48 as nd,u48be as rd,u8 as od,UInt as id,union as sd,Union as ad,unionLayoutDiscriminator as ud,utf8 as cd}from"@solana/buffer-layout";var ur=Cm,Ca=Ym,Ra=ad,Aw=Pm,Ai=id,La=hm,Pw=Km,fo=od,Lt=jm,kw=Hm,cr=$m,hw=ed,Tw=nd,Oa=Om,Iw=Qm,xw=Zm,Bw=Jm,Sw=td,Kw=rd,Cw=Nm,Rw=Xm,Lw=_m,Ow=Em,Ge=vm,Nw=Wm,Mw=Um,_w=Rm,Vw=Vm,Ew=Fm,Fw=Dm,vw=qm,Dw=Gm,Ww=Lm,qw=Im,Uw=xm,Gw=Bm,Xw=Sm;var Na=zm,Ma=sd,zw=ud,ye=km,Yw=Tm,jw=cd,Pi=Am,ki=Mm;var bn=class extends ur{constructor(t,n,o){super(t,o);this.blob=ye(t),this.signed=n}decode(t,n=0){let o=new _a(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new _a(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},yo=class extends ur{constructor(t){super(8,t);this._lower=Pi(cr(),!1),this._upper=Pi(cr(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),s=this._upper.decode(t,n+this._lower.span);return C(C({},o),s)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function v(r){return new Ai(1,r)}function je(r){return new Ai(4,r)}function w(r){return new bn(8,!1,r)}function Q(r){return new bn(16,!1,r)}function Ea(r){return new bn(1,!0,r)}function bo(r){return new bn(8,!0,r)}function Fa(r){return new bn(16,!0,r)}var Dt=class extends ur{constructor(t,n,o,s){super(t.span,s);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new Dt(ye(32),e=>new ld(e),e=>e.toBuffer(),r)}var hi=class extends ur{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=fo()}encode(t,n,o=0){return t==null?this.discriminator.encode(0,n,o):(this.discriminator.encode(1,n,o),this.layout.encode(t,n,o+1)+1)}decode(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return null;if(o===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return 1;if(o===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Jw(r,e){return new hi(r,e)}function Xe(r){return new Dt(fo(),md,dd,r)}function md(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function dd(r){return r?1:0}function eA(r,e){let t=cr("length"),n=N([t,G(r,ki(t,-t.span),"values")]);return new Dt(n,({values:o})=>o,o=>({values:o}),e)}function tA(r,e,t){let n=N([w("tag"),e.replicate("data")]);function o({tag:s,data:i}){if(!s.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+s.toString("hex"));return i}return new Dt(n,o,s=>({tag:r,data:s}),t)}function pd(r){let e=cr("length"),t=N([e,ye(ki(e,-e.span),"data")]);return new Dt(t,({data:n})=>n,n=>({data:n}),r)}function nA(r){return new Dt(pd(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function rA(r,e){let t=Ma(fo(),e);return r.forEach((n,o)=>t.addVariant(o,n,n.property)),t}function oA(r,e,t){let n=N([G(r,e,"values")]);return new Dt(n,({values:o})=>o,o=>({values:o}),t)}var Ti=class extends Ca{decode(e,t){return super.decode(e,t)}};function N(r,e,t){return new Ti(r,e,t)}var Ii=class extends Ra{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(o=>o.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function iA(r,e,t){return new Ii(r,e,t)}var xi=class extends La{decode(e,t){let n=super.decode(e,t);if(!n.every(o=>o===0))throw new Error("nonzero padding bytes");return n}};function sA(r){return new xi(r)}function G(r,e,t){let n,o=typeof e=="number"?e:Va(e)?e.toNumber():new Proxy(e,{get(s,i){if(!n){let a=Reflect.get(s,"count");n=Va(a)?a.toNumber():a,Reflect.set(s,"count",n)}return Reflect.get(s,i)},set(s,i,a){return i==="count"&&(n=a),Reflect.set(s,i,a)}});return Na(r,o,t)}var tn=N([B("mint"),B("owner"),w("amount"),je("delegateOption"),B("delegate"),v("state"),je("isNativeOption"),w("isNative"),w("delegatedAmount"),je("closeAuthorityOption"),B("closeAuthority")]);function fd(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Bi(r,...e){if(!fd(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Si(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function va(r,e){Bi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var wo=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Tt=(r,e)=>r<<32-e|r>>>e;var pA=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function yd(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Ki(r){return typeof r=="string"&&(r=yd(r)),Bi(r),r}var go=class{clone(){return this._cloneInto()}},fA={}.toString;function Da(r){let e=n=>r().update(Ki(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function bd(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),u=n?4:0,c=n?0:4;r.setUint32(e+u,i,n),r.setUint32(e+c,a,n)}var Wa=(r,e,t)=>r&e^~r&t,qa=(r,e,t)=>r&e^r&t^e&t,Ao=class extends go{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=wo(this.buffer)}update(e){Si(this);let{view:t,buffer:n,blockLen:o}=this;e=Ki(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let u=wo(e);for(;o<=s-i;i+=o)this.process(u,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),va(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let m=i;m<o;m++)t[m]=0;bd(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=wo(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],s)}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:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var gd=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]),nn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),rn=new Uint32Array(64),Ci=class extends Ao{constructor(){super(64,32,8,!1),this.A=nn[0]|0,this.B=nn[1]|0,this.C=nn[2]|0,this.D=nn[3]|0,this.E=nn[4]|0,this.F=nn[5]|0,this.G=nn[6]|0,this.H=nn[7]|0}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:u}=this;return[e,t,n,o,s,i,a,u]}set(e,t,n,o,s,i,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)rn[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=rn[m-15],p=rn[m-2],y=Tt(d,7)^Tt(d,18)^d>>>3,f=Tt(p,17)^Tt(p,19)^p>>>10;rn[m]=f+rn[m-7]+y+rn[m-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=Tt(a,6)^Tt(a,11)^Tt(a,25),p=l+d+Wa(a,u,c)+gd[m]+rn[m]|0,f=(Tt(n,2)^Tt(n,13)^Tt(n,22))+qa(n,o,s)|0;l=c,c=u,u=a,a=i+p|0,i=s,s=o,o=n,n=p+f|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+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,o,s,i,a,u,c,l)}roundClean(){rn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ua=Da(()=>new Ci);var LA=ue("Raydium_Util");function Xa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],o=[];for(let{pubkey:s,account:i}of t.value){let a=tn.decode(i.data),{mint:u,amount:c}=a;n.push({publicKey:s,mint:u,amount:c,isAssociated:ge(r,u,i.owner).publicKey.equals(s),isNative:!1,programId:i.owner}),o.push({pubkey:s,accountInfo:a,programId:i.owner})}return e&&n.push({mint:Ga.default,amount:new Pd(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:o}}function Qe({fromPublicKey:r,programId:e=Ad}){let t=wd.generate().publicKey.toBase58().slice(0,32);return{publicKey:kd(r,t,e),seed:t}}function kd(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),o=Ua(n);return new Ga(o)}function Ri(r){let{mint:e,tokenAccount:t,owner:n,programId:o=Fn}=r;return hd(t,e,n,o)}function Wt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:s=Fn}=r;return Td(e,t,o,n,s)}async function qt(r){let{connection:e,amount:t,commitment:n,payer:o,owner:s,skipCloseAccount:i}=r,a=await e.getMinimumBalanceForRentExemption(tn.span,n),u=z(t).add(new Sd(a)),c=Qe({fromPublicKey:o,programId:Fn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Bd.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:tn.span,programId:Fn}),Ri({mint:new xd(_e.address),tokenAccount:c.publicKey,owner:s,programId:Fn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:i?[]:[E.CloseAccount],endInstructions:i?[]:[Wt({tokenAccount:c.publicKey,payer:o,owner:s})]}}function lr({source:r,destination:e,owner:t,amount:n,multiSigners:o=[],tokenProgram:s=Fn}){return Id(r,e,t,BigInt(String(n)),o,s)}var mr=class extends Be{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:o}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=o||[],this._clientOwnedToken=!!(n||o)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ge(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let o=C(C({},{}),t),[s,i,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:on},o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Kd},o.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Xa({owner:this.scope.ownerPubKey,solAccountResp:s,tokenAccountResp:{context:i.context,value:[...i.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=on,associatedOnly:o=!0}){await this.fetchWalletTokenAccounts();let s=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),i=this.getAssociatedTokenAccount(t,n);for(let a of s){let{publicKey:u}=a;if(u&&(!o||o&&i.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,g,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:o,associatedOnly:s,owner:i,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Po(t.tokenProgram||on),m=this.getAssociatedTokenAccount(n,new Po(l)),d=(a?[]:this.tokenAccountRawInfos).filter(P=>P.accountInfo.mint.equals(n)&&(!s||P.pubkey.equals(m))).sort((P,A)=>P.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(o===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(s){let P=Li(i,m,i,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(P),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&vn.decode(A.data).mint.equals(n)&&vn.decode(A.data).owner.equals(i)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(P),p.instructionTypes.push(E.CreateATA);if(n.equals(J)&&o.amount){let A=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:o.payer||this.scope.ownerPubKey,amount:(f=o.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),o.amount&&(p.instructions.push(lr({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:o.amount,tokenProgram:on})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(Wt({owner:i,payer:o.payer||i,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let P=Qe({fromPublicKey:i,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(vn.span),h=Cd.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:P.seed,newAccountPubkey:P.publicKey,lamports:A+Number((b=(g=o.amount)==null?void 0:g.toString())!=null?b:0),space:vn.span,programId:l});return p.instructions.push(h,Ri({mint:n,tokenAccount:P.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(Wt({owner:i,payer:o.payer||i,tokenAccount:P.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:P.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=on,autoUnwrapWSOLToSOL:o}){var u;await this.fetchWalletTokenAccounts();let s=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,i=this.scope.ownerPubKey,a={};if(!s){let c=this.getAssociatedTokenAccount(t,n),l=await Li(i,c,i,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],s=c}return o&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Wt({owner:i,payer:i,tokenAccount:s,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:s,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:o,mint:s,programId:i=on,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(s,i);if(new Po(J).equals(s)){let p=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:o,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(this.scope.ownerPubKey,d,this.scope.ownerPubKey,s,i);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(on)&&vn.decode(f.data).mint.equals(s)&&vn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${s.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:o=on,amount:s,useSOLBalance:i,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Po(J))&&i){let l=await this.handleTokenAccount({side:"in",amount:s||0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:d}=l,p=Ie(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:o}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:d}=m,p=Ie(m,["tokenAccount"]);u=d,c.addInstruction(p)}return C({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Hd}from"@solana/spl-token";import{PublicKey as he,SystemProgram as Zd}from"@solana/web3.js";import{PublicKey as $a}from"@solana/web3.js";var Oi=N([v("instruction")]),Ni=N([v("instruction")]),Rd=N([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Q("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),G(w(),15,"padding")]),Ld=N([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),Q("perShareReward"),w("lastSlot"),w("perSlotReward")]),Od=N([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),Q("perShareRewardA"),w("perSlotRewardA"),v("option"),B("rewardVaultB"),ye(7),w("totalRewardB"),Q("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),Nd=N([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Q("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),G(Rd,5,"rewardInfos"),B("creator"),B(),G(w(),32,"padding")]),za=new Proxy(Ld,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return D(C({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(r,e,t)}}),Ya=new Proxy(Od,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return D(C({},o),{version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]})}:Reflect.get(r,e,t)}}),dr=new Proxy(Nd,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return D(C({},o),{version:6,rewardInfos:o.rewardInfos.map(s=>{var i;return D(C({},s),{rewardType:((i=Object.entries(sn).find(a=>String(a[1])===s.rewardType.toString()))!=null?i:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Md=N([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Mi=N([v("instruction"),w("nonce"),G(Md,5,"rewardTimeInfo")]),_i=N([v("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Vi=N([v("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),cP=N([w("state"),B("id"),B("owner"),w("deposited"),G(w(),1,"rewardDebts")]),pr=N([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),1,"rewardDebts"),w(""),w("voteLockedBalance"),G(w(),15)]),lP=N([w("state"),B("id"),B("owner"),w("deposited"),G(w(),2,"rewardDebts")]),ja=N([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),2,"rewardDebts"),G(w(),17)]),Qa=N([w(),w("state"),B("id"),B("owner"),w("deposited"),G(Q(),5,"rewardDebts"),G(w(),16)]),et=N([v("instruction"),w("amount")]),_d=N([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ea("digitShift"),G(v(),7,"reserved1"),G(w(),7,"reserved2")]),Ha=N([ye(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),G(v(),32,"reserved1"),G(_d,4,"votingMints"),bo("timeOffset"),v("bump"),G(v(),7,"reserved2"),G(w(),11,"reserved3")]),Vd=N([bo("startTime"),bo("endTime"),v("kind"),G(v(),15,"reserved")]),Ed=N([G(Vd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Xe("isUsed"),Xe("allowClawback"),v("votingMintConfigIdx"),G(v(),29,"reserved")]),Za=N([ye(8),B("voterAuthority"),B("registrar"),G(Ed,32,"deposits"),v("voterBump"),v("voterWweightRecordBump"),G(v(),94,"reserved")]);var wP=ue("Raydium_farm_config"),Ja=new $a("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),eu=new $a("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),tu={3:za,5:Ya,6:dr},nu={3:pr,5:ja,6:Qa},Ei=r=>[3,5,6].indexOf(r)!==-1,Fi=r=>{var i;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,o=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,s={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${o}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${o}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${o}`}};return(i=s[e])==null?void 0:i.call(s)},sn={"Standard SPL":0,"Option tokens":1},ft={[di.toString()]:3,[pi.toString()]:5,[Vn.toString()]:6};import{PublicKey as ie,SystemProgram as gn,SYSVAR_RENT_PUBKEY as Dd,SYSVAR_CLOCK_PUBKEY as br,TransactionInstruction as De}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Wd,TOKEN_PROGRAM_ID as ut,ASSOCIATED_TOKEN_PROGRAM_ID as qd}from"@solana/spl-token";import ko from"bn.js";function vi(r,e,t){return se([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Di(r,e){return se([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Wi(r,e){return se([e.toBuffer()],r)}function qi(r,e,t){return se([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ui(r,e,t){return se([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Gi(r,e,t,n){return se([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import it from"bn.js";var fr=ue("Raydium.farm.util");function yr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:o}=se([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return o}function He({programId:r,poolId:e,owner:t,version:n}){let{publicKey:o}=se([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return o}var ru=({programId:r,poolId:e})=>se([e.toBuffer()],r);function ou(r){return{isSet:new it(1),rewardPerSecond:z(r.perSecond),rewardOpenTime:z(r.openTime),rewardEndTime:z(r.endTime),rewardType:z(sn[r.rewardType])}}function Xi(r){return z(r.endTime).sub(z(r.openTime)).mul(z(r.perSecond))}function Dn(r){let e=nu[r];return e||fr.logWithError("invalid version",r),e}function Fd(r){let e=tu[r];return e||fr.logWithError("invalid version",r),e}function vd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new it(t)))return r;let o=new it(t).sub(r.lastSlot);r.lastSlot=new it(t);for(let s of r.rewardInfos){if(e.amount.eq(new it(0)))continue;let i=s.perSlotReward.mul(o);s.perShareReward=s.perShareReward.add(i.mul(new it(10).pow(new it(r.version===3?9:15))).div(e.amount)),s.totalReward=s.totalReward.add(i)}}else if(r.version===6)for(let o of r.rewardInfos){if(o.rewardState.eq(new it(0)))continue;let s=it.min(new it(n),o.rewardEndTime);if(o.rewardOpenTime.gte(s))continue;let a=s.sub(o.rewardLastUpdateTime).mul(o.rewardPerSecond),u=o.totalReward.sub(o.totalRewardEmissioned);u.lt(a)?(a=u,o.rewardLastUpdateTime=o.rewardLastUpdateTime.add(u.div(o.rewardPerSecond))):o.rewardLastUpdateTime=s,!e.amount.eq(new it(0))&&(o.accRewardPerShare=o.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),o.totalRewardEmissioned=o.totalRewardEmissioned.add(a))}return r}async function _P({connection:r,farmPools:e,owner:t,config:n,chainTime:o}){let s=!1,i=!1,a=new it(10),u=[];for(let d of e){let p=be(d);p.version===6?i=!0:s=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:He({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await ot(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:g}of l){let b=f.toBase58();if(c[b]=C({},c[b]),y==="state"){let P=Fd(p);(!g||!g.data||g.data.length!==P.span)&&fr.logWithError(`invalid farm state account info, pools.id, ${d}`),c[b].state=P.decode(g.data)}else if(y==="lpVault")(!g||!g.data||g.data.length!==tn.span)&&fr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[b].lpVault=tn.decode(g.data);else if(y==="ledger"){let P=Dn(p);g&&g.data&&(g.data.length!==P.span&&fr.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[b].ledger=P.decode(g.data))}}let m=i||s?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=vd(c[d].state,c[d].lpVault,m,o));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new it(9)):a.pow(new it(15)),g=p.rewardInfos.map((b,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(p.version===6?b.accRewardPerShare:b.perShareReward).div(f).sub(A)});c[d].wrapped=D(C({},c[d].wrapped),{pendingRewards:g})}return c}function VP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ta(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ia(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function zi(r,e,t,n){let o=await r.getAccountInfo(e);if(o===null)throw Error("registrar info check error");let i=Ha.decode(o.data).votingMints.findIndex(l=>l.mint.equals(n));if(i===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:i,isInit:!1};let c=Za.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===i);return c===-1?{index:i,isInit:!1}:{index:c,isInit:!0}}var Ud=ue("Raydium_farm_instruction"),gr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function ho(r){let{version:e,id:t,ledger:n,programId:o,owner:s}=r,i={3:9,5:10}[e];i||Ud.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Oi.span);Oi.encode({instruction:i},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:s,isWritable:!1}),k({pubkey:gn.programId,isWritable:!1}),k({pubkey:Dd,isWritable:!1})];return{instruction:new De({programId:o,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function iu(r){var n;let e=Buffer.alloc(Mi.span);Mi.encode({instruction:0,nonce:new ko(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Zo,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Me}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let o of r.rewardInfo)t.push(k({pubkey:o.rewardMint,isWritable:!1}),k({pubkey:o.rewardVault}),k({pubkey:o.userRewardToken}));return{instruction:new De({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function su(r){let e=Buffer.alloc(Ni.span);Ni.encode({instruction:5},e);let t=[k({pubkey:ut,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new De({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Gd(r,e,t,n,o,s,i,a,u,c,l,m,d){let p=N([v("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Hr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let g=Buffer.from([...gr.voterStakeRegistryDeposit,...f]);return new De({keys:y,programId:r,data:g})}function Xd(r,e,t,n){let o=N([]),s=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:gn.programId,isSigner:!1,isWritable:!1}],i=Buffer.alloc(o.span);o.encode({},i);let a=Buffer.from([...gr.voterStakeRegistryUpdateVoterWeightRecord,...i]);return new De({keys:s,programId:r,data:a})}function zd(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([v("depositEntryIndex"),w("amount")]),g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Hr,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},b);let P=Buffer.from([...gr.voterStakeRegistryWithdraw,...b]);return new De({keys:g,programId:r,data:P})}function Yd(r,e,t,n,o,s){let i=N([v("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:gn.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);return i.encode({ins:23},u),new De({keys:a,programId:r,data:u})}function jd(r,e,t,n,o,s,i,a){let u=N([v("voterBump"),v("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:gn.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:Hr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:i,voterWeightRecordBump:a},l);let m=Buffer.from([...gr.voterStakeRegistryCreateVoter,...l]);return new De({keys:c,programId:r,data:m})}function Qd(r,e,t,n,o,s,i,a,u,c,l,m){let d=N([v("depositEntryIndex"),v("kind"),v("option"),w("startTs"),je("periods"),Xe("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:gn.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:qd,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...gr.voterStakeRegistryCreateDepositEntry,...y]);return new De({keys:p,programId:r,data:f})}async function JP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:s,owner:i,poolId:a,tokenProgram:u}){let c=vi(n,o,s).publicKey,l=He({programId:e,poolId:a,owner:i,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=pr.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new ko(0)))throw Error("user do not has new stake amount");let y=Di(e,a).publicKey,f=Wi(e,a).publicKey,{publicKey:g,nonce:b}=qi(n,c,i),P=ge(g,y,u).publicKey,{publicKey:A,nonce:h}=Ui(n,c,i),I=Gi(t,o,s,i).publicKey,T=[],S=ge(i,y,u).publicKey;if(await r.getAccountInfo(S)===null&&T.push(Wd(i,S,i,y)),await r.getAccountInfo(g)===null){let U=Yd(t,o,i,s,i,I);T.push(U,jd(n,c,g,A,i,i,b,h))}let{index:O,isInit:M}=await zi(r,c,g,y);return M||T.push(Qd(n,c,g,P,i,i,y,O,0,void 0,0,!1)),T.push(Gd(n,c,g,P,S,i,l,a,y,f,e,O,p),Xd(n,c,g,A)),T}async function ek({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:s,owner:i,poolId:a,tokenProgram:u}){let c=vi(n,o,s).publicKey,l=He({programId:e,poolId:a,owner:i,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=pr.decode(m.data);if(d.voteLockedBalance.eq(new ko(0)))throw Error("user has vote locked balance = 0");let p=Di(e,a).publicKey,y=Wi(e,a).publicKey,{publicKey:f}=qi(n,c,i),g=ge(f,p,u).publicKey,{publicKey:b}=Ui(n,c,i),P=Gi(t,o,s,i).publicKey,A=[],{index:h,isInit:I}=await zi(r,c,f,p);if(!I)throw Error("deposit entry index check error");return A.push(zd(n,c,f,i,P,b,g,ge(i,p,u).publicKey,l,a,p,y,e,h,d.voteLockedBalance)),A}function Yi({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:o}){let s=Buffer.alloc(_i.span);_i.encode({instruction:3,rewardReopenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardPerSecond:z(o.perSecond)},s);let i=[k({pubkey:ut,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new De({programId:n.programId,keys:i,data:s})}function ji({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:o}){let s=Buffer.alloc(Vi.span);Vi.encode({instruction:4,isSet:new ko(1),rewardPerSecond:z(o.perSecond),rewardOpenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardType:z(sn[o.rewardType])},s);let i=[...Zo,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:o.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new De({programId:t.programId,keys:i,data:s})}function tk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:o,rewardAccounts:s,owner:i,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],d=He({programId:l,poolId:m,owner:i,version:n}),p=Buffer.alloc(et.span);et.encode({instruction:a,amount:u},p);let y=n===6?[k({pubkey:ut,isWritable:!1}),...c?[k({pubkey:gn.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:d}),k({pubkey:i,isWritable:!1,isSigner:!0}),k({pubkey:o})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:d}),k({pubkey:i,isWritable:!1,isSigner:!0}),k({pubkey:o}),k({pubkey:new ie(t.lpVault)}),k({pubkey:s[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:s[f]})),y.push(k({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(k({pubkey:s[f]}));return new De({programId:l,keys:y,data:p})}function wr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=He({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(et.span);et.encode({instruction:2,amount:z(i)},l);let m=[k({pubkey:ut,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:o[d]}));return new De({programId:a,keys:m,data:l})}function Ar(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(et.span);et.encode({instruction:12,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:o[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function Pr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(et.span);et.encode({instruction:11,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function au(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(et.span);et.encode({instruction:10,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function uu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=He({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(et.span);et.encode({instruction:11,amount:z(i)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:br,isWritable:!1}),k({pubkey:ut,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:o[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new De({programId:u,keys:d,data:m})}function cu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:s,amount:i}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=He({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(et.span);et.encode({instruction:1,amount:z(i)},l);let m=[k({pubkey:ut,isWritable:!1}),k({pubkey:gn.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:o[d]}));return new De({programId:a,keys:m,data:l})}var kr=class extends Be{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Me)){let n=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Xi(D(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:o=Vn,txVersion:s}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new he(e.lpMint.address),lockInfo:{lockMint:Ja,lockVault:eu},version:6,rewardInfos:t,programId:o},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Qe({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(dr.span);u.addInstruction({instructions:[Zd.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:dr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=ru({programId:new he(a.programId),poolId:l.publicKey}),y=yr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],g=[];for(let I of a.rewardInfos){I.openTime>=I.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",I.openTime.toString()),isNaN(sn[I.rewardType])&&this.logAndCreateError("rewardType error",I.rewardType),Number(I.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",I.perSecond),f.push(ou(I));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:I,payer:c});S&&u.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=I.mint.equals(Me)?new he(_e.address):I.mint;g.push({rewardMint:x,rewardVault:yr({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:new he(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});P&&u.addInstruction(P),b||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:h}=iu({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:b,programId:a.programId,rewardInfo:g,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[h]}).versionBuild({txVersion:s,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:b,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:o}){var g;let s=ft[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let i=be((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:i.id,rewardInfos:e.rewardInfos,lpVault:i.lpVault,programId:i.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Me)?new he(_e.address):n.mint,l=a.rewardInfos.findIndex(b=>new he(b.mint.address).equals(c)),m=i.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(g=m.vault)!=null?g:Me,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[Yi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:o}){var l;let s=ft[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let i=be((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:i.id,rewardInfos:e.rewardInfos,lpVault:i.lpVault,programId:i.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Me)?new he(_e.address):m.mint,p=a.rewardInfos.findIndex(A=>new he(A.mint.address).equals(d)),y=i.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Me,{rewardPubKey:g,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:m,payer:u});b&&c.addInstruction(b),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Yi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:g,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:o})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:o,payer:s}=e,i=ft[n.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let a=be((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder(),l=o.mint.equals(Me)?new he(_e.address):o.mint,m=yr({programId:new he(n.programId),poolId:new he(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:o,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=l,c.addInstruction({instructions:[ji({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:o})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:o,payer:s}=e,i=ft[n.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let a=be((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of o){let m=l.mint.equals(Me)?new he(_e.address):l.mint,d=yr({programId:new he(n.programId),poolId:new he(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=ji({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(C({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:o,feePayer:s,useSOLBalance:i,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=ft[d];Ei(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new he(n.programId),new he(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=He({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let F of this.scope.account.tokenAccounts)if(a){let H=ge(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&H.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let h=g.lpMint,I=A[h.address];I||this.logAndCreateError("you don't have any lp","lp zero",A);let T=[];for(let F of m){let H=i&&F.mint.address===J.toString(),Z=A[F.mint.address];if(!Z){let{account:W,instructionParams:pt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new he(F.mint.address),notUseTokenAccount:H,createInfo:{payer:s||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!H,associatedOnly:H?!1:a,checkCreateATAOwner:u});Z=W,pt&&P.addInstruction(pt)}A[F.mint.address]=Z,T.push(Z)}let S,x=await this.scope.connection.getAccountInfo(b);if(x&&(S=Dn(p).decode(x.data)),n.programId!==Vn.toString()&&!S){let{instruction:F,instructionType:H}=ho({id:f,programId:y,version:p,ledger:b,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[F],instructionTypes:[H]})}let K=Fi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});K&&this.logAndCreateError(K);let O={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:I,rewardAccounts:T,userAuxiliaryLedgers:c==null?void 0:c.map(F=>new he(F))},M=p===6?cu(O):p===5?uu(O):au(O),U={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return P.addInstruction({instructions:[M],instructionTypes:[U[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:o,deposited:s,useSOLBalance:i,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=ft[n.programId];Ei(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let g={};for(let K of this.scope.account.tokenAccounts)if(u){let O=ge(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&O.equals(K.publicKey)&&(g[K.mint.toString()]=K.publicKey)}else g[K.mint.toString()]=K.publicKey;if(s)s.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=He({programId:new he(n.programId),poolId:new he(n.id),owner:this.scope.ownerPubKey,version:p}),O=await this.scope.connection.getAccountInfo(K);O||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:O}),Dn(p).decode(O.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let b=y.lpMint.address,P=i&&b===J.toString(),A=g[b.toString()];if(!A){let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new he(b),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,O&&f.addInstruction(O)}g[b.toString()]=A;let h=[];for(let K of d){let O=i&&K.mint.address===J.toString(),M=g[K.mint.address];if(!M){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new he(K.mint.address),notUseTokenAccount:O,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});M=U,F&&f.addInstruction(F)}g[K.mint.address]=M,h.push(M)}let I=Fi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:h});I&&this.logAndCreateError(I);let T={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new he(K))},S=p===6?wr(T):p===5?Ar(T):Pr(T),x={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let o=be((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),s=ft[e.programId];s!==6&&this.logAndCreateError("invalid farm version",s);let i=e.rewardInfos.findIndex(y=>y.mint.address===Me.toString()?new he(_e.address):t),a=o.rewardInfos[i];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Me,c=this.createTxBuilder(),l;if(t.equals(Me)){let y=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Xi(D(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[Hd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=su({programId:o.programId,id:o.id,authority:o.authority,lpVault:o.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:o,associatedOnly:s=!0,checkCreateATAOwner:i=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(s){let f=ge(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:g,rewardInfos:b,id:P}=y,A=ft[f],h=g.address,I=n&&h===J.toString(),T=m[h];if(!T){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.programId,mint:new he(h),notUseTokenAccount:I,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:I?!1:s,checkCreateATAOwner:i});T=U,F&&l.addInstruction(F)}m[h.toString()]=T;let S=[];for(let U of b){let F=n&&U.mint.address===J.toString(),H=m[U.mint.address];if(!H){let{account:Z,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:U.mint.programId,mint:new he(U.mint.address),notUseTokenAccount:F,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:s,checkCreateATAOwner:i});H=Z,W&&l.addInstruction(W)}m[U.mint.address]=H,S.push(H)}let x=p[P],K={amount:Ee,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(U=>new he(U))},O=A===6?wr(K):A===5?Ar(K):Pr(K),M={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[O],instructionTypes:[M[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Oe}from"@solana/web3.js";import{AccountLayout as Ep,NATIVE_MINT as ju,TOKEN_PROGRAM_ID as Ro}from"@solana/spl-token";var Ik=N([je("mintAuthorityOption"),B("mintAuthority"),w("supply"),v("decimals"),v("isInitialized"),je("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as $d}from"@solana/web3.js";import{MintLayout as lu,TOKEN_PROGRAM_ID as Jd}from"@solana/spl-token";var Mk=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new $d(e));return!t||t.data.length!==lu.span?void 0:lu.decode(t.data)},_k=({mint:r,decimals:e,programId:t=Jd,logoURI:n="",priority:o=3})=>{let s=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:s,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:s,tags:[],priority:o}},To=r=>new pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),Qi=o=>{var s=o,{amount:r,isRaw:e,name:t}=s,n=Ie(s,["amount","isRaw","name"]);return new fe(new pe({mint:at(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function Vk(r){return r.address===Kt.address?_e:r}function Ek(r){return r.address===_e.address?Kt:r}var wn=o=>{var s=o,{address:r,programId:e,decimals:t}=s,n=Ie(s,["address","programId","decimals"]);return C({chainId:101,address:at(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Hi=r=>r?D(C({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:D(C({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:D(C({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as Un,ASSOCIATED_TOKEN_PROGRAM_ID as pp}from"@solana/spl-token";import{PublicKey as we,TransactionInstruction as Ut,SystemProgram as wu,SYSVAR_RENT_PUBKEY as fp}from"@solana/web3.js";var Zi=N([v("instruction"),w("amountIn"),w("minAmountOut")]),$i=N([v("instruction"),w("maxAmountIn"),w("amountOut")]),Qk=N([v("instruction"),v("nonce")]),Ji=N([v("instruction"),v("nonce"),w("startTime")]),hr=N([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),G(w(),3,"padding")]),ep=N([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),G(w(),64,"padding")]),es=N([v("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),ts=N([v("instruction"),w("amountIn")]),Hk={4:hr,5:ep},mu=N([w("fee")]);import{PublicKey as tp}from"@solana/web3.js";var qn=new tp("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pn=5e4,np=N([w("x"),w("y"),w("price")]),rp=N([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),G(np,Pn,"DataElement")]);function op(r,e){return[0,Pn-2]}function ip(r){return[0,Pn-2]}function sp(r){return[0,Pn-2]}function ap(r,e,t){let[n,o]=op(e,t),s=n,i=o,a=0,u=e*r.multiplier/t;for(;s<=i;){if(a=Math.floor((i+s)/2),a===0||a>=Pn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)i=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];s=a+1}}return[a,a,!1]}function ns(r,e,t){let[n,o,s]=ap(r,e,t);if(!s)return 0;if(n===o){let i=r.DataElement[n].x;return e*r.multiplier/i}else{let i=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[o].x,c=r.DataElement[o].y,l=t*(u*a-i*c),m=i*l,d=(u-i)*(e*a-i*t)*c,p=m+d;return e*r.multiplier*l/p}}function An(r,e,t){return e*r.multiplier/t}function du(r,e,t){return e*t/r.multiplier}function up(r,e){let[t,n]=ip(e),o=t,s=n,i=0,a=e;for(;o<s;){if(i=Math.floor((s+o)/2),i<=0||i>Pn-2)return[i,i,!1];let u=r.DataElement[i].x,c=r.DataElement[i-1].x,l=r.DataElement[i+1].x;if(a===u)return[i,i,!0];if(a===c)return[i-1,i-1,!0];if(a===l)return[i+1,i+1,!0];if(a<c)s=i-1;else{if(a>c&&a<u)return[i-1,i,!0];if(a>u&&a<l)return[i,i+1,!0];o=i+1}}return[i,i,!1]}function cp(r,e){let[t,n]=sp(e),o=t,s=n,i=0,a=e;for(;o<=s;){if(i=Math.floor((s+o)/2),i<=0||i>=Pn-2)return[i,i,!1];let u=r.DataElement[i].y,c=r.DataElement[i-1].y,l=r.DataElement[i+1].y;if(a===u)return[i,i,!0];if(a===c)return[i-1,i-1,!0];if(a===l)return[i+1,i+1,!0];if(a<l)o=i+1;else{if(a<c&&a>u)return[i-1,i,!0];if(a<u&&a>l)return[i,i+1,!0];s=i-1}}return[i,i,!1]}function pu(r,e,t,n){let o=n?e+t:e-t,[s,i,a]=up(r,o);if(!a)return[0,0,!1,a];if(s===i)return[r.DataElement[i].price,r.DataElement[i].y,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[i].x,l=r.DataElement[s].price,m=r.DataElement[i].price,d=r.DataElement[s].y,p=r.DataElement[i].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(o-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-o)*r.multiplier/l),[y,f,!1,a]}}}function lp(r,e,t,n){let o=n?e-t:e+t,[s,i,a]=cp(r,o);if(!a)return[0,0,!1,a];if(s===i)return[r.DataElement[i].price,r.DataElement[i].x,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[i].x,l=r.DataElement[s].price,m=r.DataElement[i].price,d=r.DataElement[s].y,p=r.DataElement[i].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-o)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(o-p)/r.multiplier),[y,f,!1,a]}}}function mp(r,e){let t=pu(r,e,0,!1);return t[3]?t[0]:0}function fu(r,e,t,n){let o=ns(r,e,t),s=An(r,e,o),i=An(r,t,o),a=An(r,n,o),u=!0,[c,l,m,d]=pu(r,s,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=i-l;return du(r,p,o)}}function yu(r,e,t,n){let o=ns(r,e,t),s=An(r,e,o),i=An(r,t,o),a=An(r,n,o),u=!1,[c,l,m,d]=lp(r,i,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=s-l;return du(r,p,o)}}function dp(r){let e=rp.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function bu(r,e,t,n){let o=mp(r,An(r,e,ns(r,e,t)))/r.multiplier;return n?o:1/o}var Wn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(qn);e&&(this._layoutData=dp(e==null?void 0:e.data))}}};var gu=ue("Raydium_liquidity_instruction");function Au(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:s,fixedSide:i}=r,a=Buffer.alloc(es.span);es.encode({instruction:3,baseAmountIn:z(o),quoteAmountIn:z(s),fixedSide:i==="base"?Ee:aa},a);let u=[k({pubkey:Un,isWritable:!1}),k({pubkey:new we(e.id)}),k({pubkey:new we(t.authority),isWritable:!1}),k({pubkey:new we(t.openOrders),isWritable:!1}),k({pubkey:new we(t.targetOrders)}),k({pubkey:new we(e.lpMint.address)}),k({pubkey:new we(t.vault.A)}),k({pubkey:new we(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:qn})),u.push(k({pubkey:new we(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new we(t.marketEventQueue),isWritable:!1})),new Ut({programId:new we(e.programId),keys:u,data:a})}function rs(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:o}=r,s=be(t),i=4;if(e.pooltype.includes("StablePool")&&(i=5),i===4||i===5){let a=Buffer.alloc(ts.span);ts.encode({instruction:4,amountIn:z(o)},a);let u=[k({pubkey:Un,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.mintLp.address}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return i===5?u.push(k({pubkey:qn})):(u.push(k({pubkey:s.id})),u.push(k({pubkey:s.id}))),u.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks})),new Ut({programId:s.programId,keys:u,data:a})}return new Ut({programId:s.programId,keys:[]})}function Pu({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:s,pcMint:i,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:g,userLpVault:b,nonce:P,openTime:A,coinAmount:h,pcAmount:I,ammConfigId:T,feeDestinationId:S}){let x=N([v("instruction"),v("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:pp,isSigner:!1,isWritable:!1},{pubkey:wu.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0}],O=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:I},O),{instruction:new Ut({keys:K,programId:r,data:O}),instructionType:E.AmmV4CreatePool}}function dh(r){let e=N([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new we(r.id),isWritable:!1}),k({pubkey:new we(r.authority),isWritable:!1}),k({pubkey:new we(r.openOrders),isWritable:!1}),k({pubkey:new we(r.vault.A),isWritable:!1}),k({pubkey:new we(r.vault.B),isWritable:!1}),k({pubkey:new we(r.mintLp.address),isWritable:!1}),k({pubkey:new we(r.marketId),isWritable:!1}),k({pubkey:new we(r.marketEventQueue),isWritable:!1})];return new Ut({programId:new we(r.programId),keys:n,data:t})}function yp({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},o){let s=be(r),i=Buffer.alloc(Zi.span);Zi.encode({instruction:9,amountIn:z(t),minAmountOut:z(n)},i);let a=[k({pubkey:Un,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders})];return o===4&&a.push(k({pubkey:s.targetOrders})),a.push(k({pubkey:s.vault.A}),k({pubkey:s.vault.B})),o===5&&a.push(k({pubkey:qn})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Ut({programId:s.programId,keys:a,data:i})}function bp({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},o){let s=be(r),i=Buffer.alloc($i.span);$i.encode({instruction:11,maxAmountIn:z(t),amountOut:z(n)},i);let a=[k({pubkey:Un,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return o===5&&a.push(k({pubkey:qn})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Ut({programId:s.programId,keys:a,data:i})}function Io(r){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:s,fixedSide:i}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(i==="in")return yp(D(C({},a),{amountIn:o,minAmountOut:s}),t);if(i==="out")return bp(D(C({},a),{maxAmountIn:o,amountOut:s}),t);gu.logWithError("invalid params","params",r)}throw gu.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function ph({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Ji.span);Ji.encode({instruction:0,nonce:5,startTime:z(t)},n);let o=be(r),s=[k({pubkey:Un,isWritable:!1}),k({pubkey:wu.programId,isWritable:!1}),k({pubkey:fp,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.mintA.address,isWritable:!1}),k({pubkey:o.mintB.address,isWritable:!1}),k({pubkey:o.vault.A,isWritable:!1}),k({pubkey:o.vault.B,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:o.id,isWritable:!1}),k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Ut({programId:o.programId,keys:s,data:n})}function ku({poolKeys:r}){let e=N([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new we(r.id),isWritable:!1}),k({pubkey:new we(r.authority),isWritable:!1}),k({pubkey:new we(r.openOrders),isWritable:!1}),k({pubkey:new we(r.vault.A),isWritable:!1}),k({pubkey:new we(r.vault.B),isWritable:!1}),k({pubkey:new we(r.mintLp.address),isWritable:!1}),k({pubkey:new we(r.marketId),isWritable:!1}),k({pubkey:new we(r.marketEventQueue),isWritable:!1})];return{instruction:new Ut({programId:new we(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as ze,TOKEN_2022_PROGRAM_ID as an,ASSOCIATED_TOKEN_PROGRAM_ID as Fu}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as xt,SystemProgram as Gn,Keypair as ms}from"@solana/web3.js";import vu from"bn.js";import Sp from"bn.js";function hu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function yh(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function bh(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function xo(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function os(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function is(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Tr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Tu(r,e){return Tr(r,e)?null:os(r,e)}function Iu(r,e){return Tr(r,e)?null:is(r,e)}var gp=Buffer.from("amm_config","utf8"),wp=Buffer.from("pool","utf8"),Ap=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("pool_reward_vault","utf8"),xu=Buffer.from("position","utf8"),kp=Buffer.from("tick_array","utf8"),hp=Buffer.from("operation","utf8"),Tp=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ph(r,e){return se([gp,hu(e)],r)}function Bu(r,e,t,n){return se([wp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function ss(r,e,t){return se([Ap,e.toBuffer(),t.toBuffer()],r)}function Su(r,e,t){return se([Pp,e.toBuffer(),t.toBuffer()],r)}function Ae(r,e,t){return se([kp,e.toBuffer(),xo(t)],r)}function kn(r,e,t,n){return se([xu,e.toBuffer(),xo(t),xo(n)],r)}function yt(r,e){return se([xu,e.toBuffer()],r)}function Bo(r){return se([Buffer.from("metadata","utf8"),Mn.toBuffer(),r.toBuffer()],Mn)}function Ir(r){return se([hp],r)}function ct(r,e){return se([Tp,e.toBuffer()],r)}import Ot from"bn.js";var de=new Ot(0),lt=new Ot(1),Gt=new Ot(-1),mt=new Ot(1).shln(64),So=new Ot(1).shln(128),as=mt.sub(lt),xr=64,Ku=So.subn(1),Ze=-443636,tt=-Ze,Nt=new Ot("4295048016"),Mt=new Ot("79226673521066979257578248091"),Cu=16,Ru="59543866431248",Lu="184467440737095516",Ou="15793534762490258745",Ko=new Ot(10).pow(new Ot(6)),Ip=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Ip||{}),Th={[500]:10,[3e3]:60,[1e4]:200},Ih={version:6,liquidity:de,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:de,feeGrowthGlobalX64B:de,protocolFeesTokenA:de,protocolFeesTokenB:de,swapInAmountTokenA:de,swapOutAmountTokenB:de,swapInAmountTokenB:de,swapOutAmountTokenA:de,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},Nu={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},xh=new Ot("18446744073700000000");var xp=15,le=class{static async getTickArrays(e,t,n,o,s,i,a){let u=[],c=Y.getTickArrayStartIndexByTick(o,s),l=Y.getInitializedTickArrayInRange(i,a,s,c,Math.floor(xp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=Ae(t,n,l[p]);u.push(y)}let m=(await kt(e,u)).map(p=>p!==null?Br.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(C({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,o,s,i){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,o,s,i);for(;a==null||a.liquidityGross.lten(0);){if(c=Y.getNextTickArrayStartIndex(c,s,i),this.checkIsValidStartIndex(c,s))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,i);[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,o,s){let i=Math.floor(e/le.tickCount(t)),a=n?Y.searchLowBitFromStart(o,s,i-1,1,t):Y.searchHightBitFromStart(o,s,i+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,o){let s;if(o){let a=Fe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a-1}}else{let a=0;for(;a<Fe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a+1}}let{publicKey:i}=Ae(e,t,n.startTickIndex);return{nextTick:s,tickArrayAddress:i,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,o,s,i){let a=Y.getTickArrayStartIndexByTick(o,s),u=Math.floor((o-a)/s),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(i)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}=Ae(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(Y.checkIsOutOfBoundary(e)){if(e>tt)return!1;let n=Y.getTickArrayStartIndexByTick(Ze,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Fe*e}};import oe from"bn.js";import{PublicKey as It}from"@solana/web3.js";import Ce from"bn.js";var us=14,Xt=class{static maxTickInTickarrayBitmap(e){return e*Fe*hn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),o=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(o+=1);let s=n*o;return e<0?{minValue:-s,maxValue:-s+n}:{minValue:s,maxValue:s+n}}static nextInitializedTickArrayStartIndex(e,t,n,o){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let s=this.maxTickInTickarrayBitmap(n),i=o?t-le.tickCount(n):t+le.tickCount(n);if(i<-s||i>=s)return{isInit:!1,tickIndex:t};let a=n*Fe,u=i/a+512;i<0&&i%a!=0&&u--;let c=Math.abs(u);if(o){let l=e.shln(1024-c-1),m=Tu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-s}}else{let l=e.shrn(c),m=Iu(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}},Sr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Xt.maxTickInTickarrayBitmap(t),o=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&o--,o}static getBitmap(e,t,n){let o=this.getBitmapOffset(e,t);return e<0?{offset:o,tickarrayBitmap:n.negativeTickArrayBitmap[o]}:{offset:o,tickarrayBitmap:n.positiveTickArrayBitmap[o]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:o}=this.extensionTickBoundary(t);if(e>=o&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Xt.maxTickInTickarrayBitmap(e),n=-t;if(tt<=t)throw Error(`extensionTickBoundary check error: ${tt}, ${t}`);if(n<=Ze)throw Error(`extensionTickBoundary check error: ${n}, ${Ze}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:o}=this.getBitmap(e,t,n),s=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:Y.mergeTickArrayBitmap(o).testn(s),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,o){let s=le.tickCount(t),i=n?e-s:e+s,{tickarrayBitmap:a}=this.getBitmap(i,t,o);return this.nextInitializedTickArrayInBitmap(a,i,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,o){let{minValue:s,maxValue:i}=Xt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(o){let u=Y.mergeTickArrayBitmap(e).shln(hn-1-a),c=Tr(512,u)?null:os(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s}}else{let u=Y.mergeTickArrayBitmap(e).shrn(a),c=Tr(512,u)?null:is(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Xt.maxTickInTickarrayBitmap(t),o=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(o=hn-o),o}};import _t from"bn.js";var Kr=class{static getfeeGrowthInside(e,t,n){let o=new _t(0),s=new _t(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,s=t.feeGrowthOutsideX64B):(o=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),s=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let i=new _t(0),a=new _t(0);e.tickCurrent<n.tick?(i=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64A,o),i),c=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64B,s),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:i}=this.getfeeGrowthInside(e,n,o),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,mt),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64B),t.liquidity,mt),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,o){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:i}=this.getfeeGrowthInside(e,n,o),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,mt),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64B),t.liquidity,mt),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,o){let s=[],i=this.getRewardGrowthInsideV2(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<i.length;a++){let u=i[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,mt),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static GetPositionRewards(e,t,n,o){let s=[],i=this.getRewardGrowthInside(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<i.length;a++){let u=i[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,mt),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static getRewardGrowthInside(e,t,n,o){let s=[];for(let i=0;i<o.length;i++){let a=new _t(0);t.liquidityGross.eqn(0)?a=o[i].rewardGrowthGlobalX64:e<t.tick?a=o[i].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[i]):a=t.rewardGrowthsOutsideX64[i];let u=new _t(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[i]:u=o[i].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[i])),s.push(te.wrappingSubU128(te.wrappingSubU128(o[i].rewardGrowthGlobalX64,a),u))}return s}static getRewardGrowthInsideV2(e,t,n,o){let s=[];for(let i=0;i<o.length;i++){let a=new _t(0);t.liquidityGross.eqn(0)?a=o[i].rewardGrowthGlobalX64:e<t.tick?a=o[i].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[i]):a=t.rewardGrowthsOutsideX64[i];let u=new _t(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[i]:u=o[i].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[i])),s.push(te.wrappingSubU128(te.wrappingSubU128(o[i].rewardGrowthGlobalX64,a),u))}return s}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:o,add:s,epochInfo:i}){var g,b,P,A;let a=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),u=ee.getSqrtPriceX64FromTick(t.tickLower),c=ee.getSqrtPriceX64FromTick(t.tickUpper),l=s?1+o:1-o,m=ce.getAmountsFromLiquidity(a,u,c,n,s),[d,p]=[ke(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,i,!0),ke(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,i,!0)],[y,f]=[ke(new _t(new V(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,i,!0),ke(new _t(new V(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,i,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Rt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Mu}from"@solana/spl-token";var Re=class{static getOutputAmountAndRemainAccounts(e,t,n,o,s,i=!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}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o,l,s,i);return u.push(...y),{allTrade:d,expectedAmountOut:p.mul(Gt),remainingAccounts:u,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,o,s){let i=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,i);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,i);if(f.isExist){let{publicKey:g}=Ae(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,i,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o.mul(Gt),c,s);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:o}=Re.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Sr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):Y.checkTickArrayIsInitialized(Y.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Ae(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}let{isExist:s,nextStartIndex:i}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(s){let{publicKey:a}=Ae(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),o=t?Y.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):Y.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return o.length>0?{isExist:!0,nextStartIndex:o[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:o,tickIndex:s}=Xt.nextInitializedTickArrayStartIndex(Y.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(o)return{isExist:!0,nextStartIndex:s};t=s;let{isInit:i,tickIndex:a}=Sr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(i)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ze||t>tt)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:s}){var a,u,c;let i=[];for(let l=0;l<s.length;l++){let m=s[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=D(C({},m),{perSecond:te.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new It(d)});if(p.tokenMint.equals(It.default))continue;if(n<=p.openTime.toNumber()||o.eq(de)){i.push(p);continue}let y=new Ce(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=te.mulDivFloor(f,p.emissionsPerSecondX64,o),b=p.rewardGrowthGlobalX64.add(g),P=te.mulDivFloor(f,p.emissionsPerSecondX64,mt),A=p.rewardTotalEmissioned.add(P);i.push(D(C({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:A,lastUpdateTime:y}))}return i}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:o}=this.tickRange(e);for(let s of t){let i=Y.getTickArrayStartIndexByTick(s,e);if(i>=n||i<o)return!0}return!1}static tickRange(e){let t=Xt.maxTickInTickarrayBitmap(e),n=-t;return t>tt&&(t=le.getArrayStartIndex(tt,e)+le.tickCount(e)),n<Ze&&(n=le.getArrayStartIndex(Ze,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/le.tickCount(t)*hn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await ot(e,t.map(i=>({pubkey:i})),{batchRequest:n}),s={};for(let i of o)i.accountInfo!==null&&(s[i.pubkey.toString()]=_u.decode(i.accountInfo.data));return s}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},s=[];for(let u of t){let c=Y.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=Y.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=Ae(u.programId,u.id,m);s.push({pubkey:d}),o[d.toString()]=u.id}}let i=await ot(e,s,{batchRequest:n}),a={};for(let u of i){if(!u.accountInfo)continue;let c=o[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Br.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(C({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:o=!1,updateOwnerRewardAndFee:s=!0}){var a;let i=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(i.find(l=>l.equals(c.state.programId))||i.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 i)c.push(yt(p,d).publicKey);let l=await kt(t,c,{batchRequest:o}),m={};for(let d of l){if(d===null)continue;let p=Co.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,b=Y._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),P=Y._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ce.getAmountsFromLiquidity(g.sqrtPriceX64,b.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(b.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>D(C({},x),{pendingReward:new Ce(0)})),leverage:I,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let T=await Y.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await Y.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(s){let d=Object.values(m),p=await kt(t,d,{batchRequest:o}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let b=d[f].toString();y[b]=Br.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let b of g){let P=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,h=y[m[P].toString()],I=y[m[A].toString()],T=h.ticks[Y.getTickOffsetInArray(b.tickLower,f.tickSpacing)],S=I.ticks[Y.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await Kr.GetPositionFees(f,b,T,S),O=await Kr.GetPositionRewards(f,b,T,S);b.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),b.tokenFeeAmountB=K.gte(new Ce(0))?K:new Ce(0);for(let M=0;M<O.length;M++)b.rewardInfos[M].pendingReward=O[M].gte(new Ce(0))?O[M]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:o,amountIn:s,slippage:i,priceLimit:a=new V(0),catchLiquidityInsufficient:u=!1}){var U;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 V(0))?c=l?Nt.add(new Ce(1)):Mt.sub(new Ce(1)):c=ee.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=ke(s,m,o,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:g,executionPrice:b,feeAmount:P}=Re.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((U=p.fee)!=null?U:de),c,u),A=ke(f,d,o,!1),h=ee.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),I=l?h:new V(1).div(h),T=f.mul(new Ce(Math.floor((1-i)*1e10))).div(new Ce(1e10)),S=ke(T,d,o,!1),x=l?e.currentPrice:new V(1).div(e.currentPrice),K=new V(I).sub(x).abs(),O=x,M=new Ve(new V(K).mul(10**15).toFixed(0),new V(O).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:Rt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:M,fee:P,remainingAccounts:g,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:o,slippage:s,epochInfo:i,catchLiquidityInsufficient:a=!1}){let u=o.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new pe(D(C({},c),{mint:c.address,isToken2022:c.programId===Mu.toBase58()})),new pe(D(C({},l),{mint:l.address,isToken2022:l.programId===Mu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:g,expirationTime:b,currentPrice:P,executionPrice:A,priceImpact:h,fee:I,remainingAccounts:T,executionPriceX64:S}=Re.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new It(c.address),amountIn:n,slippage:s,epochInfo:i,catchLiquidityInsufficient:a}),x=D(C({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),K=D(C({},f),{amount:new fe(d,f.amount),fee:f.fee===void 0?void 0:new fe(d,f.fee)}),O=D(C({},g),{amount:new fe(d,g.amount),fee:g.fee===void 0?void 0:new fe(d,g.fee)}),M=new ve({baseToken:m,denominator:new Ce(10).pow(new Ce(20+m.decimals)),quoteToken:d,numerator:P.mul(new V(10**(20+d.decimals))).toFixed(0)}),U=new ve({baseToken:m,denominator:new Ce(10).pow(new Ce(20+m.decimals)),quoteToken:d,numerator:A.mul(new V(10**(20+d.decimals))).toFixed(0)}),F=new fe(m,I);return{allTrade:p,realAmountIn:x,amountOut:K,minAmountOut:O,expirationTime:b,currentPrice:M,executionPrice:U,priceImpact:h,fee:F,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var y,f,g;let s=e[t],i=Y.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=Y.getTickPrice({poolInfo:e,tick:o,baseIn:!0}).price.toNumber(),u=Math.max(i,s.priceMin),l=Math.min(a,s.priceMax)-u,m=a-i,d=s.priceMax-s.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:s.feeApr*p,rewardsApr:[(y=s.rewardApr[0])!=null?y:0*p,(f=s.rewardApr[1])!=null?f:0*p,(g=s.rewardApr[2])!=null?g:0*p],apr:s.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:s,positionTickLowerIndex:i,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=o[at(e.mintA.address).toString()],d=o[at(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=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),g=ee.getSqrtPriceX64FromTick(i),b=ee.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,g,b,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:I}=ce.getAmountsFromLiquidityWithSlippage(f,g,b,s,!1,!1,0),T=new V(P.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(d.value)),S=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(I.toString()).div(new V(10).pow(y)).mul(d.value)),x=S.div(T.add(S)).div(S),O=new V(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),M=3600*24*365,U=e.rewardDefaultInfos.map(F=>{var W,pt;let H=F.mint.decimals,Z=o[F.mint.address];return u<((W=F.startTime)!=null?W:0)||u>((pt=F.endTime)!=null?pt:0)||!F.perSecond||!Z||H===void 0?0:new V(Z.value).mul(new V(F.perSecond).mul(M)).div(new V(10).pow(H)).mul(x).mul(100).toNumber()});return{feeApr:O,rewardsApr:U,apr:O+U.reduce((F,H)=>F+H,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:s,slippage:i,add:a,epochInfo:u,amountHasFee:c}){var b,P;let l=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=ee.getSqrtPriceX64FromTick(n),d=ee.getSqrtPriceX64FromTick(o),p=a?1-i:1+i,y=ke(s,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new Ce(new V(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new Ce(0);else if(l.lte(d)){let A=ce.getLiquidityFromTokenAmountA(l,d,f,!a),h=ce.getLiquidityFromTokenAmountB(m,l,f);g=t?A:h}else g=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,d,f);return Re.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:o,liquidity:g,slippage:i,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:s,slippage:i,add:a}){var g,b,P,A;let u=ee.getSqrtPriceX64FromTick(n),c=ee.getSqrtPriceX64FromTick(o),l=a?1+i:1-i,m=ce.getAmountsFromLiquidity(ee.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),u,c,s,a),[d,p]=[ke(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),ke(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[y,f]=[ke(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),ke(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:s,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Rt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(u=>!n[u.id]).map(u=>new It(u.id));(await kt(e,o)).forEach((u,c)=>{!u||(n[o[c].toBase58()]=In.decode(u.data))});let i=t.map(u=>ct(new It(u.programId),new It(u.id)).publicKey),a=await Re.fetchExBitmaps({connection:e,exBitmapAddress:i,batchRequest:!1});return t.reduce((u,c)=>D(C({},u),{[c.id]:D(C({},n[c.id]),{id:new It(c.id),version:6,programId:new It(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:D(C({},c.config),{id:new It(c.config.id),fundOwner:""}),currentPrice:new V(c.price),exBitmapInfo:a[ct(new It(c.programId),new It(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]}};function lT({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:o,slippage:s,add:i,epochInfo:a,amountHasFee:u}){var A,h,I,T;let[c,l,m,d]=e<t?[e,t,n,o]:[t,e,o,n],p=ee.priceToSqrtPriceX64(new V(r.price),r.mintA.decimals,r.mintB.decimals),y=ee.getSqrtPriceX64FromTick(c),f=ee.getSqrtPriceX64FromTick(l),[g,b]=[ke(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),ke(d,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(p,y,f,g.amount.sub((I=g.fee)!=null?I:de),b.amount.sub((T=b.fee)!=null?T:de));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:s,add:i,epochInfo:a,amountAddFee:!u})}var te=class{static mulDivRoundingUp(e,t,n){let o=e.mul(t),s=o.div(n);return o.mod(n).eq(de)||(s=s.add(lt)),s}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(lt)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new oe(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(So).sub(t).mod(So)}};function We(r,e){return cs(r.mul(e),64,256)}function Bp(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function cs(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ee=class{static sqrtPriceX64ToPrice(e,t,n){return te.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return te.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,o){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))throw new Error("liquidity must greater than 0");return o?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,o){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))throw new Error("liquidity must greater than 0");return o?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,o){if(n.eq(de))return e;let s=t.shln(xr);if(o){let i=s,a=s.add(n.mul(e));return a.gte(i)?te.mulDivCeil(i,e,a):te.mulDivRoundingUp(i,lt,i.div(e).add(n))}else{let i=n.mul(e);if(!s.gt(i))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=s.sub(i);return te.mulDivCeil(s,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,o){let s=n.shln(xr);if(o)return e.add(s.div(t));{let i=te.mulDivRoundingUp(s,lt,t);if(!e.gt(i))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(i)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ze||e>tt)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new oe("18445821805675395072"):new oe("18446744073709551616");return(t&2)!=0&&(n=We(n,new oe("18444899583751176192"))),(t&4)!=0&&(n=We(n,new oe("18443055278223355904"))),(t&8)!=0&&(n=We(n,new oe("18439367220385607680"))),(t&16)!=0&&(n=We(n,new oe("18431993317065453568"))),(t&32)!=0&&(n=We(n,new oe("18417254355718170624"))),(t&64)!=0&&(n=We(n,new oe("18387811781193609216"))),(t&128)!=0&&(n=We(n,new oe("18329067761203558400"))),(t&256)!=0&&(n=We(n,new oe("18212142134806163456"))),(t&512)!=0&&(n=We(n,new oe("17980523815641700352"))),(t&1024)!=0&&(n=We(n,new oe("17526086738831433728"))),(t&2048)!=0&&(n=We(n,new oe("16651378430235570176"))),(t&4096)!=0&&(n=We(n,new oe("15030750278694412288"))),(t&8192)!=0&&(n=We(n,new oe("12247334978884435968"))),(t&16384)!=0&&(n=We(n,new oe("8131365268886854656"))),(t&32768)!=0&&(n=We(n,new oe("3584323654725218816"))),(t&65536)!=0&&(n=We(n,new oe("696457651848324352"))),(t&131072)!=0&&(n=We(n,new oe("26294789957507116"))),(t&262144)!=0&&(n=We(n,new oe("37481735321082"))),e>0&&(n=Ku.div(n)),n}static getTickFromPrice(e,t,n){return ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Mt)||e.lt(Nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new oe(t-64),o=Bp(n,32,128),s=new oe("8000000000000000","hex"),i=0,a=new oe(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;s.gt(new oe(0))&&i<Cu;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(s.mul(y)),s=s.shrn(1),i+=1}let c=a.shrn(32),m=o.add(c).mul(new oe(Ru)),d=cs(m.sub(new oe(Lu)),64,128).toNumber(),p=cs(m.add(new oe(Ou)),64,128).toNumber();return d==p?d:ee.getSqrtPriceX64FromTick(p).lte(e)?p:d}},xn=class{static getTickWithPriceAndTickspacing(e,t,n,o){let i=ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,n,o))/t;return i<0?i=Math.floor(i):i=Math.ceil(i),i*t}static roundPriceWithTickspacing(e,t,n,o){let s=xn.getTickWithPriceAndTickspacing(e,t,n,o),i=ee.getSqrtPriceX64FromTick(s);return ee.sqrtPriceX64ToPrice(i,n,o)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");let s=n.ushln(xr),i=t.sub(e);return o?te.mulDivRoundingUp(te.mulDivCeil(s,i,t),lt,e):te.mulDivFloor(s,i,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return o?te.mulDivCeil(n,t.sub(e),mt):te.mulDivFloor(n,t.sub(e),mt)}static getLiquidityFromTokenAmountA(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let s=n.mul(e).mul(t),i=t.sub(e),a=s.div(i);return o?te.mulDivRoundingUp(a,lt,as):a.shrn(xr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),te.mulDivFloor(n,as,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,o,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,o,!1);if(e.lt(n)){let i=ce.getLiquidityFromTokenAmountA(e,n,o,!1),a=ce.getLiquidityFromTokenAmountB(t,e,s);return i.lt(a)?i:a}else return ce.getLiquidityFromTokenAmountB(t,n,s)}static getAmountsFromLiquidity(e,t,n,o,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,o,s),amountB:new oe(0)};if(e.lt(n)){let i=ce.getTokenAmountAFromLiquidity(e,n,o,s),a=ce.getTokenAmountBFromLiquidity(t,e,o,s);return{amountA:i,amountB:a}}else return{amountA:new oe(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,o,s)}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,s,i,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,o,i),l=s?1+a:1-a,m=new oe(new V(u.toString()).mul(l).toFixed(0)),d=new oe(new V(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:o,slippage:s,add:i,epochInfo:a,amountAddFee:u}){var P,A,h,I;let c=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=ee.getSqrtPriceX64FromTick(t),m=ee.getSqrtPriceX64FromTick(n),d=i?1+s:1-s,p=ce.getAmountsFromLiquidity(c,l,m,o,i),[y,f]=[ke(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),ke(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,b]=[ke(new oe(new V(p.amountA.toString()).mul(d).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ke(new oe(new V(p.amountB.toString()).mul(d).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,u)];return{liquidity:o,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:b,expirationTime:Rt(y.expirationTime,f.expirationTime)}}},Tn=class{static swapCompute(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f=!1){if(d.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=i?Nt.add(lt):Mt.sub(lt)),i){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(Mt))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(de),b={amountSpecifiedRemaining:d,amountCalculated:de,sqrtPriceX64:m,tick:c>p?Math.min(p+le.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new oe(0)},P=p,A=n[p],h=0,I=!i&&A.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(y);){h>10;let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let S=Y.nextInitTick(A,b.tick,l,i,I),x=S||null,K=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let M=Re.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:o,exBitmapInfo:s},P,i);if(!M.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")}P=M.nextStartIndex;let{publicKey:U}=Ae(e,t,P);K=U,A=n[P];try{x=Y.firstInitializedTick(A,i)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==P&&K&&(b.accounts.push(K),p=P),T.tickNext<Ze?T.tickNext=Ze:T.tickNext>tt&&(T.tickNext=tt),T.sqrtPriceNextX64=ee.getSqrtPriceX64FromTick(T.tickNext);let O;if(i&&T.sqrtPriceNextX64.lt(y)||!i&&T.sqrtPriceNextX64.gt(y)?O=y:O=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Tn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),g?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let M=x.liquidityNet;i&&(M=M.mul(Gt)),b.liquidity=ce.addDelta(b.liquidity,M)}I=T.tickNext!=b.tick&&!i&&A.startTickIndex===T.tickNext,b.tick=i?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let M=ee.getTickFromSqrtPriceX64(b.sqrtPriceX64);I=M!=b.tick&&!i&&A.startTickIndex===M,b.tick=M}++h}try{let{nextStartIndex:T,isExist:S}=le.nextInitializedTickArray(b.tick,l,i,o,s);S&&p!==T&&(b.accounts.push(Ae(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:de,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,o,s){let i={sqrtPriceX64Next:new oe(0),amountIn:new oe(0),amountOut:new oe(0),feeAmount:new oe(0)},a=e.gte(t),u=o.gte(de);if(u){let l=te.mulDivFloor(o,Ko.sub(new oe(s.toString())),Ko);i.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(i.amountIn)?i.sqrtPriceX64Next=t:i.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromInput(e,n,l,a)}else i.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),o.mul(Gt).gte(i.amountOut)?i.sqrtPriceX64Next=t:i.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromOutput(e,n,o.mul(Gt),a);let c=t.eq(i.sqrtPriceX64Next);return a?(c&&u||(i.amountIn=ce.getTokenAmountAFromLiquidity(i.sqrtPriceX64Next,e,n,!0)),c&&!u||(i.amountOut=ce.getTokenAmountBFromLiquidity(i.sqrtPriceX64Next,e,n,!1))):(i.amountIn=c&&u?i.amountIn:ce.getTokenAmountBFromLiquidity(e,i.sqrtPriceX64Next,n,!0),i.amountOut=c&&!u?i.amountOut:ce.getTokenAmountAFromLiquidity(e,i.sqrtPriceX64Next,n,!1)),!u&&i.amountOut.gt(o.mul(Gt))&&(i.amountOut=o.mul(Gt)),u&&!i.sqrtPriceX64Next.eq(t)?i.feeAmount=o.sub(i.amountIn):i.feeAmount=te.mulDivCeil(i.amountIn,new oe(s),Ko.sub(new oe(s))),[i.sqrtPriceX64Next,i.amountIn,i.amountOut,i.feeAmount]}};var Fe=60,hn=512,Y=class{static getTickArrayAddressByTick(e,t,n,o){let s=Y.getTickArrayStartIndexByTick(n,o),{publicKey:i}=Ae(e,t,s);return i}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=Y.getTickArrayStartIndexByTick(e,t),o=Math.floor((e-n)/t);if(o<0||o>=Fe)throw new Error("tick offset in array overflow");return o}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),o=e/n;return e<0&&e%n!=0?o=Math.ceil(o)-1:o=Math.floor(o),o}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Fe,o=Math.floor(e/n)+512;return Math.abs(o)}static checkTickArrayIsInitialized(e,t,n){let o=n*Fe,s=Math.floor(t/o)+512,i=Math.abs(s);return{isInitialized:e.testn(i),startIndex:(i-512)*o}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Fe:e+t*Fe}static mergeTickArrayBitmap(e){let t=new Sp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,o,s){let i=Math.floor(o/(n*Fe));return[...Y.searchLowBitFromStart(e,t,i-1,s,n),...Y.searchHightBitFromStart(e,t,i,s,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return Y.searchHightBitFromStart(e,t,0,hn,n)}static getAllInitializedTickArrayInfo(e,t,n,o,s){let i=[],a=Y.getAllInitializedTickArrayStartIndex(n,o,s);for(let u of a){let{publicKey:c}=Ae(e,t,u);i.push({tickArrayStartIndex:u,tickArrayAddress:c})}return i}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,o,s){let i=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Y.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(i[c].testn(l)&&a.push(n),n--,a.length===o)break}let u=le.tickCount(s);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,o,s){let i=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Y.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(i[c].testn(l)&&a.push(n),n++,a.length===o)break}let u=le.tickCount(s);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ze||e>tt}static nextInitTick(e,t,n,o,s){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(o)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(s||(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 o=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:o}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),s=xn.getTickWithPriceAndTickspacing(o,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),i=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let o=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:o}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),s=xn.getTickWithPriceAndTickspacing(o,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),i=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}};var Vu=N([ye(8),v("bump"),Lt("index"),B(""),je("protocolFeeRate"),je("tradeFeeRate"),Lt("tickSpacing"),G(w(),8,"")]),Kp=N([je("blockTimestamp"),Q("sqrtPriceX64"),Q("cumulativeTimePriceX64"),G(Q(),1,"")]),ls=N([ye(8),Xe("initialized"),B("poolId"),G(Kp,1e3,"observations"),G(Q(),5,"")]),Cp=N([v("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Q("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),Q("rewardGrowthGlobalX64")]),In=N([ye(8),v("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),v("mintDecimalsA"),v("mintDecimalsB"),Lt("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Ge("tickCurrent"),Lt("observationIndex"),Lt("observationUpdateDuration"),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),v("status"),G(v(),7,""),G(Cp,3,"rewardInfos"),G(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),G(w(),15*4-3,"padding")]),Rp=N([Q("growthInsideLastX64"),w("rewardAmountOwed")]),Co=N([ye(8),v("bump"),B("nftMint"),B("poolId"),Ge("tickLower"),Ge("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(Rp,3,"rewardInfos"),G(w(),8,"")]),MT=N([ye(8),v("bump"),B("poolId"),Ge("tickLowerIndex"),Ge("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(Q(),3,"rewardGrowthInside"),G(w(),8,"")]),Lp=N([Ge("tick"),Fa("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),G(Q(),3,"rewardGrowthsOutsideX64"),G(je(),13,"")]),Br=N([ye(8),B("poolId"),Ge("startTickIndex"),G(Lp,Fe,"ticks"),v("initializedTickCount"),G(v(),115,"")]),Eu=N([ye(329),G(B(),100,"whitelistMints")]),_u=N([ye(8),B("poolId"),G(G(w(),8),us,"positiveTickArrayBitmap"),G(G(w(),8),us,"negativeTickArrayBitmap")]);var Du=ue("Raydium_Clmm"),Bt={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]},Se=class{static createPoolInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([Q("sqrtPriceX64"),w("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},b);let P=Buffer.from([...Bt.createPool,...b]);return new xt({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:o,mintA:s,mintB:i,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Qe({fromPublicKey:o,programId:n}),[d,p]=[new q(s.address),new q(i.address)],y=[Gn.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(ls.span),space:ls.span,programId:n})],{publicKey:f}=Bu(n,a,d,p),{publicKey:g}=ss(n,f,d),{publicKey:b}=ss(n,f,p);return y.push(this.createPoolInstruction(n,f,o,a,m.publicKey,d,g,new q(s.programId||ze),p,b,new q(i.programId||ze),ct(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let M=N([Ge("tickLowerIndex"),Ge("tickUpperIndex"),Ge("tickArrayLowerStartIndex"),Ge("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),v("optionBaseFlag"),Xe("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:i,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:rt,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:Fu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(M.span);M.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},H);let Z=Buffer.from([...Bt.openPosition,...H]);return new xt({keys:F,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,liquidity:i,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=ms.generate();m.push(x),y=x.publicKey}let f=Y.getTickArrayStartIndexByTick(o,e.config.tickSpacing),g=Y.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=Ae(d,p,f),{publicKey:P}=Ae(d,p,g),{publicKey:A}=ge(n.wallet,y,ze),{publicKey:h}=Bo(y),{publicKey:I}=yt(d,y),{publicKey:T}=kn(d,p,o,s),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),o,s,f,g,i,a,u,c);return{signers:m,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,base:i,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=ms.generate();m.push(x),y=x.publicKey}let f=Y.getTickArrayStartIndexByTick(o,e.config.tickSpacing),g=Y.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=Ae(d,p,f),{publicKey:P}=Ae(d,p,g),{publicKey:A}=ge(n.wallet,y,ze),{publicKey:h}=Bo(y),{publicKey:I}=yt(d,y),{publicKey:T}=kn(d,p,o,s),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),o,s,f,g,c,i,a,u,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?ct(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let M=N([Ge("tickLowerIndex"),Ge("tickUpperIndex"),Ge("tickArrayLowerStartIndex"),Ge("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),v("optionBaseFlag"),Xe("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:i,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:rt,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:Fu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(M.span);M.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:new vu(0),amountMaxA:S==="MintA"?x:K,amountMaxB:S==="MintA"?K:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},H);let Z=Buffer.from([...Bt.openPosition,...H]);return new xt({keys:F,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,liquidity:i,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new q((await l(1))[0]);else{let x=ms.generate();d.push(x),m=x.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=Y.getTickArrayStartIndexByTick(o,e.config.tickSpacing),g=Y.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=Ae(p,y,f),{publicKey:P}=Ae(p,y,g),{publicKey:A}=ge(n.wallet,m,ze),{publicKey:h}=Bo(m),{publicKey:I}=yt(p,m),{publicKey:T}=kn(p,y,o,s),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(t.mintA.address),new q(t.mintB.address),o,s,f,g,i,a,u,c,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?ct(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,o,s){let i=N([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);i.encode({},u);let c=Buffer.from([...Bt.closePosition,...u]);return new xt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o}){let s=new q(e.programId),{publicKey:i}=ge(n.wallet,o.nftMint,ze),{publicKey:a}=yt(s,o.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,o.nftMint,i,a)),{address:{positionNftAccount:i,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P){let A=N([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),Xe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,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:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...Bt.increaseLiquidity,...T]);return new xt({keys:I,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:s,amountMaxA:i,amountMaxB:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Y.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Y.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Ae(u,c,l),{publicKey:p}=Ae(u,c,m),{publicKey:y}=ge(o.wallet,n.nftMint,ze),{publicKey:f}=yt(u,n.nftMint),{publicKey:g}=kn(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,o.wallet,y,f,c,g,d,p,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,i,a,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[b],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:s,baseAmount:i,otherAmountMax:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Y.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Y.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Ae(u,c,l),{publicKey:p}=Ae(u,c,m),{publicKey:y}=ge(o.wallet,n.nftMint,ze),{publicKey:f}=yt(u,n.nftMint),{publicKey:g}=kn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,o.wallet,y,f,c,g,d,p,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,i,a,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P){let A=N([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),Xe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,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:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:new vu(0),amountMaxA:f==="MintA"?g:b,amountMaxB:f==="MintA"?b:g,baseFlag:f==="MintA",optionBaseFlag:1},T);let S=Buffer.from([...Bt.increaseLiquidity,...T]);return new xt({keys:I,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=N([Q("liquidity"),w("amountMinA"),w("amountMinB")]),I=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{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:i,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:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I],S=Buffer.alloc(h.span);h.encode({liquidity:g,amountMinA:b,amountMinB:P},S);let x=Buffer.from([...Bt.decreaseLiquidity,...S]);return new xt({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:s,amountMinA:i,amountMinB:a,programId:u}){let[c,l]=[new q(e.programId),new q(e.id)],m=Y.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=Y.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Ae(c,l,m),{publicKey:y}=Ae(c,l,d),{publicKey:f}=ge(o.wallet,n.nftMint,u),{publicKey:g}=yt(c,n.nftMint),{publicKey:b}=kn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new q(t.rewardInfos[h].vault),ownerRewardVault:o.rewardAccounts[h],rewardMint:new q(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,o.wallet,f,g,l,b,p,y,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),P,s,i,a,Re.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ct(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:b},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b){let P=N([w("amount"),w("otherAmountThreshold"),Q("sqrtPriceLimitX64"),Xe("isBaseInput")]),A=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],I=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},I);let T=Buffer.from([...Bt.swap,...I]);return new xt({keys:h,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:s,amountIn:i,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new q(e.programId),new q(e.id)],[d,p]=[new q(t.vault.A),new q(t.vault.B)],[y,f]=[new q(e.mintA.address),new q(e.mintB.address)],g=e.mintA.address===s.toString(),b=[this.swapInstruction(l,o.wallet,m,new q(e.config.id),g?o.tokenAccountA:o.tokenAccountB,g?o.tokenAccountB:o.tokenAccountA,g?d:p,g?p:d,g?y:f,g?f:y,c,n,i,a,u,!0,ct(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,o,s,i,a,u,c,l,m,d){let p=N([w("openTime"),w("endTime"),Q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:z(l),endTime:z(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...Bt.initReward,...f]);return new xt({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[s,i]=[new q(e.programId),new q(e.id)],a=Su(s,i,o.mint).publicKey,u=Ir(s).publicKey,c=[this.initRewardInstruction(s,n.wallet,i,u,new q(e.config.id),n.tokenAccount,o.programId,o.mint,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,o,s,i,a,u,c,l,m,d){let p=N([v("rewardIndex"),Q("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:z(l),endTime:z(m)},f);let g=Buffer.from([...Bt.setRewardEmissions,...f]);return new xt({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[s,i]=[new q(e.programId),new q(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===o.mint.toString()&&(a=d,u=new q(t.rewardInfos[d].vault),c=new q(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Du.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Ir(s).publicKey,m=[this.setRewardInstruction(s,n.wallet,i,l,new q(e.config.id),n.tokenAccount,u,c,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,o,s,i,a){let u=N([v("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:Nn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Bt.collectReward,...l]);return new xt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[s,i]=[new q(e.programId),new q(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,u=new q(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Du.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(s,n.wallet,i,n.tokenAccount,u,o,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:o,amountOut:s,amountInMax:i,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new q(e.programId),new q(e.id)],[m,d]=[new q(t.vault.A),new q(t.vault.B)],[p,y]=[new q(e.mintA.address),new q(e.mintB.address)],f=e.mintA.address===o.toString(),g=[this.swapInstruction(c,n.wallet,l,new q(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,s,i,a,!1)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Xu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _p}from"@solana/spl-token";import{PublicKey as Np}from"@solana/web3.js";import Wu from"bn.js";var qu=new Wu(25),Uu=new Wu(1e4),Op={4:3,5:3};var Mp=ue("Raydium_liquidity_serum");function Gu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,o;for(;n<100;){try{let s=t.concat(Buffer.from([n]),Buffer.alloc(7));o=Np.createProgramAddressSync(s,r)}catch(s){if(s instanceof TypeError)throw s;n++;continue}return{publicKey:o,nonce:n}}throw Mp.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import Cr from"bn.js";function fs({programId:r}){let{publicKey:e}=se([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function Bn({name:r,programId:e,marketId:t}){let{publicKey:n}=se([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Vp({programId:r,marketId:e}){let{publicKey:t}=se([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function ys({programId:r}){return se([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function zu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:s,quoteDecimals:i,programId:a,marketProgramId:u}){let c=Bn({name:"amm_associated_seed",programId:a,marketId:t}),l=Bn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=ys({programId:a}),p=Bn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Bn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Bn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=Vp({programId:a,marketId:t}),b=Bn({name:"target_associated_seed",programId:a,marketId:t}),P=Bn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=Gu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:s,quoteDecimals:i,lpDecimals:s,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:g,targetOrders:b,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Xu.default,configId:fs({programId:a})}}var ds;async function dI({connection:r,poolKeysList:e,config:t}){ds||(ds=new Wn({connection:r}),await ds.initStableModelLayout());let n=e.map(i=>ku({poolKeys:i}));return(await ba(r,n.map(i=>i.instruction),"GetPoolData")).map(i=>{let a=ga(i,"GetPoolData"),u=new Cr(vt(a,"status")),c=Number(vt(a,"coin_decimals")),l=Number(vt(a,"pc_decimals")),m=Number(vt(a,"lp_decimals")),d=new Cr(vt(a,"pool_coin_amount")),p=new Cr(vt(a,"pool_pc_amount")),y=new Cr(vt(a,"pool_lp_supply")),f="0";try{f=vt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new Cr(f)}})}var ps={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Yu=r=>{let e={},t=_p.toBase58();return Object.keys(r).map(n=>{let o=r[n],[s,i]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:wn({address:s,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:wn({address:i,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new V(o.baseReserve.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(o.quoteReserve.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new V(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:ps,week:ps,month:ps,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:Xu.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:wn({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())})}}),e};import st from"bn.js";var Rr=class extends Be{constructor(t){super(t);this.stableLayout=new Wn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:o,baseIn:s}){let i=new st(new V(n).mul(10**t[s?"mintA":"mintB"].decimals).toFixed(0)),a=To(t[s?"mintB":"mintA"]),[u,c]=[new st(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new st(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new st(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",s?t.mintA.symbol:t.mintB.symbol,"amountIn:",i.toString(),"anotherToken:",s?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=s?"base":"quote";this.logDebug("input side:",m);let d=Ee;i.isZero()||(d=m==="base"?eo(i.mul(c),u):eo(i.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=eo(i.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ve(new st(1)).add(o).mul(d).quotient,g=new fe(a,d),b=new fe(a,f);return this.logDebug("anotherAmount:",g.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:g,maxAnotherAmount:b,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:o,amountInB:s,fixedSide:i,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",s),(o.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:s.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[o.token,s.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let b=await l.getCreatedTokenAccount({mint:new Oe(n.lpMint.address)}),P=[p,y],A=[f,g],h=[o.raw,s.raw],I=o.token.mint.toBase58()===n.mintA.address?"base":"quote",T="base";["quote","base"].includes(I)||this.logAndCreateError("invalid fixedSide","fixedSide",i),I==="quote"?(P.reverse(),A.reverse(),h.reverse(),T=i==="a"?"quote":"base"):I==="base"&&(T=i==="a"?"base":"quote");let[S,x]=P,[K,O]=A,[M,U]=h,F=await this.getAmmPoolKeys(n.id),H=this.createTxBuilder(),ln=await l.handleTokenAccount({side:"in",amount:M,mint:S.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Z}=ln,W=Ie(ln,["tokenAccount"]);H.addInstruction(W);let Vt=await l.handleTokenAccount({side:"in",amount:U,mint:x.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:pt}=Vt,Cn=Ie(Vt,["tokenAccount"]);H.addInstruction(Cn);let Rn=await l.handleTokenAccount({side:"out",amount:0,mint:new Oe(n.lpMint.address),tokenAccount:b,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:cn}=Rn,Yt=Ie(Rn,["tokenAccount"]);return H.addInstruction(Yt),H.addInstruction({instructions:[Au({poolInfo:n,poolKeys:F,userKeys:{baseTokenAccount:Z,quoteTokenAccount:pt,lpTokenAccount:cn,owner:this.scope.ownerPubKey},baseAmountIn:M,quoteAmountIn:U,fixedSide:T})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),H.addCustomComputeBudget(c),u===0&&await H.buildV0(),H.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:o,config:s,txVersion:i,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Oe(n.mintA.address),new Oe(n.mintB.address),new Oe(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),g=this.createTxBuilder(),{bypassAssociatedCheck:b,checkCreateATAOwner:P}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:A}=S,h=Ie(S,["tokenAccount"]);g.addInstruction(h);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:I}=x,T=Ie(x,["tokenAccount"]);return g.addInstruction(T),g.addInstruction({instructions:[rs({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(a),i===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:s,farmInfo:i,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Ro,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder();g.addCustomComputeBudget(c);let b={};for(let W of this.scope.account.tokenAccountRawInfos)(b[W.accountInfo.mint.toString()]===void 0||ge(this.scope.ownerPubKey,W.accountInfo.mint,Ro).publicKey.equals(W.pubkey))&&(b[W.accountInfo.mint.toString()]=W.pubkey);let P=b[t.lpMint.address];if(P===void 0)throw Error("find lp account error in trade accounts");let A=o.add(a!=null?a:new st(0)),h=t.mintA.address===pe.WSOL.mint.toString(),I=t.mintB.address===pe.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ro,mint:new Oe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ro,mint:new Oe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(K||{}),x===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=x,i!==void 0&&!(a!=null&&a.isZero())){let W=ft[i.programId],pt=He({programId:new Oe(i.programId),poolId:new Oe(i.id),owner:this.scope.ownerPubKey,version:W}),Cn,cn=await this.scope.connection.getAccountInfo(pt);if(cn&&(Cn=Dn(W).decode(cn.data)),W!==6&&!Cn){let{instruction:jt,instructionType:Wo}=ho({id:new Oe(i.id),programId:new Oe(i.programId),version:W,ledger:pt,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[jt],instructionTypes:[Wo]})}let Yt=[];for(let jt of i.rewardInfos){let Wo=jt.mint.address===pe.WSOL.mint.toString();if(b[jt.mint.address])Yt.push(b[jt.mint.address]);else{let{account:Os,instructionParams:Ns}=await this.scope.account.getOrCreateTokenAccount({mint:new Oe(jt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Wo,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Os||this.logAndCreateError("farm reward account not found:",jt.mint.address),Ns&&g.addInstruction(Ns),Yt.push(Os)}}let ln=(await this.scope.api.fetchFarmKeysById({ids:i.id}))[0],Vt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:i,farmKeys:ln,lpAccount:P,rewardAccounts:Yt},Rn=ft[i.programId],Ic=Rn===6?wr(Vt):Rn===5?Ar(Vt):Pr(Vt),xc={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};g.addInstruction({instructions:[Ic],instructionTypes:[xc[Rn]]})}let O=await this.getAmmPoolKeys(t.id),M=rs({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:P,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:A});g.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[U,F]=t.mintA.address===n.mintA.address?[T,x]:[x,T],H=await this.scope.clmm.getClmmPoolKeys(t.id),Z=await Se.openPositionFromBaseInstructions(D(C({poolInfo:n,poolKeys:H,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:F},withMetadata:"create"},s),{base:u,getEphemeralSigners:y}));return g.addInstruction({instructions:[...Z.instructions],signers:Z.signers,instructionTypes:[...Z.instructionTypes],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),f===0?g.sizeCheckBuildV0():g.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:s,baseAmount:i,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var U;let g=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),b=c.useSOLBalance&&o.mint.equals(ju),P=c.useSOLBalance&&s.mint.equals(ju),A=this.createTxBuilder(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:b?{payer:g,amount:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:m});A.addInstruction(I||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:g,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),h===void 0||T===void 0)throw Error("you don't has some token account");let x=zu({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:s.mint,baseDecimals:o.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:O,instructionType:M}=Pu(D(C({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:T,userLpVault:ge(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:i,pcAmount:a}));return A.addInstruction({instructions:[O],instructionTypes:[M]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=fs({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return mu.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:s,slippage:i}){let[a,u]=[o.toString(),s.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.programId===sr.toBase58(),g;if(f)g=new V(y.toString()).div(p.toString());else{let O=bu(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?g=new V(1e6).div(O*1e6):g=new V(O*1e6).div(1e6)}let b=n,P=new st(0),A=new st(0);if(!b.isZero())if(f){A=en(b.mul(qu),Uu);let O=b.sub(A),M=p.add(O);P=y.mul(O).div(M)}else{A=b.mul(new st(2)).div(new st(1e4));let O=b.sub(A);d==="quote"?P=new st(fu(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber())):P=new st(yu(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber()))}let h=new st(new V(P.toString()).mul(1-i).toFixed(0)),I=P,T=h,S=new V(P.toString()).div(new V(b.sub(A).toString()).toFixed(0));!b.isZero()&&!P.isZero()&&(S=new V(P.toString()).div(b.sub(A).toString()));let x=g.sub(S).div(g).mul(100);return{amountOut:I,minAmountOut:T,currentPrice:g,executionPrice:S,priceImpact:x,fee:A}}async swap({poolInfo:t,amountIn:n,amountOut:o,inputMint:s,fixedSide:i,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new Oe(l.address),programId:new Oe(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Oe(m.address),programId:new Oe(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Oe(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Ie(h,["tokenAccount"]);c.addInstruction(f);let I=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Oe(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=I,b=Ie(I,["tokenAccount"]);c.addInstruction(b);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[Io({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:n,amountOut:o,fixedSide:i})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await ot(this.scope.connection,t.map(l=>({pubkey:new Oe(l)})),n),s={},i=[];for(let l=0;l<t.length;l++){let m=o[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=hr.decode(m.accountInfo.data);s[String(t[l])]=D(C({},d),{programId:m.accountInfo.owner}),i.push(d.baseVault,d.quoteVault)}let a={},u=await ot(this.scope.connection,i.map(l=>({pubkey:new Oe(l)})),n);for(let l=0;l<i.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+i[l]);a[String(i[l])]=new st(Ep.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(s)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=D(C({},m),{baseReserve:d,quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(m.quoteDecimal.toString())).div(new V(d.toString()).div(new V(10).pow(m.baseDecimal.toString())))})}return c}};import{PublicKey as ae}from"@solana/web3.js";import bt from"bn.js";import{TOKEN_PROGRAM_ID as Qu}from"@solana/spl-token";var Lr=class extends Be{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ae.default,mint1:o,mint2:s,ammConfig:i,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new bt(new ae(o.address).toBuffer()).gt(new bt(new ae(s.address).toBuffer()))?[s,o,new V(1).div(a)]:[o,s,a],g=ee.priceToSqrtPriceX64(f,p.decimals,y.decimals),b=await Se.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:i.id,initialPriceX64:g,startTime:u,forerunCreate:l});return d.addInstruction(b),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:D(C({},b.address),{programId:t.toString(),id:b.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:b.address.mintAVault.toString(),B:b.address.mintBVault.toString()},rewardInfos:[],config:{id:i.id.toString(),index:i.index,protocolFeeRate:i.protocolFeeRate,tradeFeeRate:i.tradeFeeRate,tickSpacing:i.tickSpacing,fundFeeRate:i.fundFeeRate,description:i.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:b.address.poolId.toString(),mintA:p,mintB:y,feeRate:i.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:i.id.toString(),index:i.index,protocolFeeRate:i.protocolFeeRate,tradeFeeRate:i.tradeFeeRate,tickSpacing:i.tickSpacing,fundFeeRate:i.fundFeeRate,description:i.description,defaultRange:0,defaultRangePoint:[]}},Nu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:s,base:i,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),g=null,b=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),A=n.useSOLBalance&&e.mintB.address===J.toString(),[h,I]=i==="MintA"?[a,u]:[u,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(g=T),f.addInstruction(S||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||I.isZero()?{payer:this.scope.ownerPubKey,amount:I}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(K||{}),(!g||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let O=t||await this.getClmmPoolKeys(e.id),M=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:O,ownerInfo:D(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b}),tickLower:o,tickUpper:s,base:i,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(M),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:M.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:o,amountMaxB:s,tickLower:i,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,g=null,b=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:b?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:I,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(g=I),y.addInstruction(T||{}),(f===void 0||g===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Se.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},tickLower:i,tickUpper:a,liquidity:u,amountMaxA:o,amountMaxB:s,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:o,amountMaxB:s,liquidity:i,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:i,amountMaxA:o,amountMaxB:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:o,baseAmount:s,otherAmountMax:i,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(o==="MintA"?s:i).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?s:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(o==="MintA"?i:s).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?i:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:o,baseAmount:s,otherAmountMax:i});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:o,amountMinA:s,amountMinB:i,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=o.useSOLBalance&&t.mintA.address===J.toString(),y=o.useSOLBalance&&t.mintB.address===J.toString(),f,g,{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=b,P&&d.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});g=A,h&&d.addInstruction(h);let I=[];for(let K of t.rewardDefaultInfos){let O=o.useSOLBalance&&K.mint.address===J.toString(),M;if(K.mint.address===t.mintA.address)M=f;else if(K.mint.address===t.mintB.address)M=g;else{let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(K.mint.programId),mint:new ae(K.mint.address),notUseTokenAccount:O,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});M=U,F&&d.addInstruction(F)}I.push(M)}!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=await this.getClmmPoolKeys(t.id),S=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:I},liquidity:a,amountMinA:s,amountMinB:i});d.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let x=C({},S.address);if(o.closePosition){let K=await Se.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=C(C({},x),K.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),s=await this.getClmmPoolKeys(e.id),i=Se.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return o.addInstruction(i).versionBuild({txVersion:n,extInfo:{address:i.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:o,checkCreateATAOwner:s});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Se.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:o,checkCreateATAOwner:s});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=Se.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ae(l.mint.programId),mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});c=C(C({},c),g.address),u.addInstruction(g)}return u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(J),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:o,checkCreateATAOwner:s});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Se.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:i,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new bt(new V(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:o,checkCreateATAOwner:s});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Se.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});u.addInstruction(f),c=C(C({},c),f.address)}return u.addCustomComputeBudget(i),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1}){let i=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());i||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(i.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:o,checkCreateATAOwner:s});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Se.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1}){let i=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:o,checkCreateATAOwner:s});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&i.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Se.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});i.addInstruction(y),a=C(C({},a),y.address)}return i.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:o,priceLimit:s,observationId:i,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===J.toBase58(),y=a.useSOLBalance&&e.mintB.address===J.toBase58(),f;!s||s.equals(new V(0))?f=t.toString()===e.mintA.address?Nt.add(new bt(1)):Mt.sub(new bt(1)):f=ee.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let g;if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});g=A,h&&d.addInstruction(h)}let b;if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});b=A,h&&d.addInstruction(h)}(!g||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return d.addInstruction(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b},inputMint:new ae(t),amountIn:n,amountOutMin:o,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:o=!0,checkCreateATAOwner:s=!1,programId:i,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)o?ge(this.scope.ownerPubKey,m.accountInfo.mint,i).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),y=n.useSOLBalance&&d.mintB.address===J.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ae(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:o,checkCreateATAOwner:s});f=A,h&&l.addInstruction(h)}let g=c[d.mintB.address];if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ae(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:o,checkCreateATAOwner:s});g=A,h&&l.addInstruction(h)}c[d.mintA.address]=f,c[d.mintB.address]=g;let b=[];for(let A of d.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===J.toString(),I=c[A.mint.address];if(!I){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(A.mint.programId),mint:new ae(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:o});I=T,S&&l.addInstruction(S)}c[A.mint.address]=I,b.push(I)}let P=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let h=Se.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:b},liquidity:new bt(0),amountMinA:new bt(0),amountMinB:new bt(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Ir(e).publicKey);return t?Eu.decode(t.data).whitelistMints.filter(o=>!o.equals(ae.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(i=>i.accountInfo.amount.eq(new bt(1))).map(i=>yt(new ae(e),i.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),s=[];return o.forEach(i=>{if(!i)return;let a=Co.decode(i.data);s.push(a)}),s}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await ot(this.scope.connection,e.map(s=>({pubkey:new ae(s)})),t),o={};for(let s=0;s<e.length;s++){let i=n[s];if(i===null||!i.accountInfo)throw Error("fetch pool info error: "+String(e[s]));let a=In.decode(i.accountInfo.data),u=ee.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[s])]=D(C({},a),{currentPrice:u,programId:i.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(u=>e[u].ammConfig.toBase58())),o=await ot(this.scope.connection,Array.from(n).map(u=>({pubkey:new ae(u)}))),s={};o.forEach(u=>{!u.accountInfo||(s[u.pubkey.toBase58()]=Vu.decode(u.accountInfo.data))});let i=await Re.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(u=>{var m,d,p,y;let[c,l]=[e[u].mintA.toBase58(),e[u].mintB.toBase58()];return{id:u,programId:e[u].programId.toBase58(),mintA:wn({address:c,decimals:e[u].mintDecimalsA,programId:t[c].programId.toBase58()||Qu.toBase58(),extensions:{feeConfig:(m=t[c])!=null&&m.feeConfig?Hi((d=t[c])==null?void 0:d.feeConfig):void 0}}),mintB:wn({address:l,decimals:e[u].mintDecimalsB,programId:t[l].programId.toBase58()||Qu.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Hi((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[u].currentPrice,config:D(C({},s[e[u].ammConfig.toBase58()]),{id:e[u].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Re.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(i)});return{computeClmmPoolInfo:i,computePoolTickData:a}}};import{PublicKey as X}from"@solana/web3.js";import{NATIVE_MINT as Oo,TOKEN_PROGRAM_ID as un,AccountLayout as Zp}from"@solana/spl-token";var Fp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),vp=Buffer.from("amm_config","utf8"),Dp=Buffer.from("pool","utf8"),Wp=Buffer.from("pool_lp_mint","utf8"),qp=Buffer.from("pool_vault","utf8"),Up=Buffer.from("observation","utf8");function Gp(r){return se([Fp],r)}function Xp(r,e){return se([vp,jp(e)],r)}function zp(r,e,t,n){return se([Dp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Yp(r,e){return se([Wp,e.toBuffer()],r)}function Hu(r,e,t){return se([qp,e.toBuffer(),t.toBuffer()],r)}function Lo(r,e){return se([Up,e.toBuffer()],r)}function jp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Zu({programId:r,mintA:e,mintB:t}){let n=Xp(r,0).publicKey,o=Gp(r).publicKey,s=zp(r,n,e,t).publicKey,i=Yp(r,s).publicKey,a=Hu(r,s,e).publicKey,u=Hu(r,s,t).publicKey,c=Lo(r,s).publicKey;return{poolId:s,configId:n,authority:o,lpMint:i,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Or}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bs,TOKEN_2022_PROGRAM_ID as $u,ASSOCIATED_TOKEN_PROGRAM_ID as Qp}from"@solana/spl-token";var Hp=ue("Raydium_cpmm"),Nr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Ju(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=N([w("amountMaxA"),w("amountMaxB"),w("openTime")]),I=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Qp,isSigner:!1,isWritable:!1},{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1}],T=Buffer.alloc(h.span);return h.encode({amountMaxA:b,amountMaxB:P,openTime:A},T),new Or({keys:I,programId:r,data:Buffer.from([...Nr.initialize,...T])})}function ec(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],b=Buffer.alloc(f.span);return Hp.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},b),new Or({keys:g,programId:r,data:Buffer.from([...Nr.deposit,...b])})}function tc(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y){let f=N([w("lpAmount"),w("amountMinA"),w("amountMinB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ta,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},b),new Or({keys:g,programId:r,data:Buffer.from([...Nr.withdraw,...b])})}function nc(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y,f){let g=N([w("amountIn"),w("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountIn:y,amounOutMin:f},P),new Or({keys:b,programId:r,data:Buffer.from([...Nr.swapBaseInput,...P])})}function rc(r,e,t,n,o,s,i,a,u,c,l,m,d,p,y,f){let g=N([w("amountInMax"),w("amountOut")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountInMax:y,amountOut:f},P),new Or({keys:b,programId:r,data:Buffer.from([...Nr.swapBaseOutput,...P])})}import $e from"bn.js";var oc=N([ye(8),v("bump"),Xe("disableCreatePool"),Lt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),G(w(),16)]),ic=N([ye(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),v("bump"),v("status"),v("lpDecimals"),v("mintDecimalA"),v("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),G(w(),32)]);var Mr=class extends Be{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await this.scope.connection.getMultipleAccountsInfo(e.map(m=>new X(m))),o={},s=new Set,i=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=ic.decode(d.data);o[String(e[m])]=p,s.add(String(p.configId)),i.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...s],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new X(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=oc.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(i.map(m=>new X(m)));for(let m=0;m<i.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+i[m]);u[String(i[m])]=new $e(Zp.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(o)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=D(C({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(d.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(d.mintDecimalA)))})}return l}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:o,associatedOnly:s=!1,checkCreateATAOwner:i=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var U,F,H;let d=o.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new $e(new X(c.mintA.address).toBuffer()).lte(new $e(new X(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[g,b]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=o.useSOLBalance&&y.address===Oo.toBase58(),A=o.useSOLBalance&&f.address===Oo.toBase58(),[h,I]=[new X(y.address),new X(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:s,checkCreateATAOwner:i});T.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:new X(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:b}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:i});if(T.addInstruction(O||{}),S===void 0||K===void 0)throw Error("you don't has some token account");let M=Zu({programId:e,mintA:h,mintB:I});return T.addInstruction({instructions:[Ju(e,this.scope.ownerPubKey,M.configId,M.authority,M.poolId,h,I,M.lpMint,S,K,ge(this.scope.ownerPubKey,M.lpMint).publicKey,M.vaultA,M.vaultB,t,new X((F=y.programId)!=null?F:un),new X((H=f.programId)!=null?H:un),M.observationId,g,b,n)],instructionTypes:[E.CpmmCreatePool]}),T.addCustomComputeBudget(u),T.versionBuild({txVersion:a,extInfo:{address:D(C({},M),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:o,slippage:s,computeResult:i,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=i?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:g}=i||this.computePairAmount({poolInfo:D(C({},t),{lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new Ve(0),baseIn:o,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(o?t.mintA.decimals:t.mintB.decimals))}),b=g.amount,P=t.mintA.address===Oo.toString(),A=t.mintB.address===Oo.toString(),h=this.createTxBuilder(),[I,T]=[new X(t.mintA.address),new X(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(o?n:b).isZero()?{payer:this.scope.ownerPubKey,amount:o?n:b}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(o?b:n).isZero()?{payer:this.scope.ownerPubKey,amount:o?b:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(O||{}),!S&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let M=await l.getCreatedTokenAccount({mint:new X(t.lpMint.address)}),W=await l.handleTokenAccount({side:"out",amount:0,mint:new X(t.lpMint.address),tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:U}=W,F=Ie(W,["tokenAccount"]);h.addInstruction(F);let H=await this.getCpmmPoolKeys(t.id),Z=new Ve(new $e(1)).sub(s);return h.addInstruction({instructions:[ec(new X(t.programId),this.scope.ownerPubKey,new X(H.authority),new X(t.id),U,S,K,new X(H.vault.A),new X(H.vault.B),I,T,new X(t.lpMint.address),i?i==null?void 0:i.liquidity:Z.mul(y).quotient,o?f.amount:b,o?b:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var U,F;let{poolInfo:t,lpAmount:n,slippage:o,computeBudgetConfig:s,txVersion:i}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new Ve(new $e(1)).sub(o),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[ke(c,t.mintA.extensions.feeConfig,m,!0),ke(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[g,b]=[new X(t.mintA.address),new X(t.mintB.address)],P=g.equals(J),A=b.equals(J),h,I,{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=T,S&&f.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});I=x,K&&f.addInstruction(K),(!h||!I)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let O=await y.getCreatedTokenAccount({mint:new X(t.lpMint.address)});O||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let M=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[tc(new X(t.programId),this.scope.ownerPubKey,new X(M.authority),new X(t.id),O,h,I,new X(M.vault.A),new X(M.vault.B),g,b,new X(t.lpMint.address),n,c.sub((U=d.fee)!=null?U:new $e(0)),l.sub((F=p.fee)!=null?F:new $e(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]}),f.addCustomComputeBudget(s),f.versionBuild({txVersion:i})}async swap(e){var I,T,K,O,M,U;let{poolInfo:t,baseIn:n,swapResult:o,slippage:s=0,config:i,computeBudgetConfig:a,txVersion:u}=e,{bypassAssociatedCheck:c,checkCreateATAOwner:l}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},i),m=this.createTxBuilder(),[d,p]=[new X(t.mintA.address),new X(t.mintB.address)],y=await this.scope.account.getCreatedTokenAccount({programId:new X((I=t.mintA.programId)!=null?I:un),mint:d,associatedOnly:!1}),f=await this.scope.account.getCreatedTokenAccount({programId:new X((T=t.mintB.programId)!=null?T:un),mint:p,associatedOnly:!1});o.destinationAmountSwapped=o.destinationAmountSwapped.mul(new $e((1-s)*1e4)).div(new $e(1e4));let S=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?o.sourceAmountSwapped:0,programId:new X(t.mintA.programId),mint:d,tokenAccount:y,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:g}=S,b=Ie(S,["tokenAccount"]);m.addInstruction(b);let x=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?0:o.sourceAmountSwapped,programId:new X(t.mintB.programId),mint:p,tokenAccount:f,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:P}=x,A=Ie(x,["tokenAccount"]);m.addInstruction(A),!g&&!P&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?nc(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),g,P,new X(h.vault.A),new X(h.vault.B),new X((K=t.mintA.programId)!=null?K:un),new X((O=t.mintB.programId)!=null?O:un),d,p,Lo(new X(t.programId),new X(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped):rc(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),P,g,new X(h.vault.B),new X(h.vault.A),new X((M=t.mintB.programId)!=null?M:un),new X((U=t.mintA.programId)!=null?U:un),p,d,Lo(new X(t.programId),new X(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:u})}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:o,slippage:s,epochInfo:i,baseIn:a}){var P,A,h,I,T,S,x,K;let u=1-Number(s.toSignificant())/100,c=new $e(new V(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=ke(c,e[a?"mintA":"mintB"].extensions.feeConfig,i,!1),m=c.sub((P=l.fee)!=null?P:new $e(0)),d=new $e(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(h=(A=l.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${s.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:Ee,fee:void 0,expirationTime:void 0};if(!m.isZero()){let O=$p(y,t,n,d);this.logDebug("lpAmountData:",{amountA:O.amountA.toString(),amountB:O.amountB.toString()}),f=ke(O[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,i,!0)}let g=new Ve(new $e(1)).add(s),b=ke(g.mul(f.amount.sub((I=f.fee)!=null?I:new $e(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",b.amount.toString(),"maxAnotherAmountFee:",(K=(x=b.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:b,liquidity:y}}};function $p(r,e,t,n){let o=r.mul(e).div(n);!o.isZero()&&!r.mul(e).mod(n).isZero()&&(o=o.add(new $e(1)));let s=r.mul(t).div(n);return!s.isZero()&&!r.mul(t).mod(n).isZero()&&(s=s.add(new $e(1))),{amountA:o,amountB:s}}import{PublicKey as Sn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as dt,TOKEN_2022_PROGRAM_ID as hs,createTransferInstruction as ef}from"@solana/spl-token";import _o from"bn.js";import{TOKEN_PROGRAM_ID as As,TOKEN_2022_PROGRAM_ID as gs}from"@solana/spl-token";import{PublicKey as gt,TransactionInstruction as Ps,SystemProgram as ac}from"@solana/web3.js";import ws from"bn.js";function wB(r,e,t,n,o,s,i,a,u,c,l,m){let d=N([v("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:ac.programId,isSigner:!1,isWritable:!1},{pubkey:As,isSigner:!1,isWritable:!1},{pubkey:new gt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new gt(t.id),isSigner:!1,isWritable:!0},{pubkey:new gt(n.id),isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=be(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=be(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new gt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=be(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new Ps({keys:p,programId:r,data:y})}function AB(r,e,t,n,o,s,i,a,u,c){let l=N([v("instruction")]),m=[{pubkey:ac.programId,isSigner:!1,isWritable:!1},{pubkey:As,isSigner:!1,isWritable:!1},{pubkey:new gt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new gt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new gt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=be(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=be(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new gt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=be(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new Ps({keys:m,programId:r,data:d})}function sc(r,e,t,n,o,s){if(r.version===4){let i=be(e);return[{pubkey:i.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.authority,isSigner:!1,isWritable:!1},{pubkey:i.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:i.marketAuthority,isSigner:!1,isWritable:!0},{pubkey:i.openOrders,isSigner:!1,isWritable:!0},{pubkey:i.vault.A,isSigner:!1,isWritable:!0},{pubkey:i.vault.B,isSigner:!1,isWritable:!0},{pubkey:i.marketId,isSigner:!1,isWritable:!0},{pubkey:i.marketBids,isSigner:!1,isWritable:!0},{pubkey:i.marketAsks,isSigner:!1,isWritable:!0},{pubkey:i.marketEventQueue,isSigner:!1,isWritable:!0},...i.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:i.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:i.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0}]]}else if(r.version===5){let i=be(e);return[{pubkey:i.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.authority,isSigner:!1,isWritable:!1},{pubkey:i.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:new gt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:i.openOrders,isSigner:!1,isWritable:!0},{pubkey:i.vault.A,isSigner:!1,isWritable:!0},{pubkey:i.vault.B,isSigner:!1,isWritable:!0},{pubkey:i.marketId,isSigner:!1,isWritable:!0},{pubkey:i.marketBids,isSigner:!1,isWritable:!0},{pubkey:i.marketAsks,isSigner:!1,isWritable:!0},{pubkey:i.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0},{pubkey:i.id,isSigner:!1,isWritable:!0}]}else if(r.version===6){let i=r,a=be(e),u=i.mintA.address===t;return[{pubkey:new gt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,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:r.observationId,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(gs)||a.mintB.programId.equals(gs)?[{pubkey:gs,isSigner:!1,isWritable:!1},{pubkey:Nn,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}]:[],...(s!=null?s:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ct(new gt(String(r.programId)),new gt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else throw Error("make swap ins error")}function Jp(r,e,t,n,o,s,i,a,u,c,l,m,d,p){let y=N([v("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:As,isSigner:!1,isWritable:!1}];f.push(...sc(a,c,s,t,n,p[0])),f.push(...sc(u,l,i,n,o,p[1]));let g=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},g),new Ps({keys:f,programId:r,data:g})}function uc({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var o,s,i,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=be(m),p=t.equals(d.mintA.address)?Nt.add(lt):Mt.sub(lt);return Se.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((s=(o=n.minAmountOut.fee)==null?void 0:o.raw)!=null?s:new ws(0)),sqrtPriceLimitX64:p,remainingAccounts:(i=n.remainingAccounts[0])!=null?i:[]})}else{let m=n.poolKey[0];return{signers:[],instructions:[Io({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 ws(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.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:[Jp(r,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 ws(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var cc={[co.toBase58()]:3},lc={3:co};var ks=N([ye(5),ye(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),ye(7)]),mc={3:ks};import{PublicKey as dc}from"@solana/web3.js";var No=ue("Serum"),Mo=class{static getProgramId(e){let t=lc[e];return t||No.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=cc[t];return n||No.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=mc[e];return t||No.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()],o=0,s;for(;o<100;){try{let i=n.concat(Buffer.from([o]),Buffer.alloc(7));s=dc.createProgramAddressSync(i,e)}catch(i){if(i instanceof TypeError)throw i;o++;continue}return{publicKey:s,nonce:o}}return No.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:dc.default,nonce:o}}};var zt=new _o(0),_r=class extends Be{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(J));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:o=1}=e,s=await this.getWSolAccounts(),i=this.createTxBuilder();i.addCustomComputeBudget(e.computeBudgetConfig);let a=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});i.addInstruction(a);let u=z(t);for(let c=0;c<s.length;c++)u.gte(s[c].amount)?(i.addInstruction({instructions:[Wt({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(s[c].amount)):(i.addInstruction({instructions:[Wt({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),lr({destination:a.addresses.newAccount,source:s[c].publicKey,amount:u,owner:this.scope.ownerPubKey,tokenProgram:n}));return i.versionBuild({txVersion:o})}async wrapWSol(e,t,n){let o=await this.getWSolAccounts(),s=this.createTxBuilder(),i=await qt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return s.addInstruction(i),o.length&&s.addInstruction({instructions:[lr({destination:o[0].publicKey,source:i.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Wt({tokenAccount:i.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),s.versionBuild({txVersion:n!=null?n:1})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts(sr,{dataSlice:{offset:hr.offsetOf("baseMint"),length:64}}),t=N([B("baseMint"),B("quoteMint")]),n=e.map(a=>({id:a.pubkey,version:4,mintA:t.decode(a.account.data).baseMint,mintB:t.decode(a.account.data).quoteMint})),o=N([B("mintA"),B("mintB")]);return{clmmPools:(await this.scope.connection.getProgramAccounts(fi,{filters:[{dataSize:In.span}],dataSlice:{offset:In.offsetOf("mintA"),length:64}})).map(a=>{let u=o.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:o}){e=e.toString()===Sn.default.toString()?J:e,t=t.toString()===Sn.default.toString()?J:t;let s={},i={},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),i[l.id.toString()]=l),l.mintA.equals(e)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:dt,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:dt,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:dt,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:dt,in:[],out:[],mDecimals:0}),u[m].out.push(l)}}let c=[];for(let l of o)(l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),s[l.id.toBase58()]=l,c.push(l)),l.mintA.equals(e)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:dt,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:dt,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:dt,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:dt,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&&i[d.id.toString()]===void 0?i[d.id.toString()]=d:d.version!==6&&s[d.id.toString()]===void 0&&(s[d.id.toString()]=d),p.version===6&&i[p.id.toString()]===void 0?i[p.id.toString()]=p:p.version!==6&&s[p.id.toString()]===void 0&&(s[p.id.toString()]=p)}return{directPath:a,addLiquidityPools:c,routePathDict:u,needSimulate:Object.values(s),needTickArray:Object.values(i)}}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:s,slippage:i,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:P,executionPriceX64:A}=Re.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:i,epochInfo:s,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(g.toFixed()),fee:[b],remainingAccounts:[P],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:i,clmmExPriceX64:[A],expirationTime:Rt(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:i});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:Qi(D(C({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Qi(D(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new fe(u.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:i,clmmExPriceX64:[void 0]}}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:s,tickCache:i,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var b,P,A,h,I,T,S,x,K;let m=l===void 0?new _o(0):e.raw.mul(new _o(l.feeBps.toNumber())).div(new _o(1e4)),d=e.raw.sub(m),p=new fe(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=D(C({},t),{address:at(t.address).toString()}),g=[];for(let O of n)try{g.push(D(C({},this.computeAmountOut({itemPool:O,tickCache:i,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(M){this.logDebug("direct error",O.version,O.id.toString(),M.message)}this.logDebug("direct done");for(let[O,M]of Object.entries(o)){let U={chainId:101,address:O,programId:M.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:M.mDecimals,tags:[],extensions:{}},F=M.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:i,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:U,amountIn:p})}}catch(W){this.logDebug("route in error",Z.version,Z.id.toString(),W.message);return}}).sort((Z,W)=>{var cn,Yt,ln,Vt;let pt=Z===void 0?zt:Z.data.amountOut.amount.raw.sub((Yt=(cn=Z.data.amountOut.fee)==null?void 0:cn.raw)!=null?Yt:zt),Cn=W===void 0?zt:W.data.amountOut.amount.raw.sub((Vt=(ln=W.data.amountOut.fee)==null?void 0:ln.raw)!=null?Vt:zt);return pt.lt(Cn)?1:-1})[0];if(F===void 0)continue;let H=new fe(To(U),F.data.amountOut.amount.raw.sub((P=(b=F.data.amountOut.fee)==null?void 0:b.raw)!=null?P:zt));for(let Z of M.out)try{let W=this.computeAmountOut({itemPool:Z,tickCache:i,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:H});g.push(D(C({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new ve({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((h=(A=W.amountOut.fee)==null?void 0:A.raw)!=null?h:zt)}).toFixed()),priceImpact:new V(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,Z],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(I=W.amountOut.fee)!=null&&I.raw?new fe(F.data.amountOut.amount.token,((S=(T=F.data.amountOut.fee)==null?void 0:T.raw)!=null?S:zt).add((K=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?K:zt)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:Rt(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",Z.version,Z.id.toString(),W.message)}}return g.filter(O=>O.allTrade).sort((O,M)=>O.amountOut.amount.raw.sub(M.amountOut.amount.raw).gt(zt)?-1:1)}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:o,routeProgram:s,txVersion:i}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(J),m=c.amount.token.mint.equals(J),d=u.amount.token.mint,p=u.amount.token.isToken2022?hs:dt,y=c.amount.token.mint,f=c.amount.token.isToken2022?hs:dt,{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:P,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 h;if(e.routeType==="route"){let S=e.middleToken,{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.isToken2022?hs:dt,mint:S.mint,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:n.checkCreateATAOwner});h=x,K&&a.addInstruction(K)}let I=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),T=uc({routeProgram:s,inputMint:d,swapInfo:D(C({},e),{poolInfo:[...e.poolInfoList],poolKey:I}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:h,destinationToken:P}});return e.feeConfig!==void 0&&a.addInstruction({instructions:[ef(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]}),a.addInstruction(T),i===0?a.sizeCheckBuildV0({computeBudgetConfig:o,address:T.address}):a.sizeCheckBuild({computeBudgetConfig:o,address:T.address})}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let o=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 s=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(d=>d.id)),i=Yu(s);Object.values(i).forEach(d=>{o.delete(d.mintA.address),o.delete(d.mintB.address)}),console.log("fetching mints info, total: ",o.size);let a=await Aa({connection:this.scope.connection,mints:Array.from(o).map(d=>new Sn(d))});Object.values(i).forEach(d=>{a[d.mintA.address]={address:new Sn(d.mintA.address),programId:dt,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 Sn(d.mintB.address),programId:dt,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)=>D(C({},d),{[p]:D(C({},e.routePathDict[p]),{mintProgram:a[p].programId,mDecimals:a[p].decimals,in:e.routePathDict[p].in.map(y=>i[y.id.toBase58()]||c[y.id.toBase58()]),out:e.routePathDict[p].out.map(y=>i[y.id.toBase58()]||c[y.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:s,ammSimulateCache:i,clmmPoolsRpcInfo:u,computeClmmPoolInfo:c,computePoolTickData:l,routePathDict:m}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let o=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(o.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});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(o));Object.keys(c).forEach(l=>{n[l]=c[l]})}let i=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};i.size>0&&(await ot(this.scope.connection,Array.from(i).map(l=>({pubkey:new Sn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=ks.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Mo.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:D(C({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else{let l=n[c.id.toString()],m=C({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:ys({programId:new Sn(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}}),u}};import{TOKEN_PROGRAM_ID as tf}from"@solana/spl-token";import{PublicKey as nf,Transaction as Ts,TransactionInstruction as rf}from"@solana/web3.js";import pc from"bn.js";var Je=class extends Be{static getPdaPoolId(e,t){return se([Je.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return se([Je.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new pc(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:s}){if(n.length===0)return[];let i=n.map(l=>Je.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Je.VERSION_PROJECT.length;l++)a.push(...i.map(m=>Je.getPdaOwnerId(t,m,o,l).publicKey));let u=await kt(e,[...i,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=i[d],y=a[l],f=u[d],g=u[n.length+l];if(!(f&&g)||f.data.length!==Je.POOL_LAYOUT.span||g.data.length!==Je.OWNER_LAYOUT.span)continue;let b=Je.POOL_LAYOUT.decode(f.data),P=Je.OWNER_LAYOUT.decode(g.data),A=b.openTime.toNumber(),h=b.endTime.toNumber(),I=P.tokenInfo.map(x=>x.debtAmount.gt(new pc(0))).filter(x=>!x).length!==3,T=s>A&&s<h&&b.status===1,S=I&&T;c.push({programId:t,poolId:p,ammId:b.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Je.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:S,canClaimErrorType:I?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:b.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,s=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(pe.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!u.mintAddress.equals(pe.WSOL.mint),associatedOnly:u.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),s.push(c)}n.addInstruction({instructions:[Je.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:o,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:i,signers:a}=n.build();return[{transaction:i,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,s={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(pe.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!m.mintAddress.equals(pe.WSOL.mint),associatedOnly:m.mintAddress.equals(pe.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(s[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Je.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:o,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:i,signers:a}=n.build(),u=n.allInstructions;return io(u,[o,...a.map(c=>c.publicKey)])?[{transaction:i,signer:a}]:[{transaction:new Ts().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Ts().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ts().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=N([]),s=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:tf,isSigner:!1,isWritable:!1}],i=Buffer.alloc(o.span);o.encode({},i);let a=Buffer.from([10,66,208,184,161,6,191,98,...i]);return new rf({keys:s,programId:e,data:a})}},wt=Je;wt.CLAIMED_NUM=3,wt.POOL_LAYOUT=N([ye(8),v("bump"),v("status"),w("openTime"),w("endTime"),B("ammId"),G(N([v("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Je.CLAIMED_NUM,"tokenInfo"),G(w(),10,"padding")]),wt.OWNER_LAYOUT=N([ye(8),v("bump"),v("version"),B("poolId"),B("owner"),w("lpAmount"),G(N([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Je.CLAIMED_NUM,"tokenInfo"),G(w(),4,"padding")]),wt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new nf(e)),wt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},wt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wc}from"@solana/spl-token";import Er from"bn.js";import{TransactionInstruction as sf,SYSVAR_RENT_PUBKEY as af}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fc}from"@solana/spl-token";import{createInitializeAccountInstruction as yc}from"@solana/spl-token";import{SystemProgram as Kn,Transaction as bc}from"@solana/web3.js";function of(r="accountFlags"){let e=new yo(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Is=N([ye(5),of("accountFlags"),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),ye(7)]);function uf({programId:r,marketInfo:e}){let t=N([v("version"),je("instruction"),w("baseLotSize"),w("quoteLotSize"),Lt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:af,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),o=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},o),new sf({keys:n,programId:r,data:o})}async function gc({connection:r,wallet:e,marketInfo:t}){let n=new bc,o=await r.getMinimumBalanceForRentExemption(165);n.add(Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:fc}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:fc}),yc(t.baseVault.publicKey,t.baseMint,t.vaultOwner),yc(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let s=new bc;return s.add(Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Is.span),space:Is.span,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Kn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),uf({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:s,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var Xn=class extends Be{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:o,dexProgramId:s,txVersion:i,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Qe({fromPublicKey:u,programId:s}),l=Qe({fromPublicKey:u,programId:s}),m=Qe({fromPublicKey:u,programId:s}),d=Qe({fromPublicKey:u,programId:s}),p=Qe({fromPublicKey:u,programId:s}),y=Qe({fromPublicKey:u,programId:wc}),f=Qe({fromPublicKey:u,programId:wc}),g=0,b=new Er(100);function P(){let K=new Er(0);for(;;)try{return{vaultOwner:Vr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],s),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new Er(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),I=new Er(Math.round(10**e.decimals*n)),T=new Er(Math.round(n*10**t.decimals*o));if(I.eq(Ee))throw Error("lot size is too small");if(T.eq(Ee))throw Error("tick size or lot size is too small");let S=await gc({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:s,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:g,quoteDustThreshold:b,vaultSignerNonce:h,baseLotSize:I,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let K of S.slice(1,S.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return i===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Vr(e.mint),quoteMin:new Vr(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Vr(e.mint),quoteMin:new Vr(t.mint)}})}};import{PublicKey as vr}from"@solana/web3.js";import{TransactionInstruction as Bs,SYSVAR_CLOCK_PUBKEY as cf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ss}from"@solana/spl-token";var xs=N([v("instruction"),Oa("amount")]),Fr=N([v("instruction")]);function tK({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:Zr,isSigner:!1,isWritable:!1},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:ei,isSigner:!1,isWritable:!1},...Object.entries(t).map(([s,i])=>({pubkey:i,isSigner:s==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(s)}))],o=Buffer.alloc(xs.span);return xs.encode({instruction:1,amount:Number(e)},o),new Bs({keys:n,programId:r,data:o})}function Vo({programId:r},e){let t=[{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:ei,isSigner:!1,isWritable:!1},...Object.entries(e).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner"].includes(o)}))],n=Buffer.alloc(Fr.span);return Fr.encode({instruction:2},n),new Bs({keys:t,programId:r,data:n})}function Ks(r){let{poolConfig:e,userKeys:t,side:n}=r,o=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,s=n==="base"?e.baseVault:e.quoteVault,i=Buffer.alloc(Fr.span);Fr.encode({instruction:2},i);let a=[{pubkey:Ss,isWritable:!1,isSigner:!1},{pubkey:cf,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Bs({programId:e.programId,keys:a,data:i})}import Ac from"bn.js";var lf={[ar.IDO_PROGRAM_ID_V1.toString()]:1,[ar.IDO_PROGRAM_ID_V2.toString()]:2,[ar.IDO_PROGRAM_ID_V3.toString()]:3,[ar.IDO_PROGRAM_ID_V4.toString()]:4},zn=class extends Be{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:o=!1,txVersion:s}){let i=this.createTxBuilder(),a=lf[t.programId];a||this.logAndCreateError("invalid version",a);let u=be(t),[c,l]=[!new Ac(e.coin).isZero(),!new Ac(e.pc).isZero()],m=u.projectInfo.mint.address.equals(J),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:o});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&i.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:o});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&g&&i.addInstruction(g),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return i.addInstruction({instructions:[...c?[Vo({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new vr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Vo({programId:new vr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new vr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:s});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),i.addInstruction({instructions:[Vo({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new vr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:s});let b={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new vr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return i.addInstruction({instructions:[...c?[Ks(D(C({},b),{side:"base"}))]:[],...l?[Ks(D(C({},b),{side:"quote"}))]:[]]}).versionBuild({txVersion:s})}};import{PublicKey as mf}from"@solana/web3.js";import{MintLayout as df,TOKEN_2022_PROGRAM_ID as Cs,TOKEN_PROGRAM_ID as Rs}from"@solana/spl-token";var Dr=class extends Be{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:o="strict"}=t||{},{mintList:s,blacklist:i,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(o,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Kt.address,Kt),this._mintGroup.official.add(Kt.address),i.forEach(c=>{this._blackTokenMap.set(c.address,D(C({},c),{priority:-1}))}),s.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Cs.toBase58():Rs.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Cs.toBase58():Rs.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?Cs.toBase58():Rs.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),o=this._tokenMap.get(n);if(o)return o;if(n.toLocaleUpperCase()==="SOL")return Kt;let s=(await this.scope.api.getTokenInfo([n]))[0];if(s)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(C({},s),{priority:2})),s;let i=await this.scope.connection.getAccountInfo(new mf(n));if(!i)throw new Error(`mint address not found: ${n}`);let a=df.decode(i.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:i.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var Eo=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:o,api:s,defaultChainTime:i,defaultChainTimeOffset:a,apiCacheTime:u,blockhashCommitment:c="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=o?new ht(o):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=c,this.api=s,this._apiCacheTime=u||5*60*1e3,this.logger=ue("Raydium"),this.farm=new kr({scope:this,moduleName:"Raydium_Farm"}),this.account=new mr({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Rr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Dr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new _r({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Lr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Mr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new wt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Xn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new zn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,value:{chainTime:i||Date.now()-a,offset:a}})}static async load(e){var l;let t=pf({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:o,logCount:s,logRequests:i,urlConfigs:a}=t,u=new mo({cluster:n,timeout:o,urlConfigs:a,logCount:s,logRequests:i}),c=new Eo(D(C({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(po);return this._owner.publicKey}setOwner(e){return this._owner=e?new ht(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ka);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(po),new Error(po)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var s;let n=(s=this.apiData.jupTokenList)==null?void 0:s[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let o=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:o}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import kc from"bn.js";var Ls=new kc(1e6);function ff(r,e,t){return r.mul(e).add(t).sub(new kc(1)).div(t)}function Pc(r,e,t){return r.mul(e).div(t)}var Fo=class{static tradingFee(e,t){return ff(e,t,Ls)}static protocolFee(e,t){return Pc(e,t,Ls)}static fundFee(e,t){return Pc(e,t,Ls)}};import Wr from"bn.js";function vo(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function yf(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=vo(r,e);return n.gt(Yn)&&(t=t.add(new Wr(1)),e=r.div(t),n=vo(r,t),n.gt(Yn)&&(e=e.add(new Wr(1)))),[t,e]}var Yn=new Wr(0),Do=class{static swapWithoutFees(e,t,n){let o=t.mul(n),s=t.add(e),[i,a]=yf(o,s),u=a.sub(t),c=n.sub(i);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,o,s){let i=e.mul(n).div(t),a=e.mul(o).div(t);if(s===0)return{tokenAmount0:i,tokenAmount1:a};if(s===1)return vo(e.mul(n),t).gt(Yn)&&i.gt(Yn)&&(i=i.add(new Wr(1))),vo(e.mul(o),t).gt(Yn)&&a.gt(Yn)&&(a=a.add(new Wr(1))),{tokenAmount0:i,tokenAmount1:a};throw Error("roundDirection value error")}};var hc=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(hc||{}),Tc=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,o){let s=Fo.tradingFee(e,o),i=e.sub(s),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Do.swapWithoutFees(i,t,n),c=a.add(s);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:s}}};var h0=r=>r;export{vb as ACCOUNT_TYPE_SIZE,mg as ALL_PROGRAM_ID,gp as AMM_CONFIG_SEED,om as AMM_STABLE,sr as AMM_V4,_f as ANAMint,Ue as API_URLS,Jl as AccountType,mo as Api,Cu as BIT_PRECISION,en as BNDivCeil,bn as BNLayout,Uy as BN_100,Gy as BN_1000,Xy as BN_10000,qy as BN_FIVE,aa as BN_ONE,dn as BN_TEN,Wy as BN_THREE,Dy as BN_TWO,Ee as BN_ZERO,Aw as BitStructure,La as Blob,fi as CLMM_PROGRAM_ID,ei as CLOCK_PROGRAM_ID,mm as CREATE_CPMM_POOL_AUTH,dm as CREATE_CPMM_POOL_FEE_ACC,lm as CREATE_CPMM_POOL_PROGRAM,Lr as Clmm,Vu as ClmmConfigLayout,Se as ClmmInstrument,Do as ConstantProductCurve,oc as CpmmConfigInfoLayout,Fo as CpmmFee,ic as CpmmPoolInfoLayout,$n as Currency,pn as CurrencyAmount,Tc as CurveCalculator,dg as DEVNET_PROGRAM_ID,vg as DEV_API_URLS,fm as DEV_CREATE_CPMM_POOL_AUTH,ym as DEV_CREATE_CPMM_POOL_FEE_ACC,pm as DEV_CREATE_CPMM_POOL_PROGRAM,np as DataElement,Vf as ETHMint,us as EXTENSION_TICKARRAY_BITMAP_SIZE,Ja as FARM_LOCK_MINT,eu as FARM_LOCK_VAULT,di as FARM_PROGRAM_ID_V3,pi as FARM_PROGRAM_ID_V5,Vn as FARM_PROGRAM_ID_V6,ft as FARM_PROGRAM_TO_VERSION,nu as FARM_VERSION_TO_LEDGER_LAYOUT,tu as FARM_VERSION_TO_STATE_LAYOUT,lg as FEE_DESTINATION_ID,Ko as FEE_RATE_DENOMINATOR,Ls as FEE_RATE_DENOMINATOR_VALUE,xp as FETCH_TICKARRAY_COUNT,Ip as Fee,re as Fraction,ar as IDO_ALL_PROGRAM,sm as IDO_PROGRAM_ID_V1,am as IDO_PROGRAM_ID_V2,um as IDO_PROGRAM_ID_V3,cm as IDO_PROGRAM_ID_V4,Hr as INSTRUCTION_PROGRAM_ID,E as InstructionType,yi as JupTokenType,Uu as LIQUIDITY_FEES_DENOMINATOR,qu as LIQUIDITY_FEES_NUMERATOR,Op as LIQUIDITY_VERSION_TO_SERUM_VERSION,Hk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Ru as LOG_B_2_X32,Lu as LOG_B_P_ERR_MARGIN_LOWER_X64,Ou as LOG_B_P_ERR_MARGIN_UPPER_X64,ao as LOOKUP_TABLE_CACHE,ur as Layout,ce as LiquidityMath,Rc as LogLevel,Uo as Logger,Is as MARKET_STATE_LAYOUT_V2,ks as MARKET_STATE_LAYOUT_V3,mc as MARKET_VERSION_TO_STATE_LAYOUT,ya as MAX_BASE64_SIZE,Mt as MAX_SQRT_PRICE_X64,tt as MAX_TICK,Nn as MEMO_PROGRAM_ID,ta as MEMO_PROGRAM_ID2,Mn as METADATA_PROGRAM_ID,Nt as MIN_SQRT_PRICE_X64,Ze as MIN_TICK,qn as MODEL_DATA_PUBKEY,Mo as Market,te as MathUtil,as as MaxU64,Ku as MaxUint128,Gt as NEGATIVE_ONE,Mf as NRVMint,lt as ONE,rm as OPEN_BOOK_PROGRAM,hp as OPERATION_SEED,ls as ObservationInfoLayout,Kp as ObservationLayout,Eu as OperationLayout,hi as OptionLayout,ht as Owner,Sf as PAIMint,Pp as POOL_REWARD_VAULT_SEED,wp as POOL_SEED,Tp as POOL_TICK_ARRAY_BITMAP_SEED,Ap as POOL_VAULT_SEED,xu as POSITION_SEED,Ve as Percent,xa as PoolFetchType,In as PoolInfoLayout,Re as PoolUtils,Co as PositionInfoLayout,Rp as PositionRewardInfoLayout,Kr as PositionUtils,ve as Price,MT as ProtocolPositionLayout,So as Q128,mt as Q64,Bf as RAYMint,rt as RENT_PROGRAM_ID,Eo as Raydium,Cp as RewardInfo,hc as RoundDirection,oi as Rounding,im as Router,cc as SERUM_PROGRAMID_TO_VERSION,co as SERUM_PROGRAM_ID_V3,lc as SERUM_VERSION_TO_PROGRAMID,Ba as SESSION_KEY,Me as SOLMint,Kt as SOL_INFO,Ik as SPL_MINT_LAYOUT,Kf as SRMMint,bi as STORAGE_KEY,Zr as SYSTEM_PROGRAM_ID,ee as SqrtPriceMath,Wn as StableLayout,Ti as Structure,Tn as SwapMath,hn as TICK_ARRAY_BITMAP_SIZE,kp as TICK_ARRAY_SEED,Fe as TICK_ARRAY_SIZE,Th as TICK_SPACINGS,_e as TOKEN_WSOL,Xt as TickArrayBitmap,_u as TickArrayBitmapExtensionLayout,Sr as TickArrayBitmapExtensionUtils,Br as TickArrayLayout,Lp as TickLayout,xn as TickMath,le as TickQuery,Y as TickUtils,pe as Token,fe as TokenAmount,uo as TxBuilder,fn as TxVersion,xr as U64Resolution,xh as U64_IGNORE_RANGE,Ai as UInt,Cf as USDCMint,Nf as USDHMint,Rf as USDTMint,nm as UTIL1216,Ii as Union,Za as Voter,Ed as VoterDepositEntry,Vd as VoterLockup,Ha as VoterRegistrar,_d as VoterVotingMintConfig,J as WSOLMint,yo as WideBits,Dt as WrappedLayout,de as ZERO,ra as _100_PERCENT,k as accountMeta,Sy as add,oo as addComputeBudget,es as addLiquidityLayout,oA as array,Oi as associatedLedgerAccountLayout,Pi as bits,ye as blob,Xe as bool,Xi as calFarmRewardAmount,ff as ceilDiv,Jn as checkLegacyTxSize,er as checkV0TxSize,li as chunkArray,Fr as claimLayout,Wt as closeAccountInstruction,Zo as commonSystemAccountMeta,ho as createAssociatedLedgerAccountInstruction,ue as createLogger,mu as createPoolFeeLayout,Pu as createPoolV4InstructionV2,Qk as createPoolV4Layout,qt as createWSolAccountInstructions,Yw as cstr,my as currencyEquals,vl as decimalToFraction,md as decodeBool,Ty as div,eo as divCeil,et as dwLayout,dd as encodeBool,iw as endlessRetry,Vl as eq,qw as f32,Uw as f32be,Gw as f64,Xw as f64be,Vi as farmAddRewardLayout,cP as farmLedgerLayoutV3_1,pr as farmLedgerLayoutV3_2,lP as farmLedgerLayoutV5_1,ja as farmLedgerLayoutV5_2,Qa as farmLedgerLayoutV6_1,ou as farmRewardInfoToConfig,Mi as farmRewardLayout,_i as farmRewardRestartLayout,Md as farmRewardTimeInfoLayout,za as farmStateV3Layout,Ya as farmStateV5Layout,dr as farmStateV6Layout,_P as fetchMultipleFarmInfoAndUpdate,dI as fetchMultipleInfo,Aa as fetchMultipleMintInfos,se as findProgramAddress,Zi as fixedSwapInLayout,$i as fixedSwapOutLayout,Pc as floorDiv,io as forecastTransactionSize,dp as formatLayout,Qe as generatePubKey,ge as getATAAddress,ru as getAssociatedAuthority,fs as getAssociatedConfigId,He as getAssociatedLedgerAccount,yr as getAssociatedLedgerPoolAccount,Vp as getAssociatedOpenOrders,zu as getAssociatedPoolKeys,Xp as getCpmmPdaAmmConfigId,zp as getCpmmPdaPoolId,Zu as getCreatePoolKeys,ha as getDate,zi as getDepositEntryIndex,yu as getDxByDyBaseIn,fu as getDyByDxBaseIn,Rb as getEpochInfo,Dn as getFarmLedgerLayout,Fd as getFarmStateLayout,ys as getLiquidityAssociatedAuthority,Bn as getLiquidityAssociatedId,lT as getLiquidityFromAmounts,By as getMax,kt as getMultipleAccountsInfo,ot as getMultipleAccountsInfoWithCustomFlags,mi as getMultipleLookupTableInfo,Ph as getPdaAmmConfigId,ct as getPdaExBitmapAccount,Yp as getPdaLpMint,Bo as getPdaMetadataKey,Lo as getPdaObservationId,Ir as getPdaOperationAccount,yt as getPdaPersonalPositionAddress,Gp as getPdaPoolAuthority,Bu as getPdaPoolId,Su as getPdaPoolRewardVaulId,ss as getPdaPoolVaultId,kn as getPdaProtocolPositionAddress,Ae as getPdaTickArrayAddress,Hu as getPdaVault,_n as getRecentBlockHash,vi as getRegistrarAddress,wm as getSessionKey,bu as getStablePrice,tm as getTime,wb as getTimestamp,Gi as getTokenOwnerRecordAddress,Ag as getTransferAmountFee,ke as getTransferAmountFeeV2,qi as getVoterAddress,Ui as getVoterWeightRecordAddress,Wi as getVotingMintAuthority,Di as getVotingTokenMint,Yd as governanceCreateTokenOwnerRecord,Pw as greedy,_l as gt,hy as gte,Fa as i128,yh as i16ToBytes,xo as i32ToBytes,bo as i64,Ea as i8,Ji as initPoolLayout,Ri as initTokenAccountInstruction,uf as initializeMarket,rg as intersection,Ia as isDateAfter,Ta as isDateBefore,Dl as isDecimal,xy as isMeaningfulNumber,ka as isNumber,Ei as isValidFarmVersion,Tr as isZero,be as jsonInfo2PoolKeys,VP as judgeFarmType,os as leadingZeros,Iu as leastSignificantBit,hr as liquidityStateV4Layout,ep as liquidityStateV5Layout,Py as lt,ky as lte,Lf as mSOLMint,Io as makeAMMSwapInstruction,Au as makeAddLiquidityInstruction,ji as makeAddNewRewardInstruction,Vo as makeClaimInstruction,Ks as makeClaimInstructionV4,Ju as makeCreateCpmmPoolInInstruction,iu as makeCreateFarmInstruction,gc as makeCreateMarketInstruction,su as makeCreatorWithdrawFarmRewardInstruction,ec as makeDepositCpmmInInstruction,au as makeDepositInstructionV3,uu as makeDepositInstructionV5,cu as makeDepositInstructionV6,JP as makeDepositTokenInstruction,tk as makeDepositWithdrawInstruction,ph as makeInitPoolInstructionV4,tK as makePurchaseInstruction,Yi as makeRestartRewardInstruction,ku as makeSimulatePoolInfoInstruction,nc as makeSwapCpmmBaseInInInstruction,rc as makeSwapCpmmBaseOutInInstruction,yp as makeSwapFixedInInstruction,bp as makeSwapFixedOutInstruction,uc as makeSwapInstruction,lr as makeTransferInstruction,tc as makeWithdrawCpmmInInstruction,Pr as makeWithdrawInstructionV3,Ar as makeWithdrawInstructionV5,wr as makeWithdrawInstructionV6,ek as makeWithdrawTokenInstruction,Rt as minExpirationTime,Ih as mockCreatePoolInfo,Nu as mockV3CreatePoolInfo,rp as modelDataInfoLayout,Tu as mostSignificantBit,ai as mul,ui as notInnerObject,_w as ns64,Ww as ns64be,Oa as nu64,Cw as nu64be,ki as offset,ag as offsetDateTime,Jw as option,z as parseBigNumberish,mn as parseNumberInfo,ga as parseSimulateLogToJson,vt as parseSimulateValue,Xa as parseTokenAccountResp,Mk as parseTokenInfo,sn as poolTypeV6,yn as printSimulate,B as publicKey,xs as purchaseLayout,Ld as realFarmStateV3Layout,Od as realFarmStateV5Layout,Nd as realFarmV6Layout,sa as recursivelyDecimalToFraction,rs as removeLiquidityInstruction,ts as removeLiquidityLayout,wB as route1Instruction,AB as route2Instruction,Jp as routeInstruction,rA as rustEnum,Lw as s16,Vw as s16be,Ow as s24,Ew as s24be,Ge as s32,Fw as s32be,Nw as s40,vw as s40be,Mw as s48,Dw as s48be,Rw as s8,G as seq,Pf as setLoggerLevel,El as shakeFractionDecimal,ba as simulateMultipleInstruction,dh as simulatePoolInfoInstruction,Yl as simulateTransaction,la as sleep,at as solToWSol,Vk as solToWSolToken,tn as splAccountLayout,ca as splitNumber,Of as stSOLMint,nA as str,N as struct,Iy as sub,tA as tagged,ii as tenExponential,Yu as toAmmComputePoolInfo,wn as toApiV3Token,Fl as toBN,jl as toBuffer,Hi as toFeeConfig,ua as toFraction,Ay as toFractionWithDecimals,zy as toPercent,To as toToken,Qi as toTokenAmount,_k as toTokenInfo,Yy as toTokenPrice,jy as toTotalPrice,ia as toUsdCurrency,is as trailingZeros,Jo as tryParsePublicKey,Q as u128,Lt as u16,hu as u16ToBytes,Iw as u16be,kw as u24,xw as u24be,je as u32,bh as u32ToBytes,Bw as u32be,hw as u40,Sw as u40be,Tw as u48,Kw as u48be,w as u64,v as u8,iA as union,h0 as unionArr,zw as unionLayoutDiscriminator,ig as uniq,vd as updateFarmPoolInfo,lo as updateReqHistory,jw as utf8,$o as validateAndParsePublicKey,Fi as validateFarmRewards,eA as vec,pd as vecU8,Qd as voterStakeRegistryCreateDepositEntry,jd as voterStakeRegistryCreateVoter,Gd as voterStakeRegistryDeposit,Xd as voterStakeRegistryUpdateVoterWeightRecord,zd as voterStakeRegistryWithdraw,Ek as wSolToSolToken,Ni as withdrawRewardLayout,og as xor,sA as zeros};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map