@raydium-io/raydium-sdk-v2 0.0.22-alpha → 0.0.24-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 (104) hide show
  1. package/lib/api/api.d.ts +2 -2
  2. package/lib/api/api.js +1 -1
  3. package/lib/api/api.js.map +1 -1
  4. package/lib/api/api.mjs +1 -1
  5. package/lib/api/api.mjs.map +1 -1
  6. package/lib/api/index.d.ts +1 -1
  7. package/lib/api/index.js +1 -1
  8. package/lib/api/index.js.map +1 -1
  9. package/lib/api/index.mjs +1 -1
  10. package/lib/api/index.mjs.map +1 -1
  11. package/lib/api/type.d.ts +1 -1
  12. package/lib/api/type.js.map +1 -1
  13. package/lib/api/type.mjs.map +1 -1
  14. package/lib/common/accountInfo.d.ts +1 -1
  15. package/lib/common/bignumber.d.ts +1 -1
  16. package/lib/common/fractionUtil.d.ts +1 -1
  17. package/lib/common/index.d.ts +1 -1
  18. package/lib/common/transfer.d.ts +1 -1
  19. package/lib/common/txTool/txTool.d.ts +1 -1
  20. package/lib/common/txTool/txUtils.d.ts +1 -1
  21. package/lib/common/utility.d.ts +1 -1
  22. package/lib/index.d.ts +3 -3
  23. package/lib/index.js +1 -1
  24. package/lib/index.js.map +1 -1
  25. package/lib/index.mjs +1 -1
  26. package/lib/index.mjs.map +1 -1
  27. package/lib/module/amount.d.ts +1 -1
  28. package/lib/module/fraction.d.ts +1 -1
  29. package/lib/module/index.d.ts +1 -1
  30. package/lib/module/percent.d.ts +1 -1
  31. package/lib/module/price.d.ts +1 -1
  32. package/lib/raydium/account/account.d.ts +3 -3
  33. package/lib/raydium/account/index.d.ts +1 -1
  34. package/lib/raydium/account/instruction.d.ts +1 -1
  35. package/lib/raydium/account/types.d.ts +1 -1
  36. package/lib/raydium/account/util.d.ts +1 -1
  37. package/lib/raydium/clmm/clmm.d.ts +3 -3
  38. package/lib/raydium/clmm/index.d.ts +3 -3
  39. package/lib/raydium/clmm/instrument.d.ts +2 -2
  40. package/lib/raydium/clmm/layout.d.ts +6 -6
  41. package/lib/raydium/clmm/type.d.ts +2 -2
  42. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  43. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  44. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  45. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  46. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  47. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  48. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  49. package/lib/raydium/cpmm/cpmm.js +1 -1
  50. package/lib/raydium/cpmm/cpmm.js.map +1 -1
  51. package/lib/raydium/cpmm/cpmm.mjs +1 -1
  52. package/lib/raydium/cpmm/cpmm.mjs.map +1 -1
  53. package/lib/raydium/cpmm/index.d.ts +1 -1
  54. package/lib/raydium/cpmm/layout.d.ts +1 -1
  55. package/lib/raydium/cpmm/type.d.ts +1 -1
  56. package/lib/raydium/farm/config.d.ts +1 -1
  57. package/lib/raydium/farm/farm.d.ts +3 -3
  58. package/lib/raydium/farm/index.d.ts +1 -1
  59. package/lib/raydium/farm/instruction.d.ts +1 -1
  60. package/lib/raydium/farm/layout.d.ts +1 -1
  61. package/lib/raydium/farm/type.d.ts +1 -1
  62. package/lib/raydium/farm/util.d.ts +1 -1
  63. package/lib/raydium/ido/ido.d.ts +3 -3
  64. package/lib/raydium/ido/index.d.ts +3 -3
  65. package/lib/raydium/ido/instruction.d.ts +1 -1
  66. package/lib/raydium/ido/type.d.ts +1 -1
  67. package/lib/raydium/index.d.ts +3 -3
  68. package/lib/raydium/index.js +1 -1
  69. package/lib/raydium/index.js.map +1 -1
  70. package/lib/raydium/index.mjs +1 -1
  71. package/lib/raydium/index.mjs.map +1 -1
  72. package/lib/raydium/liquidity/index.d.ts +1 -1
  73. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  74. package/lib/raydium/liquidity/layout.d.ts +2 -2
  75. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  76. package/lib/raydium/liquidity/type.d.ts +1 -1
  77. package/lib/raydium/liquidity/utils.d.ts +1 -1
  78. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  79. package/lib/raydium/marketV2/index.d.ts +3 -3
  80. package/lib/raydium/moduleBase.d.ts +3 -3
  81. package/lib/raydium/raydium.d.ts +3 -3
  82. package/lib/raydium/raydium.js +1 -1
  83. package/lib/raydium/raydium.js.map +1 -1
  84. package/lib/raydium/raydium.mjs +1 -1
  85. package/lib/raydium/raydium.mjs.map +1 -1
  86. package/lib/raydium/token/constant.d.ts +1 -1
  87. package/lib/raydium/token/index.d.ts +1 -1
  88. package/lib/raydium/token/token.d.ts +3 -3
  89. package/lib/raydium/token/type.d.ts +1 -1
  90. package/lib/raydium/token/utils.d.ts +1 -1
  91. package/lib/raydium/tradeV2/index.d.ts +2 -2
  92. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  93. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  94. package/lib/raydium/tradeV2/type.d.ts +2 -2
  95. package/lib/raydium/type.d.ts +1 -1
  96. package/lib/raydium/utils1216/index.d.ts +3 -3
  97. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  98. package/lib/{raydium-97f3539d.d.ts → raydium-54450191.d.ts} +3 -3
  99. package/lib/{type-2bed92a9.d.ts → type-322fdce2.d.ts} +9 -15
  100. package/lib/{type-485c1df6.d.ts → type-5c2ec3f0.d.ts} +1 -1
  101. package/package.json +1 -1
  102. package/src/api/api.ts +2 -2
  103. package/src/api/type.ts +0 -6
  104. package/src/raydium/cpmm/cpmm.ts +3 -1
package/lib/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- var ec=Object.defineProperty,tc=Object.defineProperties;var nc=Object.getOwnPropertyDescriptors;var Kr=Object.getOwnPropertySymbols;var ys=Object.prototype.hasOwnProperty,bs=Object.prototype.propertyIsEnumerable;var fs=(r,e,t)=>e in r?ec(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))ys.call(e,t)&&fs(r,t,e[t]);if(Kr)for(var t of Kr(e))bs.call(e,t)&&fs(r,t,e[t]);return r},W=(r,e)=>tc(r,nc(e));var he=(r,e)=>{var t={};for(var n in r)ys.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Kr)for(var n of Kr(r))e.indexOf(n)<0&&bs.call(r,n)&&(t[n]=r[n]);return t};import Xl from"axios";import{get as Ii,set as gs}from"lodash";import ws from"dayjs";import rc from"dayjs/plugin/utc";ws.extend(rc);var ic=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(ic||{}),xi=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 ws().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}},Bi={},As={};function ae(r){let e=Ii(Bi,r);if(!e){let t=Ii(As,r);e=new xi({name:r,logLevel:t}),gs(Bi,r,e)}return e}function zp(r,e){gs(As,r,e);let t=Ii(Bi,r);t&&(t.level=e)}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import yl from"big.js";import Xt from"bn.js";import ke from"bn.js";var gn=9e15,Gt=1e9,Si="0123456789abcdef",Rr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ki={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Ts,Ot,$=!0,Nr="[DecimalError] ",Ut=Nr+"Invalid argument: ",Is=Nr+"Precision limit exceeded",xs=Nr+"crypto unavailable",Bs="[object Decimal]",Ue=Math.floor,Oe=Math.pow,oc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ac=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ss=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,pt=1e7,Q=7,uc=9007199254740991,cc=Rr.length-1,Ci=Lr.length-1,L={toStringTag:Bs};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};L.ceil=function(){return X(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Ut+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.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())+Q,n.rounding=1,t=lc(n,Os(n,t)),n.precision=r,n.rounding=e,X(Ot==2||Ot==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Oe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Fe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Oe(t,1/3),r=Ue((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Ae(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,X(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ue(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return Ae(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return X(Ae(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return X(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/_r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wn(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=wn(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/_r(5,r)),i=wn(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(i,e,t,!0)};L.hyperbolicTangent=L.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,Ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?dt(t,i,o):new t(0):new t(NaN):e.isZero()?dt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=dt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.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,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.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,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=dt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ci)return s=dt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ci)return s=dt(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),$=!0,X(s,l.precision=m,l.rounding=d,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&Ue(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,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)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if($=!1,a=m+p,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=Ae(s,n,a,1),_n(u.d,i=m,d))do if(a+=10,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=Ae(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(_n(u.d,i+=10,d));return $=!0,X(u,m,d)};L.minus=L.sub=function(r){var e,t,n,i,o,s,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 $?X(r,a,u):r}if(t=Ue(r.e/Q),l=Ue(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=pt-1;--c[i],c[n]+=pt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Mr(c,t),$?X(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.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]?X(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=Ae(t,r.abs(),0,3,1),e.s*=r.s):e=Ae(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Ri(this)};L.naturalLogarithm=L.ln=function(){return qt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,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)),$?X(r,a,u):r;if(o=Ue(m.e/Q),n=Ue(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/pt|0,c[i]%=pt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Mr(c,n),$?X(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ut+r);return t.d?(e=Ks(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};L.sine=L.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())+Q,n.rounding=1,t=dc(n,Os(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ue((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Ae(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,X(n,u,l.rounding,r)};L.tangent=L.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=Ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,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=Ue(l.e/Q)+Ue(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%pt|0,e=a/pt|0;o[i]=(o[i]+e)%pt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Mr(o,t),$?X(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return Oi(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(et(r,0,Gt),e===void 0?e=n.rounding:et(e,0,8),X(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(et(r,0,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(et(r,0,Gt),e===void 0?e=o.rounding:et(e,0,8),n=X(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ks(y)-p.e-1,s=o%Q,e.d[0]=Oe(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Ut+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*Q*2;m=Ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=Ae(c,n,o,1).minus(p).abs().cmp(Ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};L.toHexadecimal=L.toHex=function(r,e){return Oi(this,16,r,e)};L.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:et(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]?($=!1,t=Ae(t,r,0,e,1).times(r),$=!0,X(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return Oi(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Oe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return X(a,n,o);if(e=Ue(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=uc)return i=Cs(u,a,t,n),r.s<0?new u(1).div(i):X(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Oe(+a,c),e=t==0||!isFinite(t)?Ue(c*(Math.log("0."+Fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ri(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),_n(i.d,n,o)&&(e=n+10,i=X(Ri(r.times(qt(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=X(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,X(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(et(r,1,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(et(r,1,Gt),e===void 0?e=n.rounding:et(e,0,8)),X(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return X(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Fe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Dt(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Dt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function et(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Ut+r)}function _n(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Oe(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Oe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Oe(10,e-3)-1,s}function Cr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Si.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_r(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var Ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V,F,j,D=n.constructor,te=n.s==i.s?1:-1,ne=n.d,se=i.d;if(!ne||!ne[0]||!se||!se[0])return new D(!n.s||!i.s||(ne?se&&ne[0]==se[0]:!se)?NaN:ne&&ne[0]==0||!se?te*0:te/0);for(u?(p=1,l=n.e-i.e):(u=pt,p=Q,l=Ue(n.e/p)-Ue(i.e/p)),F=se.length,O=ne.length,g=new D(te),P=g.d=[],m=0;se[m]==(ne[m]||0);m++);if(se[m]>(ne[m]||0)&&l--,o==null?(I=o=D.precision,s=D.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/p+2|0,m=0,F==1){for(d=0,se=se[0],I++;(m<O||d)&&I--;m++)S=d*u+(ne[m]||0),P[m]=S/se|0,d=S%se|0;y=d||m<O}else{for(d=u/(se[0]+1)|0,d>1&&(se=r(se,d,u),ne=r(ne,d,u),F=se.length,O=ne.length),x=F,k=ne.slice(0,F),T=k.length;T<F;)k[T++]=0;j=se.slice(),j.unshift(0),V=se[0],se[1]>=u/2&&++V;do d=0,c=e(se,k,F,T),c<0?(h=k[0],F!=T&&(h=h*u+(k[1]||0)),d=h/V|0,d>1?(d>=u&&(d=u-1),f=r(se,d,u),b=f.length,T=k.length,c=e(f,k,b,T),c==1&&(d--,t(f,F<b?j:se,b,u))):(d==0&&(c=d=1),f=se.slice()),b=f.length,b<T&&f.unshift(0),t(k,f,T,u),c==-1&&(T=k.length,c=e(se,k,F,T),c<1&&(d++,t(k,F<T?j:se,T,u))),T=k.length):c===0&&(d++,k=[0]),P[m++]=d,c&&k[0]?k[T++]=ne[x]||0:(k=[ne[x]],T=1);while((x++<O||k[0]!==void 0)&&I--);y=k[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,Ts=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[d=0],u=l/Oe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/Q),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Oe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Oe(10,i-s):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]=Oe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Oe(10,Q-o),m[d]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==pt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=pt)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return Ls(r);var n,i=r.e,o=Fe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Dt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Dt(-i-1)+o,t&&(n=t-s)>0&&(o+=Dt(n))):i>=s?(o+=Dt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Dt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Dt(n))),o}function Mr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Or(r,e,t){if(e>cc)throw $=!0,t&&(r.precision=t),Error(Is);return X(new r(Rr),e,1,!0)}function dt(r,e,t){if(e>Ci)throw Error(Is);return X(new r(Lr),e,t,!0)}function Ks(r){var e=r.length-1,t=e*Q+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 Dt(r){for(var e="";r--;)e+="0";return e}function Cs(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for($=!1;;){if(t%2&&(o=o.times(e),Ps(o.d,s)&&(i=!0)),t=Ue(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ps(e.d,s)}return $=!0,o}function ks(r){return r.d[r.d.length-1]&1}function Rs(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ri(r,e){var t,n,i,o,s,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?($=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Oe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=X(o.times(r),u,1),t=t.times(++l),a=s.plus(Ae(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&_n(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return X(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function qt(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,k=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?($=!1,l=k):l=e,g.precision=l+=y,t=Fe(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Fe(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Or(g,l+2,k).times(o+""),f=qt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=k,e==null?X(f,k,P,$=!0):f;for(m=f,u=s=f=Ae(f.minus(1),f.plus(1),l,1),d=X(f.times(f),l,1),i=3;;){if(s=X(s.times(d),l,1),c=u.plus(Ae(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Or(g,l+2,k).times(o+""))),u=Ae(u,new g(p),l,1),e==null)if(_n(u.d,l-y,P,a))g.precision=l+=y,c=s=f=Ae(m.minus(1),m.plus(1),l,1),d=X(f.times(f),l,1),i=a=1;else return X(u,g.precision=k,P,$=!0);else return g.precision=k,u;u=c,i+=2}}function Ls(r){return String(r.s*r.s/0)}function Li(r,e){var t,n,i;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(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),$&&(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 mc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ss.test(e))return Li(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(sc.test(e))t=16,e=e.toLowerCase();else if(oc.test(e))t=2;else if(ac.test(e))t=8;else throw Error(Ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Cs(n,new n(t),o,o*2)),c=Cr(e,t,pt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Mr(c,l),r.d=c,$=!1,s&&(r=Ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Vn.pow(2,u))),$=!0,r)}function dc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_r(5,t)),e=wn(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function wn(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for($=!1,u=t.times(t),a=new r(n);;){if(s=Ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function _r(r,e){for(var t=r;--e;)t*=r;return t}function Os(r,e){var t,n=e.s<0,i=dt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=ks(t)?n?2:3:n?4:1,e;Ot=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Oi(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(et(t,1,Gt),n===void 0?n=p.rounding:et(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Ls(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Cr(kt(d),10,i),d.e=d.d.length),m=Cr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=Ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Ts),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Si.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Cr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Si.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Ps(r,e){if(r.length>e)return r.length=e,!0}function pc(r){return new this(r).abs()}function fc(r){return new this(r).acos()}function yc(r){return new this(r).acosh()}function bc(r,e){return new this(r).plus(e)}function gc(r){return new this(r).asin()}function wc(r){return new this(r).asinh()}function Ac(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function Pc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=dt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?dt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=dt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Ae(r,e,o,1)),e=dt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Ae(r,e,o,1)),t}function hc(r){return new this(r).cbrt()}function Tc(r){return X(r=new this(r),r.e+1,2)}function Ic(r,e,t){return new this(r).clamp(e,t)}function xc(r){if(!r||typeof r!="object")throw Error(Nr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Gt,"rounding",0,8,"toExpNeg",-gn,0,"toExpPos",0,gn,"maxE",0,gn,"minE",-gn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Ki[t]),(n=r[t])!==void 0)if(Ue(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ut+t+": "+n);if(t="crypto",i&&(this[t]=Ki[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(Ut+t+": "+n);return this}function Bc(r){return new this(r).cos()}function Sc(r){return new this(r).cosh()}function Ns(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,hs(o)){c.s=o.s,$?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Li(c,o.toString())}else if(u!=="string")throw Error(Ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Ss.test(o)?Li(c,o):mc(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=xc,i.clone=Ns,i.isDecimal=hs,i.abs=pc,i.acos=fc,i.acosh=yc,i.add=bc,i.asin=gc,i.asinh=wc,i.atan=Ac,i.atanh=kc,i.atan2=Pc,i.cbrt=hc,i.ceil=Tc,i.clamp=Ic,i.cos=Bc,i.cosh=Sc,i.div=Kc,i.exp=Cc,i.floor=Rc,i.hypot=Lc,i.ln=Oc,i.log=Nc,i.log10=_c,i.log2=Mc,i.max=Vc,i.min=Ec,i.mod=Fc,i.mul=vc,i.pow=Wc,i.random=Dc,i.round=qc,i.sign=Uc,i.sin=Gc,i.sinh=Xc,i.sqrt=zc,i.sub=Yc,i.sum=Qc,i.tan=jc,i.tanh=Hc,i.trunc=Zc,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 i.config(r),i}function Kc(r,e){return new this(r).div(e)}function Cc(r){return new this(r).exp()}function Rc(r){return X(r=new this(r),r.e+1,3)}function Lc(){var r,e,t=new this(0);for($=!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 $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function hs(r){return r instanceof Vn||r&&r.toStringTag===Bs||!1}function Oc(r){return new this(r).ln()}function Nc(r,e){return new this(r).log(e)}function Mc(r){return new this(r).log(2)}function _c(r){return new this(r).log(10)}function Vc(){return Rs(this,arguments,"lt")}function Ec(){return Rs(this,arguments,"gt")}function Fc(r,e){return new this(r).mod(e)}function vc(r,e){return new this(r).mul(e)}function Wc(r,e){return new this(r).pow(e)}function Dc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:et(r,1,Gt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(xs);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Oe(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function qc(r){return X(r=new this(r),r.e+1,this.rounding)}function Uc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Gc(r){return new this(r).sin()}function Xc(r){return new this(r).sinh()}function zc(r){return new this(r).sqrt()}function Yc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,X(t,this.precision,this.rounding)}function jc(r){return new this(r).tan()}function Hc(r){return new this(r).tanh()}function Zc(r){return X(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Vn=L.constructor=Ns(Ki);Rr=new Vn(Rr);Lr=new Vn(Lr);var E=Vn;import{PublicKey as Fi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as Te,SystemProgram as Ms,SYSVAR_RENT_PUBKEY as Jc}from"@solana/web3.js";function A({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ni=[A({pubkey:$c,isWritable:!1}),A({pubkey:Ms.programId,isWritable:!1}),A({pubkey:Jc,isWritable:!1})];function Mi({publicKey:r,transformSol:e}){let t=_i(r.toString());if(t instanceof Te)return e&&t.equals(Ne)?J:t;if(e&&t.toString()===Ne.toBase58())return J;if(typeof t=="string"){if(t===Te.default.toBase58())return Te.default;try{return new Te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function _i(r){try{return new Te(r)}catch{return r}}var An=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_s=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new Te("SysvarRent111111111111111111111111111111111"),Vi=new Te("SysvarC1ock11111111111111111111111111111111"),kn=new Te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vr=new Te("Sysvar1nstructions1111111111111111111111111"),Vs=Ms.programId,$p=new Te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Jp=new Te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ef=new Te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),tf=new Te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),nf=new Te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),rf=new Te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),of=new Te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),sf=new Te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),af=new Te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),uf=new Te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),cf=new Te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Te("So11111111111111111111111111111111111111112"),Ne=Te.default;function Ei(r){return Mi({publicKey:r,transformSol:!0})}import{PublicKey as el}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var Pt={chainId:101,address:el.default.toBase58(),programId:Es.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Es.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 vi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Fi&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Fi(Me.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Fi.default:Mi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=vi;de.WSOL=new vi(W(N({},Me),{mint:Me.address}));import Fr from"big.js";import rl from"bn.js";import il from"decimal.js-light";import tl from"toformat";var nl=tl,En=nl;var Er=ae("module/fraction"),Wi=En(Fr),Fn=En(il),ol={[0]:Fn.ROUND_DOWN,[1]:Fn.ROUND_HALF_UP,[2]:Fn.ROUND_UP},sl={[0]:Fr.roundDown,[1]:Fr.roundHalfUp,[2]:Fr.roundUp},ee=class{constructor(e,t=new rl(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ee(this.denominator,this.numerator)}add(e){let t=e instanceof ee?e:new ee(U(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.add(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ee?e:new ee(U(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.sub(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ee?e:new ee(U(e));return new ee(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ee?e:new ee(U(e));return new ee(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<=0&&Er.logWithError(`${e} is not positive.`),Fn.set({precision:e+1,rounding:ol[n]});let i=new Fn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<0&&Er.logWithError(`${e} is negative.`),Wi.DP=e,Wi.RM=sl[n]||1,new Wi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var al=ae("Raydium_price"),Ge=class extends ee{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ee(qi(n.decimals),qi(i.decimals))}get raw(){return new ee(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&al.logWithError("mul token not equals");let n=super.mul(t);return new Ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ui=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},vn=Ui;vn.SOL=new Ui(Pt);function Ff(r,e){return r instanceof de&&e instanceof de?r.equals(e):r instanceof de||e instanceof de?!1:r===e}import ul from"bn.js";var Fs=new ee(new ul(100)),ve=class extends ee{toSignificant(e=5,t,n){return this.mul(Fs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Fs).toFixed(e,t,n)}};function Se(r){if(r instanceof ve)return new ee(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof fe)try{return Se(r.toExact())}catch{return new ee(Be)}if(r instanceof ee)return r;let e=String(r),t=tn(e);return new ee(t.numerator,t.denominator)}function zf(r){var n;if(r instanceof ve)return{fr:new ee(r.numerator,r.denominator)};if(r instanceof Ge)return{fr:r.adjusted};if(r instanceof fe)return{fr:Se(r.toExact()),decimals:r.token.decimals};if(r instanceof ee)return{fr:r};let e=String(r),t=tn(e);return{fr:new ee(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Yf(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Be)}function cl(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.gt(Be)}function Qf(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.lte(Be)}function jf(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.gte(Be)}function ll(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.eq(Be)}function Hf(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);try{return t.div(n)}catch{return t}}function Zf(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);return t.sub(n)}function $f(r){return r==null?!1:!ll(r,0)}function Jf(r,e){return cl(e,r)?e:r}function Gi(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);return t.mul(n)}function ey(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);return t.add(n)}var Di=(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))(Di||{}),Be=new ke(0),qs=new ke(1),py=new ke(2),fy=new ke(3),yy=new ke(5),nn=new ke(10),by=new ke(100),gy=new ke(1e3),wy=new ke(1e4),vs=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof ke)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ke(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=vs||r<=-vs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ke(String(r))):typeof r=="bigint"?new ke(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ke(0))}function qi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof ke)return{numerator:r.toString(),denominator:"1"};if(r instanceof ee)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function vr(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 ml(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function dl(r,e=0){return r instanceof ke?r:new ke(ml(Us(r).mul(nn.pow(new ke(String(e))))))}function Us(r){if(r instanceof ve)return new ee(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof fe)try{return Us(r.toExact())}catch{return new ee(Be)}if(r instanceof ee)return r;let e=String(r),t=tn(e);return new ee(t.numerator,t.denominator)}function Ay(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new ke(t),new ke(n).mul(e!=null&&e.alreadyDecimaled?new ke(100):new ke(1)))}function ky(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new de({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new ke(o).mul(nn.pow(new ke(e.decimals))):o,u=new ke(s).mul(nn.pow(new ke(i.decimals)));return new Ge({baseToken:i,denominator:u.toString(),quoteToken:new de(W(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Ws(r){let e=new vn({decimals:6,symbol:"usd",name:"usd"}),t=dl(Gi(r,10**e.decimals));return new rn(e,t)}function Py(r,e){return Ws(!e||!r?0:Gi(r,e))}function pl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ee(e,t)}function fl(r){return r instanceof E}function Ds(r){return fl(r)?pl(r):Array.isArray(r)?r.map(e=>Ds(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ds(t)])):r}var bl=ae("Raydium_amount"),Wr=En(yl);function Gs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):bl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends ee{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new 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,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends ee{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"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 rn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new rn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.currency.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Xs(r){new Promise(e=>setTimeout(e,r))}function Xy(){return new Date().getTime()}function Xi(r){return typeof r=="object"&&r!==null&&![de,fe,gl,ee,wl,Ge,ve].some(e=>typeof e=="object"&&r instanceof e)}function ye(r){return typeof r=="string"?_i(r):Array.isArray(r)?r.map(e=>ye(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ye(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as ji,Transaction as Gn,TransactionMessage as Xn,VersionedTransaction as zn}from"@solana/web3.js";import Sl from"axios";var Wn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Wn||{}),_={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 Ys,ComputeBudgetProgram as zs,Transaction as qr,TransactionMessage as Al,Keypair as Qs,VersionedTransaction as js}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),Hs=1644;function Ur(r){let e=[],t=[];return r.microLamports&&(e.push(zs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(zs.setComputeUnitLimit({units:r.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Gr(r,e){r.length<1&&Nt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Nt.logWithError(`no signers provided:, ${e.toString()}`);let t=new qr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Hs}catch{return!1}}async function Zs(r,e,t,n=!0){let i=new Ys("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new qr;s.feePayer=i;for(let c of e)Gr([...s.instructions,c],[i])||(o.push(s),s=new qr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Pl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Nt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Nt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Nt.debug("filteredLog:",u),l.length||Nt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function $s(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Nt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Mt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Nt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=Ys.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Pl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");o.push(p)}let s=o.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(s.length/u);c++)a.push(s.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 i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Nt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Dn({instructions:r,payer:e,signers:t}){return Gr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Qs.generate().publicKey.toString()}){let o=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new js(o).serialize()).toString("base64").length<Hs}catch{return!1}}var Dr={time:0,data:void 0};async function nb(r){if(!Dr.data||(Date.now()-Dr.time)/1e3>30){let e=await r.getEpochInfo();return Dr={time:Date.now(),data:e},e}else return Dr.data}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function on(r){let e=[];return r.forEach(t=>{t instanceof qr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Qs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof js&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Js,AddressLookupTableAccount as Xr}from"@solana/web3.js";import{PublicKey as Tl}from"@solana/web3.js";import{getTransferFeeConfig as Il,unpackMint as xl}from"@solana/spl-token";var zi=ae("Raydium_accountInfo_util");async function ht(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Yi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Yi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&zi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&zi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Tl(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&zi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(r,e,t){let n=await ht(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>W(N({},i),{accountInfo:n[o]}))}var Bl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Bl||{}),mb=1;async function db({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await hn(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=xl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=W(N({},a),{feeConfig:(o=Il(a))!=null?o:void 0})}return n}async function Qi({connection:r,address:e}){let t=await ht(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Js(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Xr({key:s,state:Xr.deserialize(o.data)});n[s.toString()]=a,zr[s.toString()]=a}return n}var zr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Xr({key:new Js("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Xr.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 Yr=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}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 Sl.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}=Ur(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:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new Gn;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()=>{var i;let n=await Pn(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),on([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await ji(this.connection,t,this.signers.find(o=>o.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer]),signedTx:t};if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0}),signedTx:o[0]}}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var p;let{sequentially:l,onTxUpdate:m}=c||{},d=await Pn(this.connection);if((p=this.owner)!=null&&p.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=d,await ji(this.connection,y,a[f].find(b=>b.publicKey.equals(this.owner.publicKey))?a[f]:[...a[f],this.owner.signer])))),signedTxs:s};if(this.signAllTransactions){let y=s.map((b,g)=>(b.recentBlockhash=d,a[g].length&&b.sign(...a[g]),b));on(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},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:i}=d,o=he(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},zr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Un(p));let c=await Qi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Xn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new zn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var p;if(on([m]),(p=this.owner)!=null&&p.isKeyPair){this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:!0}),{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:!0}),signedTx:y[0]}}throw new Error("please connect wallet first")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var d;on(s);let{sequentially:l,onTxUpdate:m}=c||{};if((d=this.owner)!=null&&d.isKeyPair){let{lastValidBlockHeight:p,blockhash:y}=await this.connection.getLatestBlockhash();return s.forEach((f,b)=>{a[b].find(g=>g.publicKey.equals(this.owner.publicKey))||f.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async f=>{let b=await this.connection.sendTransaction(f);return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:p,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!p[y])return;let g=await this.connection.sendTransaction(p[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:p[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let k=f.findIndex(T=>T.txId===g);k>-1&&(f[k].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:p}}else{let y=[];for(let f=0;f<p.length;f+=1){let b=await this.connection.sendTransaction(p[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:p}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=he(c,["computeBudgetConfig"]),i=t?Ur(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Dn({instructions:d,payer:this.feePayer,signers:y})||Dn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d}=l||{},p=await Pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=p,a[b].length&&f.sign(...a[b])}),on(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await ji(this.connection,f,a[b].find(g=>g.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer]))),signedTxs:s};if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),d==null||d([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),d==null||d([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=he(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},zr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Un(g));let c=await Qi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Ur(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection),d=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],k=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zn(h))}else{let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zn(k))}else{let k=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zn(k))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:k}=g||{};if(p.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),on(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((S,x)=>{y[x].find(O=>O.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:p}}if(this.signAllTransactions){let h=await this.signAllTransactions(p);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let O=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:O,status:"sent",signedTx:h[I]}),k==null||k([...S]),I++,this.connection.onSignature(O,V=>{let F=S.findIndex(j=>j.txId===O);F>-1&&(S[F].status=V.err?"error":"success"),k==null||k([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(O)};return x(),{txIds:[],signedTxs:h}}else{let I=[];for(let S=0;S<h.length;S+=1){let x=await this.connection.sendTransaction(h[S],{skipPreflight:!0});I.push(x)}return{txIds:I,signedTxs:h}}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var ft=class{constructor(e){this._owner=e}get publicKey(){return ft.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return ft.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return ft.isKeyPair(this._owner)}get isPublicKey(){return ft.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!ft.isKeyPair(e)}};function Yi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Cb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Rb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function Lb(r){return[...new Set(r)]}var ea=r=>typeof r=="number",ta=r=>r?new Date(r):new Date,Kl=r=>ta(r).getTime();function na(r,e,t){let n=ea(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ra(r,e,t){let n=ea(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Nb(r,e){let n=Kl(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 ta(n)}import{PublicKey as Re}from"@solana/web3.js";var Hi=new Re("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Zi=new Re("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tn=new Re("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cl=new Re("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Rl=new Re("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qr=new Re("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$i=new Re("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ll=new Re("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ol=new Re("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nl=new Re("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ml=new Re("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),_l=new Re("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Vl=new Re("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),El=new Re("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fl=new Re("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vl=new Re("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wl=new Re("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Vb=new Re("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Eb=new Re("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Fb=new Re("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Yn={IDO_PROGRAM_ID_V1:Ml,IDO_PROGRAM_ID_V2:_l,IDO_PROGRAM_ID_V3:Vl,IDO_PROGRAM_ID_V4:El},vb={AMM_V4:$i,AMM_STABLE:Ll,CLMM_PROGRAM_ID:Ol,FARM_PROGRAM_ID_V3:Hi,FARM_PROGRAM_ID_V5:Zi,FARM_PROGRAM_ID_V6:Tn,OPEN_BOOK_PROGRAM:Rl,SERUM_PROGRAM_ID_V3:Qr,UTIL1216:Cl,Router:Nl,CREATE_CPMM_POOL_PROGRAM:Fl,CREATE_CPMM_POOL_AUTH:vl,CREATE_CPMM_POOL_FEE_ACC:Wl};import{PublicKey as Dl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";function be(r,e,t){return oe([r.toBuffer(),(t!=null?t:ql).toBuffer(),e.toBuffer()],new Dl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var Tt=1e4;function zb(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new Le(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Tt){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(Tt)),new Le(Tt-i.transferFeeBasisPoints)),u=new Le(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=zt(c.mul(new Le(i.transferFeeBasisPoints)),new Le(Tt)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=zt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(Tt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Ke(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=W(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Le(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Tt){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(Tt)),new Le(Tt-o.transferFeeBasisPoints)),c=new Le(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=zt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(Tt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=zt(r.mul(new Le(o.transferFeeBasisPoints)),new Le(Tt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function sn(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var Ji=(t=>(t.ALL="all",t.Strict="strict",t))(Ji||{}),Ul=(n=>(n.All="all",n.Standard="standard",n.Concentrated="concentrated",n))(Ul||{});var Xe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",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"},dg=N({},Xe);var ia="ray_tab_hash",eo="ray_req_hash",Gl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(ia);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(ia,r)),r},jr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=he(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(eo)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(N({},t),{time:Date.now(),session:Gl()}));try{localStorage.setItem(eo,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(eo,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return jr(W(N({},t),{logCount:r,removeLastLog:!0}))}};var In=ae("Raydium_Api"),to=new Map;async function Lg(r,e,t=1e3){let n;for(;n==null;)try{In.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){In.error(`Request ${r} failed, retry after ${t} ms`,i),await Xs(t)}return n}var Hr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Xl.create({baseURL:this.urlConfigs.BASE_HOST||Xe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return In.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(In.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:d}=a;return n&&jr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),In.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&jr({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),In.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Xe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Xe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return this.api.get(this.urlConfigs.CHAIN_TIME||Xe.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Xe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Xe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Xe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Xe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Xe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Xe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>to.has(s)?(n.push(to.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Xe.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{to.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Xe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Xe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Xe.CHECK_AVAILABILITY)).data}};import{merge as Ep}from"lodash";var Zr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",oa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as bo,TOKEN_PROGRAM_ID as Ht,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as td}from"@solana/spl-token";import{PublicKey as ii,SystemProgram as nd}from"@solana/web3.js";var no=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ie=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(no(e))}logInfo(...e){this.logger.info(no(e))}logAndCreateError(...e){let t=no(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as jm,createCloseAccountInstruction as Hm,createTransferInstruction as Zm,TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";import{PublicKey as $m,SystemProgram as Jm}from"@solana/web3.js";import ed from"bn.js";import{PublicKey as Pa,Keypair as Xm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import Ym from"bn.js";import{PublicKey as Em}from"@solana/web3.js";import da,{isBN as pa}from"bn.js";import{bits as zl,BitStructure as Yl,blob as Ql,Blob as jl,cstr as Hl,f32 as Zl,f32be as $l,f64 as Jl,f64be as em,greedy as tm,Layout as nm,ns64 as rm,ns64be as im,nu64 as om,nu64be as sm,offset as am,s16 as um,s16be as cm,s24 as lm,s24be as mm,s32 as dm,s32be as pm,s40 as fm,s40be as ym,s48 as bm,s48be as gm,s8 as wm,seq as Am,struct as Gg,Structure as km,u16 as Pm,u16be as hm,u24 as Tm,u24be as Im,u32 as xm,u32be as Bm,u40 as Sm,u40be as Km,u48 as Cm,u48be as Rm,u8 as Lm,UInt as Om,union as Nm,Union as Mm,unionLayoutDiscriminator as _m,utf8 as Vm}from"@solana/buffer-layout";var Qn=nm,sa=km,aa=Mm,Xg=Yl,ro=Om,ua=jl,zg=tm,$r=Lm,It=Pm,Yg=Tm,jn=xm,Qg=Sm,jg=Cm,ca=om,Hg=hm,Zg=Im,$g=Bm,Jg=Km,ew=Rm,tw=sm,nw=wm,rw=um,iw=lm,We=dm,ow=fm,sw=bm,aw=rm,uw=cm,cw=mm,lw=pm,mw=ym,dw=gm,pw=im,fw=Zl,yw=$l,bw=Jl,gw=em;var la=Am,ma=Nm,ww=_m,pe=Ql,Aw=Hl,kw=Vm,io=zl,oo=am;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new da(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new da(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jr=class extends Qn{constructor(t){super(8,t);this._lower=io(jn(),!1),this._upper=io(jn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function M(r){return new ro(1,r)}function ze(r){return new ro(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function fa(r){return new an(1,!0,r)}function ei(r){return new an(8,!0,r)}function ya(r){return new an(16,!0,r)}var _t=class extends Qn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new _t(pe(32),e=>new Em(e),e=>e.toBuffer(),r)}var so=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=$r()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function xw(r,e){return new so(r,e)}function De(r){return new _t($r(),Fm,vm,r)}function Fm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vm(r){return r?1:0}function Bw(r,e){let t=jn("length"),n=R([t,q(r,oo(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Sw(r,e,t){let n=R([w("tag"),e.replicate("data")]);function i({tag:o,data:s}){if(!o.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+o.toString("hex"));return s}return new _t(n,i,o=>({tag:r,data:o}),t)}function Wm(r){let e=jn("length"),t=R([e,pe(oo(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Kw(r){return new _t(Wm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Cw(r,e){let t=ma($r(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Rw(r,e,t){let n=R([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var ao=class extends sa{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new ao(r,e,t)}var uo=class extends aa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Lw(r,e,t){return new uo(r,e,t)}var co=class extends ua{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Ow(r){return new co(r)}function q(r,e,t){let n,i=typeof e=="number"?e:pa(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=pa(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return la(r,i,t)}var Yt=R([B("mint"),B("owner"),w("amount"),ze("delegateOption"),B("delegate"),M("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),B("closeAuthority")]);function Dm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function lo(r,...e){if(!Dm(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 mo(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 ba(r,e){lo(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ni=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),yt=(r,e)=>r<<32-e|r>>>e;var vw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function po(r){return typeof r=="string"&&(r=qm(r)),lo(r),r}var ti=class{clone(){return this._cloneInto()}},Ww={}.toString;function ga(r){let e=n=>r().update(po(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Um(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var wa=(r,e,t)=>r&e^~r&t,Aa=(r,e,t)=>r&e^r&t^e&t,ri=class extends ti{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){mo(this);let{view:t,buffer:n,blockLen:i}=this;e=po(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ni(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){mo(this),ba(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Um(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=ni(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Gm=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]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jt=new Uint32Array(64),fo=class extends ri{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)jt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=jt[m-15],p=jt[m-2],y=yt(d,7)^yt(d,18)^d>>>3,f=yt(p,17)^yt(p,19)^p>>>10;jt[m]=f+jt[m-7]+y+jt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=yt(a,6)^yt(a,11)^yt(a,25),p=l+d+wa(a,u,c)+Gm[m]+jt[m]|0,f=(yt(n,2)^yt(n,13)^yt(n,22))+Aa(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){jt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ka=ga(()=>new fo);var rA=ae("Raydium_Util");function ha({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:be(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Pa.default,amount:new Ym(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=zm}){let t=Xm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qm(r,t,e),seed:t}}function Qm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ka(n);return new Pa(i)}function yo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=xn}=r;return jm(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=xn}=r;return Hm(e,t,i,n,o)}async function xt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Yt.span,n),u=U(t).add(new ed(a)),c=Ye({fromPublicKey:i,programId:xn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Jm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:xn}),yo({mint:new $m(Me.address),tokenAccount:c.publicKey,owner:o,programId:xn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Hn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=xn}){return Zm(r,e,t,BigInt(String(n)),i,o)}var Zn=class extends Ie{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}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 be(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 i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Ht},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:td},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ha({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.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}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Ht,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u)return i&&s.equals(u),u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ii(t.tokenProgram||Ht),m=this.getAssociatedTokenAccount(n,new ii(l)),d=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=bo(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=p.instructions)==null||y.push(g),p.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&Bn.decode(P.data).mint.equals(n)&&Bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(g),p.instructionTypes.push(_.CreateATA);if(n.equals(J)&&i.amount){let P=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(p.instructions.push(Hn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Ht})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:p}}else if(n.equals(J)){let g=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return p.instructions.push(...g.instructions||[]),p.endInstructions.push(...g.endInstructions||[]),p.signers.push(...g.signers||[]),p.instructionTypes.push(...g.instructionTypes||[]),p.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:p}}else{let g=Ye({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),k=nd.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Bn.span,programId:l});return p.instructions.push(k,yo({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Ht,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await bo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Ht,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new ii(J).equals(o)){let p=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=bo(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Ht)&&Bn.decode(f.data).mint.equals(o)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Ht,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ii(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=he(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=m,p=he(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Td}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as Id}from"@solana/web3.js";import{PublicKey as Ca}from"@solana/web3.js";var go=R([M("instruction")]),wo=R([M("instruction")]),rd=R([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),q(w(),15,"padding")]),id=R([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),od=R([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),sd=R([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(rd,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),Ta=new Proxy(id,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ia=new Proxy(od,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),$n=new Proxy(sd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return W(N({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ad=R([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ao=R([M("instruction"),w("nonce"),q(ad,5,"rewardTimeInfo")]),ko=R([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Po=R([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),_A=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Jn=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),VA=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),xa=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Ba=R([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),$e=R([M("instruction"),w("amount")]),ud=R([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),fa("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),Sa=R([pe(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(ud,4,"votingMints"),ei("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),cd=R([ei("startTime"),ei("endTime"),M("kind"),q(M(),15,"reserved")]),ld=R([q(cd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),De("isUsed"),De("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),Ka=R([pe(8),B("voterAuthority"),B("registrar"),q(ld,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var GA=ae("Raydium_farm_config"),Ra=new Ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),La=new Ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Oa={3:Ta,5:Ia,6:$n},Na={3:Jn,5:xa,6:Ba},ho=r=>[3,5,6].indexOf(r)!==-1,To=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},Zt={"Standard SPL":0,"Option tokens":1},bt={[Hi.toString()]:3,[Zi.toString()]:5,[Tn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as pd,SYSVAR_CLOCK_PUBKEY as nr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as fd,TOKEN_PROGRAM_ID as ot,ASSOCIATED_TOKEN_PROGRAM_ID as yd}from"@solana/spl-token";import si from"bn.js";function Io(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function xo(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Bo(r,e){return oe([e.toBuffer()],r)}function So(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ko(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Co(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var er=ae("Raydium.farm.util");function tr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function rt({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Ma=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function _a(r){return{isSet:new nt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Ro(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function oi(r){let e=Na[r];return e||er.logWithError("invalid version",r),e}function md(r){let e=Oa[r];return e||er.logWithError("invalid version",r),e}function dd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new nt(t)))return r;let i=new nt(t).sub(r.lastSlot);r.lastSlot=new nt(t);for(let o of r.rewardInfos){if(e.amount.eq(new nt(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new nt(10).pow(new nt(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new nt(0)))continue;let o=nt.min(new nt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new nt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function ak({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new nt(10),u=[];for(let d of e){let p=ye(d);p.version===6?s=!0:o=!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:rt({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await hn(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=md(p);(!b||!b.data||b.data.length!==P.span)&&er.logWithError(`invalid farm state account info, pools.id, ${d}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Yt.span)&&er.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=oi(p);b&&b.data&&(b.data.length!==P.span&&er.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=dd(c[d].state,c[d].lpVault,m,i));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 nt(9)):a.pow(new nt(15)),b=p.rewardInfos.map((g,P)=>{let k=y.rewardDebts[P];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(k)});c[d].wrapped=W(N({},c[d].wrapped),{pendingRewards:b})}return c}function uk(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>na(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ra(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 Lo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=Ka.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var bd=ae("Raydium_farm_instruction"),rr={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 Va(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||bd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(go.span);go.encode({instruction:s},a);let u=[A({pubkey:t}),A({pubkey:n}),A({pubkey:o,isWritable:!1}),A({pubkey:un.programId,isWritable:!1}),A({pubkey:pd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function Ea(r){var n;let e=Buffer.alloc(Ao.span);Ao.encode({instruction:0,nonce:new si(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Ni,A({pubkey:r.farmId}),A({pubkey:r.farmAuthority,isWritable:!1}),A({pubkey:r.lpVault}),A({pubkey:r.lpMint,isWritable:!1}),A({pubkey:r.lockVault}),A({pubkey:r.lockMint,isWritable:!1}),A({pubkey:(n=r.lockUserAccount)!=null?n:Ne}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(A({pubkey:i.rewardMint,isWritable:!1}),A({pubkey:i.rewardVault}),A({pubkey:i.userRewardToken}));return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function Fa(r){let e=Buffer.alloc(wo.span);wo.encode({instruction:5},e);let t=[A({pubkey:ot,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.authority,isWritable:!1}),A({pubkey:r.lpVault,isWritable:!1}),A({pubkey:r.rewardVault}),A({pubkey:r.userRewardToken}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function gd(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=R([M("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:s,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:Vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...rr.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function wd(r,e,t,n){let i=R([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...rr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function Ad(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=R([M("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ot,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:Vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...rr.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function kd(r,e,t,n,i,o){let s=R([M("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Ve({keys:a,programId:r,data:u})}function Pd(r,e,t,n,i,o,s,a){let u=R([M("voterBump"),M("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...rr.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function hd(r,e,t,n,i,o,s,a,u,c,l,m){let d=R([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),ze("periods"),De("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:yd,isSigner:!1,isWritable:!1},{pubkey:tt,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([...rr.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:p,programId:r,data:f})}async function xk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Io(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Jn.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new si(0)))throw Error("user do not has new stake amount");let y=xo(e,a).publicKey,f=Bo(e,a).publicKey,{publicKey:b,nonce:g}=So(n,c,s),P=be(b,y,u).publicKey,{publicKey:k,nonce:T}=Ko(n,c,s),h=Co(t,i,o,s).publicKey,I=[],S=be(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(fd(s,S,s,y)),await r.getAccountInfo(b)===null){let j=kd(t,i,s,o,s,h);I.push(j,Pd(n,c,b,k,s,s,g,T))}let{index:V,isInit:F}=await Lo(r,c,b,y);return F||I.push(hd(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(gd(n,c,b,P,S,s,l,a,y,f,e,V,p),wd(n,c,b,k)),I}async function Bk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Io(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Jn.decode(m.data);if(d.voteLockedBalance.eq(new si(0)))throw Error("user has vote locked balance = 0");let p=xo(e,a).publicKey,y=Bo(e,a).publicKey,{publicKey:f}=So(n,c,s),b=be(f,p,u).publicKey,{publicKey:g}=Ko(n,c,s),P=Co(t,i,o,s).publicKey,k=[],{index:T,isInit:h}=await Lo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return k.push(Ad(n,c,f,s,P,g,b,be(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),k}function Oo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(ko.span);ko.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[A({pubkey:ot,isWritable:!1}),A({pubkey:n.id}),A({pubkey:n.lpVault,isWritable:!1}),A({pubkey:e}),A({pubkey:t}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:n.programId,keys:s,data:o})}function No({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(Po.span);Po.encode({instruction:4,isSet:new si(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Ni,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:i.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:t.programId,keys:s,data:o})}function Sk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],d=rt({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc($e.span);$e.encode({instruction:a,amount:u},p);let y=n===6?[A({pubkey:ot,isWritable:!1}),...c?[A({pubkey:un.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:new ie(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new ie(t.lpVault)}),A({pubkey:o[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(A({pubkey:o[f]})),y.push(A({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(A({pubkey:o[f]}));return new Ve({programId:l,keys:y,data:p})}function ir(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:2,amount:U(s)},l);let m=[A({pubkey:ot,isWritable:!1}),A({pubkey:u}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:new ie(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}function or(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:12,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function sr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:10,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Da(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:1,amount:U(s)},l);let m=[A({pubkey:ot,isWritable:!1}),A({pubkey:un.programId,isWritable:!1}),A({pubkey:u}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:new ie(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}var ar=class extends Ie{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Ro(W(N({},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:i=Tn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Pe(e.lpMint.address),lockInfo:{lockMint:Ra,lockVault:La},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ye({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption($n.span);u.addInstruction({instructions:[Id.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:$n.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ma({programId:new Pe(a.programId),poolId:l.publicKey}),y=tr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(Zt[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(_a(T));let{rewardPubKey:h,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:T,payer:c});I&&u.addInstruction(I),h||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let S=T.mint.equals(Ne)?new Pe(Me.address):T.mint;b.push({rewardMint:S,rewardVault:tr({programId:a.programId,poolId:l.publicKey,mint:S,type:"rewardVault"}),userRewardToken:h})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=Ea({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[P],instructionTypes:[k]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new Pe(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new Pe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(b=m.vault)!=null?b:Ne,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:[Oo({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.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(Ne)?new Pe(Me.address):m.mint,p=a.rewardInfos.findIndex(k=>new Pe(k.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Ne,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Oo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new Pe(Me.address):i.mint,m=tr({programId:new Pe(n.programId),poolId:new Pe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[No({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new Pe(Me.address):l.mint,d=tr({programId:new Pe(n.programId),poolId:new Pe(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=No({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,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=bt[d];ho(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Pe(n.programId),new Pe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=rt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let k={};for(let D of this.scope.account.tokenAccounts)if(a){let te=be(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&te.equals(D.publicKey)&&(k[D.mint.toString()]=D.publicKey)}else k[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=k[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",k);let I=[];for(let D of m){let te=s&&D.mint.address===J.toString(),ne=k[D.mint.address];if(!ne){let{account:se,instructionParams:mt}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(D.mint.address),notUseTokenAccount:te,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!te,associatedOnly:te?!1:a,checkCreateATAOwner:u});ne=se,mt&&P.addInstruction(mt)}k[D.mint.address]=ne,I.push(ne)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=oi(p).decode(x.data)),n.programId!==Tn.toString()&&!S){let{instruction:D,instructionType:te}=Va({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[te]})}let O=To({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new Pe(D))},F=p===6?Da(V):p===5?Wa(V):va(V),j={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[j[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,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=bt[n.programId];ho(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 b={};for(let O of this.scope.account.tokenAccounts)if(u){let V=be(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&V.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let O=rt({programId:new Pe(n.programId),poolId:new Pe(n.id),owner:this.scope.ownerPubKey,version:p}),V=await this.scope.connection.getAccountInfo(O);V||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:V}),oi(p).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===J.toString(),k=b[g.toString()];if(!k){let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});k=O,V&&f.addInstruction(V)}b[g.toString()]=k;let T=[];for(let O of d){let V=s&&O.mint.address===J.toString(),F=b[O.mint.address];if(!F){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(O.mint.address),notUseTokenAccount:V,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&f.addInstruction(D)}b[O.mint.address]=F,T.push(F)}let h=To({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:k,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new Pe(O))},S=p===6?ir(I):p===5?or(I):sr(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.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 i=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=bt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new Pe(Me.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Ro(W(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(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:[Td(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Fa({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.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:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=be(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)=>W(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,k=bt[f],T=b.address,h=n&&T===J.toString(),I=m[T];if(!I){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=j,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let j of g){let D=n&&j.mint.address===J.toString(),te=m[j.mint.address];if(!te){let{account:ne,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(j.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});te=ne,se&&l.addInstruction(se)}m[j.mint.address]=te,S.push(te)}let x=p[P],O={amount:Be,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(j=>new Pe(j))},V=k===6?ir(O):k===5?or(O):sr(O),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[k]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as it}from"@solana/web3.js";import{NATIVE_MINT as Iu,TOKEN_PROGRAM_ID as pi}from"@solana/spl-token";var Hk=R([ze("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),ze("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as xd}from"@solana/web3.js";import{MintLayout as qa,TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";var iP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new xd(e));return!t||t.data.length!==qa.span?void 0:qa.decode(t.data)},oP=({mint:r,decimals:e,programId:t=Bd,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},ai=r=>new de({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),sP=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=he(o,["amount","isRaw","name"]);return new fe(new de({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function aP(r){return r.address===Pt.address?Me:r}function uP(r){return r.address===Me.address?Pt:r}import{TOKEN_PROGRAM_ID as ur,ASSOCIATED_TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as ge,TransactionInstruction as Et,SystemProgram as Wo,SYSVAR_RENT_PUBKEY as qd}from"@solana/web3.js";var Mo=R([M("instruction"),w("amountIn"),w("minAmountOut")]),_o=R([M("instruction"),w("maxAmountIn"),w("amountOut")]),kP=R([M("instruction"),M("nonce")]),Vo=R([M("instruction"),M("nonce"),w("startTime")]),Sd=R([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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("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"),q(w(),3,"padding")]),Kd=R([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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("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"),q(w(),64,"padding")]),Eo=R([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Fo=R([M("instruction"),w("amountIn")]),PP={4:Sd,5:Kd},Ua=R([w("fee")]);import{PublicKey as Cd}from"@solana/web3.js";var Kn=new Cd("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Rd=R([w("x"),w("y"),w("price")]),Ld=R([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Rd,ln,"DataElement")]);function Od(r,e){return[0,ln-2]}function Nd(r){return[0,ln-2]}function Md(r){return[0,ln-2]}function _d(r,e,t){let[n,i]=Od(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ln-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)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function vo(r,e,t){let[n,i,o]=_d(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function cn(r,e,t){return e*r.multiplier/t}function Ga(r,e,t){return e*t/r.multiplier}function Vd(r,e){let[t,n]=Nd(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ln-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Ed(r,e){let[t,n]=Md(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ln-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Vd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].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-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Fd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ed(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].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-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function vd(r,e){let t=Xa(r,e,0,!1);return t[3]?t[0]:0}function za(r,e,t,n){let i=vo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,d]=Xa(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ga(r,p,i)}}function Ya(r,e,t,n){let i=vo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,d]=Fd(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ga(r,p,i)}}function Wd(r){let e=Ld.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 Qa(r,e,t,n){let i=vd(r,cn(r,e,vo(r,e,t)))/r.multiplier;return n?i:1/i}var Sn=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(Kn);e&&(this._layoutData=Wd(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Ha(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Eo.span);Eo.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Be:qs},a);let u=[A({pubkey:ur,isWritable:!1}),A({pubkey:new ge(e.id)}),A({pubkey:new ge(t.authority),isWritable:!1}),A({pubkey:new ge(t.openOrders),isWritable:!1}),A({pubkey:new ge(t.targetOrders)}),A({pubkey:new ge(e.lpMint.address)}),A({pubkey:new ge(t.vault.A)}),A({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(A({pubkey:Kn})),u.push(A({pubkey:new ge(e.marketId),isWritable:!1}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:new ge(t.marketEventQueue),isWritable:!1})),new Et({programId:new ge(e.programId),keys:u,data:a})}function Do(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ye(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Fo.span);Fo.encode({instruction:4,amountIn:U(i)},a);let u=[A({pubkey:ur,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.mintLp.address}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return s===5?u.push(A({pubkey:Kn})):(u.push(A({pubkey:o.id})),u.push(A({pubkey:o.id}))),u.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Za({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:k,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=R([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:ur,isSigner:!1,isWritable:!1},{pubkey:Dd,isSigner:!1,isWritable:!1},{pubkey:Wo.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,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:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],V=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:k,coinAmount:T,pcAmount:h},V),{instruction:new Et({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function EP(r){let e=R([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ge(r.id),isWritable:!1}),A({pubkey:new ge(r.authority),isWritable:!1}),A({pubkey:new ge(r.openOrders),isWritable:!1}),A({pubkey:new ge(r.vault.A),isWritable:!1}),A({pubkey:new ge(r.vault.B),isWritable:!1}),A({pubkey:new ge(r.mintLp.address),isWritable:!1}),A({pubkey:new ge(r.marketId),isWritable:!1}),A({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return new Et({programId:new ge(r.programId),keys:n,data:t})}function Ud({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ye(r),s=Buffer.alloc(Mo.span);Mo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[A({pubkey:ur,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders})];return i===4&&a.push(A({pubkey:o.targetOrders})),a.push(A({pubkey:o.vault.A}),A({pubkey:o.vault.B})),i===5&&a.push(A({pubkey:Kn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Gd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ye(r),s=Buffer.alloc(_o.span);_o.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[A({pubkey:Wo.programId,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return i===5&&a.push(A({pubkey:Kn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function ui(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ud(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Gd(W(N({},a),{maxAmountIn:i,amountOut:o}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function FP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Vo.span);Vo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=ye(r),o=[A({pubkey:ur,isWritable:!1}),A({pubkey:Wo.programId,isWritable:!1}),A({pubkey:qd,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.mintA.address,isWritable:!1}),A({pubkey:i.mintB.address,isWritable:!1}),A({pubkey:i.vault.A,isWritable:!1}),A({pubkey:i.vault.B,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:i.id,isWritable:!1}),A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new Et({programId:i.programId,keys:o,data:n})}function $a({poolKeys:r}){let e=R([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ge(r.id),isWritable:!1}),A({pubkey:new ge(r.authority),isWritable:!1}),A({pubkey:new ge(r.openOrders),isWritable:!1}),A({pubkey:new ge(r.vault.A),isWritable:!1}),A({pubkey:new ge(r.vault.B),isWritable:!1}),A({pubkey:new ge(r.mintLp.address),isWritable:!1}),A({pubkey:new ge(r.marketId),isWritable:!1}),A({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new ge(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as qe,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as gt,SystemProgram as Cn,Keypair as jo}from"@solana/web3.js";import gu from"bn.js";import tp from"bn.js";function Ja(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function WP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function DP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ci(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function qo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Uo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function cr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function eu(r,e){return cr(r,e)?null:qo(r,e)}function tu(r,e){return cr(r,e)?null:Uo(r,e)}var Xd=Buffer.from("amm_config","utf8"),zd=Buffer.from("pool","utf8"),Yd=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),nu=Buffer.from("position","utf8"),jd=Buffer.from("tick_array","utf8"),Hd=Buffer.from("operation","utf8"),Zd=Buffer.from("pool_tick_array_bitmap_extension","utf8");function XP(r,e){return oe([Xd,Ja(e)],r)}function ru(r,e,t,n){return oe([zd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Go(r,e,t){return oe([Yd,e.toBuffer(),t.toBuffer()],r)}function iu(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function we(r,e,t){return oe([jd,e.toBuffer(),ci(t)],r)}function mn(r,e,t,n){return oe([nu,e.toBuffer(),ci(t),ci(n)],r)}function Bt(r,e){return oe([nu,e.toBuffer()],r)}function li(r){return oe([Buffer.from("metadata","utf8"),kn.toBuffer(),r.toBuffer()],kn)}function lr(r){return oe([Hd],r)}function ut(r,e){return oe([Zd,e.toBuffer()],r)}import St from"bn.js";var me=new St(0),st=new St(1),Ft=new St(-1),at=new St(1).shln(64),mi=new St(1).shln(128),Xo=at.sub(st),mr=64,ou=mi.subn(1),Qe=-443636,Je=-Qe,Kt=new St("4295048016"),Ct=new St("79226673521066979257578248091"),su=16,au="59543866431248",uu="184467440737095516",cu="15793534762490258745",di=new St(10).pow(new St(6)),$d=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))($d||{}),QP={[500]:10,[3e3]:60,[1e4]:200},jP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,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},lu={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:[]},HP=new St("18446744073700000000");var Jd=15,le=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(i,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jd/2));for(let p=0;p<l.length;p++){let{publicKey:y}=we(t,n,l[p]);u.push(y)}let m=(await ht(e,u)).map(p=>p!==null?dr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(N({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=G.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/le.tickCount(t)),a=n?G.searchLowBitFromStart(i,o,s-1,1,t):G.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=_e-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<_e;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=we(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<_e;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=we(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(G.checkIsOutOfBoundary(e)){if(e>Je)return!1;let n=G.getTickArrayStartIndexByTick(Qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as $t}from"@solana/web3.js";import Ce from"bn.js";var zo=14,vt=class{static maxTickInTickarrayBitmap(e){return e*_e*dn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-le.tickCount(n):t+le.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*_e,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=eu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=tu(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},pr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(Je<=t)throw Error(`extensionTickBoundary check error: ${Je}, ${t}`);if(n<=Qe)throw Error(`extensionTickBoundary check error: ${n}, ${Qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=le.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=G.mergeTickArrayBitmap(e).shln(dn-1-a),c=cr(512,u)?null:qo(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=cr(512,u)?null:Uo(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(i=dn-i),i}};import Rt from"bn.js";var fr=class{static getfeeGrowthInside(e,t,n){let i=new Rt(0),o=new Rt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Rt(0),a=new Rt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,at),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,at),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,at),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,at),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Rt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Rt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Rt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Rt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,k;let a=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[Ke(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ke(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ke(new Rt(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ke(new Rt(new E(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as mu}from"@solana/spl-token";var je=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=we(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ft),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=je.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?pr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=we(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=we(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=pr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Qe||t>Je)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(N({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $t(d)});if(p.tokenMint.equals($t.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let y=new Ce(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=Z.mulDivFloor(f,p.emissionsPerSecondX64,at),k=p.rewardTotalEmissioned.add(P);s.push(W(N({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:k,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>Je&&(t=le.getArrayStartIndex(Je,e)+le.tickCount(e)),n<Qe&&(n=le.getArrayStartIndex(Qe,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)*dn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=fu.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=G.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=G.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=we(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=dr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(Bt(p,d).publicKey);let l=await ht(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=pu.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:T}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:k,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>W(N({},x),{pendingReward:new Ce(0)})),leverage:h,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await ht(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=dr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,k=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[k].toString()],I=T.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await fr.GetPositionFees(f,g,I,S),V=await fr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),g.tokenFeeAmountB=O.gte(new Ce(0))?O:new Ce(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Ce(0))?V[F]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var V;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new E(0))?u=c?Kt.add(new Ce(1)):Ct.sub(new Ce(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=Ke(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=je.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:me),u),g=Ke(p,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),k=c?P:new E(1).div(P),T=p.mul(new Ce(Math.floor((1-s)*1e10))).div(new Ce(1e10)),h=Ke(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(k).sub(I).abs(),x=I,O=new ve(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:sn(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:O,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new de(W(N({},u),{mint:u.address,isToken2022:u.programId===mu.toBase58()})),new de(W(N({},c),{mint:c.address,isToken2022:c.programId===mu.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:k,remainingAccounts:T}=await je.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},d),{amount:new fe(l,d.amount),fee:d.fee===void 0?void 0:new fe(l,d.fee)}),I=W(N({},p),{amount:new fe(m,p.amount),fee:p.fee===void 0?void 0:new fe(m,p.fee)}),S=W(N({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),x=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new fe(l,k);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:O,priceImpact:P,fee:V,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=G.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=G.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Ei(e.mintA.address).toString()],d=i[Ei(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=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:k}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(k.toString()).div(new E(10).pow(y)).mul(d.value)),S=new E(T.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(d.value)),x=S.div(I.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,j=e.rewardDefaultInfos.map(D=>{var se,mt;let te=D.mint.decimals,ne=i[D.mint.address];return u<((se=D.startTime)!=null?se:0)||u>((mt=D.endTime)!=null?mt:0)||!D.perSecond||!ne||te===void 0?0:new E(ne.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(te)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:j,apr:V+j.reduce((D,te)=>D+te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=Ke(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Ce(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new Ce(0);else if(l.lte(d)){let k=ce.getLiquidityFromTokenAmountA(l,d,f,!a),T=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?k:T}else b=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,d,f);return je.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,k;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[Ke(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ke(m.amountB,(g=t.mintB.extensions)==null?void 0:g.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),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new $t(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=du.decode(i.data),s=ut(e,new $t(n.id)).publicKey,a=await je.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function _h({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var k,T,h,I;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[Ke(m,(k=r.mintA.extensions)==null?void 0:k.feeConfig,a,!u),Ke(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var Z=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(st)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(st)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(mi).sub(t).mod(mi)}};function Ee(r,e){return Yo(r.mul(e),64,256)}function ep(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Yo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(mr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,st,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(mr);if(i)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,st,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Qe||e>Je)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new re("37481735321082"))),e>0&&(n=ou.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ct)||e.lt(Kt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=ep(n,32,128),o=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new re(0))&&s<su;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new re(au)),d=Yo(m.sub(new re(uu)),64,128).toNumber(),p=Yo(m.add(new re(cu)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=fn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(mr),s=t.sub(e);return i?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),st,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?Z.mulDivCeil(n,t.sub(e),at):Z.mulDivFloor(n,t.sub(e),at)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?Z.mulDivRoundingUp(a,st,Xo):a.shrn(mr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Xo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,i,!1),a=ce.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,i,o),a=ce.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new re(new E(u.toString()).mul(l).toFixed(0)),d=new re(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,k,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ke(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Ke(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)],[b,g]=[Ke(new re(new E(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),Ke(new re(new E(p.amountB.toString()).mul(d).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:sn(y.expirationTime,f.expirationTime)}}},pn=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?Kt.add(st):Ct.sub(st)),s){if(y.lt(Kt))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(Ct))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(me),b={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+le.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},g=p,P=n[p],k=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(k>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=je.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");g=V.nextStartIndex;let{publicKey:F}=we(e,t,g);x=F,P=n[g],S=G.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),h.tickNext<Qe?h.tickNext=Qe:h.tickNext>Je&&(h.tickNext=Je),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let O;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?O=y:O=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let V=S.liquidityNet;s&&(V=V.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,V)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=V!=b.tick&&!s&&P.startTickIndex===V,b.tick=V}++k}try{let{nextStartIndex:h,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(we(e,t,h).publicKey),p=h)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=i.gte(me);if(u){let l=Z.mulDivFloor(i,di.sub(new re(o.toString())),di);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ft).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ft),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Ft))&&(s.amountOut=i.mul(Ft)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new re(o),di.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=we(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new tp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=we(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Qe||e>Je}static nextInitTick(e,t,n,i,o){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<_e;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=_e-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<_e;){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 i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var oT=R([pe(8),M("bump"),It("index"),B(""),ze("protocolFeeRate"),ze("tradeFeeRate"),It("tickSpacing"),q(w(),8,"")]),np=R([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Qo=R([pe(8),De("initialized"),B("poolId"),q(np,1e3,"observations"),q(z(),5,"")]),rp=R([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),du=R([pe(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),It("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),We("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(rp,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),ip=R([z("growthInsideLastX64"),w("rewardAmountOwed")]),pu=R([pe(8),M("bump"),B("nftMint"),B("poolId"),We("tickLower"),We("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ip,3,"rewardInfos"),q(w(),8,"")]),sT=R([pe(8),M("bump"),B("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),op=R([We("tick"),ya("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),dr=R([pe(8),B("poolId"),We("startTickIndex"),q(op,_e,"ticks"),M("initializedTickCount"),q(M(),115,"")]),yu=R([pe(329),q(B(),100,"whitelistMints")]),fu=R([pe(8),B("poolId"),q(q(w(),8),zo,"positiveTickArrayBitmap"),q(q(w(),8),zo,"negativeTickArrayBitmap")]);var wu=ae("Raydium_Clmm"),wt={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]},xe=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=R([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let P=Buffer.from([...wt.createPool,...g]);return new gt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ye({fromPublicKey:i,programId:n}),[d,p]=[new v(o.address),new v(s.address)],y=[Cn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Qo.span),space:Qo.span,programId:n})],{publicKey:f}=ru(n,a,d,p),{publicKey:b}=Go(n,f,d),{publicKey:g}=Go(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new v(o.programId||qe),p,g,new v(s.programId||qe),ut(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],te=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},te);let ne=Buffer.from([...wt.openPosition,...te]);return new gt({keys:D,programId:e,data:ne})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=jo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:k}=be(n.wallet,y,qe),{publicKey:T}=li(y),{publicKey:h}=Bt(d,y),{publicKey:I}=mn(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=jo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:k}=be(n.wallet,y,qe),{publicKey:T}=li(y),{publicKey:h}=Bt(d,y),{publicKey:I}=mn(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],te=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new gu(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},te);let ne=Buffer.from([...wt.openPosition,...te]);return new gt({keys:D,programId:e,data:ne})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new v((await l(1))[0]);else{let x=jo.generate();d.push(x),m=x.publicKey}let[p,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,y,f),{publicKey:P}=we(p,y,b),{publicKey:k}=be(n.wallet,m,qe),{publicKey:T}=li(m),{publicKey:h}=Bt(p,m),{publicKey:I}=mn(p,y,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:d,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...wt.closePosition,...u]);return new gt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=be(n.wallet,i.nftMint,qe),{publicKey:a}=Bt(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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: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:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...wt.increaseLiquidity,...I]);return new gt({keys:h,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,qe),{publicKey:f}=Bt(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,qe),{publicKey:f}=Bt(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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: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:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:new gu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...wt.increaseLiquidity,...I]);return new gt({keys:h,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=R([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],S=Buffer.alloc(T.span);T.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...wt.decreaseLiquidity,...S]);return new gt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(c,l,m),{publicKey:y}=we(c,l,d),{publicKey:f}=be(i.wallet,n.nftMint,u),{publicKey:b}=Bt(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new v(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new v(e.rewardDefaultInfos[T].mint.address)});let k=[];return k.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,p,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ut(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:k,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g){let P=R([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),De("isBaseInput")]),k=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],h=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...wt.swap,...h]);return new gt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[p,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:y,f?y:p,u,m,o,s,a,!0,ut(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...wt.initReward,...f]);return new gt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=iu(o,s,i.mint).publicKey,u=lr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([M("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:U(l),endTime:U(m)},f);let b=Buffer.from([...wt.setRewardEmissions,...f]);return new gt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new v(t.rewardInfos[d].vault),c=new v(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=lr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([M("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...wt.collectReward,...l]);return new gt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[p,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as cp}from"@solana/web3.js";import{PublicKey as ap}from"@solana/web3.js";import Au from"bn.js";var ku=new Au(25),Pu=new Au(1e4),sp={4:3,5:3};var up=ae("Raydium_liquidity_serum");function hu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=ap.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw up.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 yr from"bn.js";function Zo({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function yn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function lp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function mp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=yn({name:"amm_associated_seed",programId:a,marketId:t}),l=yn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=mp({programId:a}),p=yn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=yn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=yn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=lp({programId:a,marketId:t}),g=yn({name:"target_associated_seed",programId:a,marketId:t}),P=yn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=hu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:k,lookupTableAccount:cp.default,configId:Zo({programId:a})}}var Ho;async function VT({connection:r,poolKeysList:e,config:t}){Ho||(Ho=new Sn({connection:r}),await Ho.initStableModelLayout());let n=e.map(s=>$a({poolKeys:s}));return(await Zs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=$s(s,"GetPoolData"),u=new yr(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),d=new yr(Mt(a,"pool_coin_amount")),p=new yr(Mt(a,"pool_pc_amount")),y=new yr(Mt(a,"pool_lp_supply")),f="0";try{f=Mt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new yr(f)}})}import He from"bn.js";var br=class extends Ie{constructor(t){super(t);this.stableLayout=new Sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new He(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ai(t[o?"mintB":"mintA"]),[u,c]=[new He(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new He(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new He(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let d=Be;s.isZero()||(d=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c));let p=vr(s.mul(l),new He(m==="base"?t.mintAmountA:t.mintAmountB).mul(new He(10).pow(new He(t[m==="base"?"mintA":"mintB"].decimals)))),f=new ve(new He(1)).add(i).mul(d).quotient,b=new fe(a,d),g=new fe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new it(n.lpMint.address)}),P=[p,y],k=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),k.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[O,V]=k,[F,j]=T,D=await this.getAmmPoolKeys(n.id),te=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ne}=Wt,se=he(Wt,["tokenAccount"]);te.addInstruction(se);let Sr=await l.handleTokenAccount({side:"in",amount:j,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:mt}=Sr,Nn=he(Sr,["tokenAccount"]);te.addInstruction(Nn);let Mn=await l.handleTokenAccount({side:"out",amount:0,mint:new it(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:hi}=Mn,Ti=he(Mn,["tokenAccount"]);return te.addInstruction(Ti),te.addInstruction({instructions:[Ha({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:ne,quoteTokenAccount:mt,lpTokenAccount:hi,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:j,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),te.addCustomComputeBudget(c),u===0&&await te.buildV0(),te.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new it(n.mintA.address),new it(n.mintB.address),new it(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.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}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:k}=S,T=he(S,["tokenAccount"]);b.addInstruction(T);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=he(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Do({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:k,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=pi,checkCreateATAOwner:d=!0,getEphemeralSigners:p,txVersion:y}){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 f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ne of this.scope.account.tokenAccountRawInfos)(b[ne.accountInfo.mint.toString()]===void 0||be(this.scope.ownerPubKey,ne.accountInfo.mint,pi).publicKey.equals(ne.pubkey))&&(b[ne.accountInfo.mint.toString()]=ne.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new He(0)),k=t.mintA.address===de.WSOL.mint.toString(),T=t.mintB.address===de.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:pi,mint:new it(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:pi,mint:new it(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let ne=[];for(let Wt of s.rewardInfos){let Sr=Wt.mint.address===de.WSOL.mint.toString();if(b[Wt.mint.address])ne.push(b[Wt.mint.address]);else{let{account:Mn,instructionParams:ps}=await this.scope.account.getOrCreateTokenAccount({mint:new it(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Sr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Mn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),ps&&f.addInstruction(ps),ne.push(Mn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],mt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ne},Nn=bt[s.programId],hi=Nn===6?ir(mt):Nn===5?or(mt):sr(mt),Ti={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[hi],instructionTypes:[Ti[Nn]]})}let O=await this.getAmmPoolKeys(t.id),V=Do({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[F,j]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),te=await xe.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:j},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...te.instructions],signers:te.signers,instructionTypes:[...te.instructionTypes],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var j;let b=c.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),g=c.useSOLBalance&&i.mint.equals(Iu),P=c.useSOLBalance&&o.mint.equals(Iu),k=this.createTxBuilder(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});k.addInstruction(h||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(k.addInstruction(S||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={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:V,instructionType:F}=Za(W(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:be(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return k.addInstruction({instructions:[V],instructionTypes:[F]}),k.addCustomComputeBudget(f),k.versionBuild({txVersion:p,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=Zo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ua.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===$i.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let x=Qa(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new He(0),g=new He(0);if(!f.isZero())if(p){g=zt(f.mul(ku),Pu);let x=f.sub(g),O=m.add(x);b=d.mul(x).div(O)}else{g=f.mul(new He(2)).div(new He(1e4));let x=f.sub(g);l==="quote"?b=new He(za(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new He(Ya(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new He(new E(b.toString()).mul(1-s).toFixed(0)),k=b,T=P,h=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:k,minAmountOut:T,currentPrice:y,executionPrice:h,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new it(l.address),programId:new it(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new it(m.address),programId:new it(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new it(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=he(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new it(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=he(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),c.addInstruction({instructions:[ui({version:k,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[k===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import At from"bn.js";var gr=class extends Ie{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)||ue.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new At(new ue(i.address).toBuffer()).gt(new At(new ue(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await xe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:W(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},lu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,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(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),k=n.useSOLBalance&&e.mintB.address===J.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(O||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await xe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:W(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(F),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,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,b=null,g=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});k&&(f=k),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id);console.log(123123444,S);let x=await xe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,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:i,amountMaxB:o,liquidity:s,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(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=xe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,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(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=xe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,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=i.useSOLBalance&&t.mintA.address===J.toString(),y=i.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(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=g,P&&d.addInstruction(P);let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=k,T&&d.addInstruction(T);let h=[];for(let O of t.rewardDefaultInfos){let V=i.useSOLBalance&&O.mint.address===J.toString(),F;if(O.mint.address===t.mintA.address)F=f;else if(O.mint.address===t.mintB.address)F=b;else{let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(O.mint.programId),mint:new ue(O.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&d.addInstruction(D)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await xe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let O=await xe.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),x=N(N({},x),O.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 i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=xe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=xe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=xe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 At(new E(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:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=xe.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(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:i,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=xe.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=xe.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:i=!0,checkCreateATAOwner:o=!1}){let s=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 ue(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:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=xe.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===J.toBase58(),p=s.useSOLBalance&&e.mintB.address===J.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?Kt.add(new At(1)):Ct.sub(new At(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});f=P,k&&m.addInstruction(k)}let b;if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});b=P,k&&m.addInstruction(k)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(xe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?be(this.scope.ownerPubKey,m.accountInfo.mint,s).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(k=>!k.liquidity.isZero()||k.rewardInfos.find(T=>!T.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:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ue(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=k,T&&l.addInstruction(T)}let b=c[d.mintB.address];if(!b){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ue(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=k,T&&l.addInstruction(T)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let k of d.rewardDefaultInfos){let T=n.useSOLBalance&&k.mint.address===J.toString(),h=c[k.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(k.mint.programId),mint:new ue(k.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,S&&l.addInstruction(S)}c[k.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(d.id);for(let k of t[m.id]){let T=xe.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:k,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new At(0),amountMinA:new At(0),amountMinB:new At(0)});l.addInstruction(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(lr(e).publicKey);return t?yu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as yi,TOKEN_PROGRAM_ID as en,AccountLayout as _u}from"@solana/spl-token";var dp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pp=Buffer.from("amm_config","utf8"),fp=Buffer.from("pool","utf8"),yp=Buffer.from("pool_lp_mint","utf8"),bp=Buffer.from("pool_vault","utf8"),gp=Buffer.from("observation","utf8");function wp(r){return oe([dp],r)}function Ap(r,e){return oe([pp,hp(e)],r)}function kp(r,e,t,n){return oe([fp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Pp(r,e){return oe([yp,e.toBuffer()],r)}function xu(r,e,t){return oe([bp,e.toBuffer(),t.toBuffer()],r)}function fi(r,e){return oe([gp,e.toBuffer()],r)}function hp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Bu({programId:r,mintA:e,mintB:t}){let n=Ap(r,0).publicKey,i=wp(r).publicKey,o=kp(r,n,e,t).publicKey,s=Pp(r,o).publicKey,a=xu(r,o,e).publicKey,u=xu(r,o,t).publicKey,c=fi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o,TOKEN_2022_PROGRAM_ID as Ku,ASSOCIATED_TOKEN_PROGRAM_ID as Tp}from"@solana/spl-token";var Su=ae("Raydium_Cpmm_ins"),Ar={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 Cu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=R([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Tp,isSigner:!1,isWritable:!1},{pubkey:Vs,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:k},I),new wr({keys:h,programId:r,data:Buffer.from([...Ar.initialize,...I])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){Su.info(123123,{mintA:c.toBase58(),mintB:l.toBase58(),lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()});let f=R([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Su.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.deposit,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=R([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:_s,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.withdraw,...g])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=R([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseInput,...P])})}function Nu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=R([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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(b.span);return b.encode({amountInMax:y,amountOut:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseOutput,...P])})}import Lt from"bn.js";var rx=R([pe(8),M("bump"),De("disableCreatePool"),It("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),Mu=R([pe(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends Ie{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e){let t=await this.scope.connection.getAccountInfo(new Y(e));if(!t)throw new Error(`pool not found: ${e}`);let n=Mu.decode(t.data),[i,o]=await this.scope.connection.getMultipleAccountsInfo([n.vaultA,n.vaultB]);if(!i)throw new Error(`pool vaultA info not found: ${n.vaultA.toBase58()}`);if(!o)throw new Error(`pool vaultB info not found: ${n.vaultB.toBase58()}`);return W(N({},n),{baseReserve:new Lt(_u.decode(i.data).amount.toString()).sub(n.protocolFeesMintA).sub(n.fundFeesMintA),quoteReserve:new Lt(_u.decode(o.data).amount.toString()).sub(n.protocolFeesMintB).sub(n.fundFeesMintB)})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=he(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var j,D,te;let d=i.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),p=c.mintA.address<c.mintB.address,[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===yi.toBase58(),k=i.useSOLBalance&&f.address===yi.toBase58(),[T,h]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:k?{payer:d,amount:g}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||O===void 0)throw Error("you don't has some token account");let F=Bu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[Cu(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,be(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:en),new Y((te=f.programId)!=null?te:en),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeBudgetConfig:s,config:a,txVersion:u}=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:c}=this.scope,{bypassAssociatedCheck:l,checkCreateATAOwner:m}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),d=await this.getRpcPoolInfo(t.id),{liquidity:p,anotherAmount:y}=this.computePairAmount({poolInfo:W(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),f=y.raw,b=t.mintA.address===yi.toString(),g=t.mintB.address===yi.toString(),P=this.createTxBuilder(),[k,T]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||(i?n:f).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:f}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(I||{});let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i?f:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?f:n}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(x||{}),!h&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",c.tokenAccounts);let O=await c.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),D=await c.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:O,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:V}=D,F=he(D,["tokenAccount"]);P.addInstruction(F);let j=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),V,h,S,new Y(j.vault.A),new Y(j.vault.B),k,T,new Y(t.lpMint.address),p,i?n:f,i?f:n)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),P.addCustomComputeBudget(s),P.versionBuild({txVersion:u})}async withdrawLiquidity(e){let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new Lt(1)).sub(i),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],{account:m}=this.scope,d=this.createTxBuilder(),[p,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=p.equals(J),b=y.equals(J),g,P,{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});g=k,T&&d.addInstruction(T);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:!b,checkCreateATAOwner:!1});P=h,I&&d.addInstruction(I),(!g||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let S=await m.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});S||this.logAndCreateError("cannot found lp token account","tokenAccounts",m.tokenAccounts);let x=await this.getCpmmPoolKeys(t.id);return d.addInstruction({instructions:[Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(x.authority),new Y(t.id),S,g,P,new Y(x.vault.A),new Y(x.vault.B),p,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),d.addCustomComputeBudget(o),d.versionBuild({txVersion:s})}async swap(e){var T,h,x,O,V,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new Y(t.mintA.address),new Y(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:en),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=he(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=he(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Ou(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),f,g,new Y(k.vault.A),new Y(k.vault.B),new Y((x=t.mintA.programId)!=null?x:en),new Y((O=t.mintB.programId)!=null?O:en),m,d,fi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Nu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),g,f,new Y(k.vault.B),new Y(k.vault.A),new Y((V=t.mintB.programId)!=null?V:en),new Y((F=t.mintA.programId)!=null?F:en),d,m,fi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,baseIn:i}){let o=new Lt(new E(t).mul(10**e[i?"mintA":"mintB"].decimals).toFixed(0)),s=ai(e[i?"mintB":"mintA"]),[a,u]=[new Lt(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Lt(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],c=new Lt(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",a.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?e.mintA.symbol:e.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",i?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let l=i?"base":"quote";this.logDebug("input side:",l);let m=o.mul(c).div(l==="base"?a:u),d=Be;o.isZero()||(d=Ip(m,a,u,c)[i?"amountB":"amountA"]);let y=new ve(new Lt(1)).add(n).mul(d).quotient,f=new fe(s,d),b=new fe(s,y);return this.logDebug("anotherAmount:",f.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:f,maxAnotherAmount:b,liquidity:m}}};function Ip(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Lt(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Lt(1))),{amountA:i,amountB:o}}var Pr=class extends Ie{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(Be)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Be)?-1:1}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}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=U(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Hn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[Hn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Vt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as xp}from"@solana/spl-token";import{PublicKey as Bp,Transaction as Jo,TransactionInstruction as Sp}from"@solana/web3.js";import Vu from"bn.js";var Ze=class extends Ie{static getPdaPoolId(e,t){return oe([Ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Vu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Ze.getPdaOwnerId(t,m,i,l).publicKey));let u=await ht(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==Ze.POOL_LAYOUT.span||b.data.length!==Ze.OWNER_LAYOUT.span)continue;let g=Ze.POOL_LAYOUT.decode(f.data),P=Ze.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new Vu(0))).filter(x=>!x).length!==3,I=o>k&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:k,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,O)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[O].debtAmount.add(P.tokenInfo[O].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];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(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(de.WSOL.mint),associatedOnly:u.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};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(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(de.WSOL.mint),associatedOnly:m.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Gr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Jo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Jo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Jo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=R([]),o=[{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:xp,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Sp({keys:o,programId:e,data:a})}},ct=Ze;ct.CLAIMED_NUM=3,ct.POOL_LAYOUT=R([pe(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(R([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),ct.OWNER_LAYOUT=R([pe(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(R([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),ct.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Bp(e)),ct.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ct.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ts}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Du}from"@solana/spl-token";import hr from"bn.js";import{TransactionInstruction as Cp,SYSVAR_RENT_PUBKEY as Rp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{createInitializeAccountInstruction as Fu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as vu}from"@solana/web3.js";function Kp(r="accountFlags"){let e=new Jr(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 es=R([pe(5),Kp("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"),pe(7)]);function Lp({programId:r,marketInfo:e}){let t=R([M("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),It("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:Rp,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}:[]),i=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},i),new Cp({keys:n,programId:r,data:i})}async function Wu({connection:r,wallet:e,marketInfo:t}){let n=new vu,i=await r.getMinimumBalanceForRentExemption(165);n.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Eu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Eu}),Fu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Fu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new vu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(es.span),space:es.span,programId:t.programId}),bn.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}),bn.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}),bn.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}),bn.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}),Lp({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:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:o,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var Rn=class extends Ie{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ye({fromPublicKey:u,programId:o}),l=Ye({fromPublicKey:u,programId:o}),m=Ye({fromPublicKey:u,programId:o}),d=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:Du}),f=Ye({fromPublicKey:u,programId:Du}),b=0,g=new hr(100);function P(){let V=new hr(0);for(;;)try{return{vaultOwner:ts.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new hr(25555)))throw Error("find vault owner error")}}let{vaultOwner:k,vaultSignerNonce:T}=P(),h=new hr(Math.round(10**e.decimals*n)),I=new hr(Math.round(n*10**t.decimals*i));if(h.eq(Be))throw Error("lot size is too small");if(I.eq(Be))throw Error("tick size or lot size is too small");let S=await Wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:k,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});let O=[];for await(let V of S.slice(1,S.length)){let F=this.createTxBuilder();F.addCustomComputeBudget(a),F.addInstruction({instructions:V.transaction.instructions,signers:V.signer,instructionTypes:V.instructionTypes});let j=await F.versionBuild({txVersion:s});O.push(j)}return x.versionMultiBuild({extraPreBuildData:O,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new ts(e.mint),quoteMin:new ts(t.mint)}},txVersion:s})}};import{PublicKey as Ir}from"@solana/web3.js";import{PublicKey as Op,TransactionInstruction as rs,SYSVAR_CLOCK_PUBKEY as Np}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as is}from"@solana/spl-token";var ns=R([M("instruction"),ca("amount")]),Tr=R([M("instruction")]);function xB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Op("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:is,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Vi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(ns.span);return ns.encode({instruction:1,amount:Number(e)},i),new rs({keys:n,programId:r,data:i})}function bi({programId:r},e){let t=[{pubkey:is,isSigner:!1,isWritable:!1},{pubkey:Vi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Tr.span);return Tr.encode({instruction:2},n),new rs({keys:t,programId:r,data:n})}function os(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Tr.span);Tr.encode({instruction:2},s);let a=[{pubkey:is,isWritable:!1,isSigner:!1},{pubkey:Np,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new rs({programId:e.programId,keys:a,data:s})}import qu from"bn.js";var Mp={[Yn.IDO_PROGRAM_ID_V1.toString()]:1,[Yn.IDO_PROGRAM_ID_V2.toString()]:2,[Yn.IDO_PROGRAM_ID_V3.toString()]:3,[Yn.IDO_PROGRAM_ID_V4.toString()]:4},Ln=class extends Ie{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Mp[t.programId];a||this.logAndCreateError("invalid version",a);let u=ye(t),[c,l]=[!new qu(e.coin).isZero(),!new qu(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:i});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:b}=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:i});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[bi({programId:new Ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={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 Ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[os(W(N({},g),{side:"base"}))]:[],...l?[os(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as _p}from"@solana/web3.js";import{MintLayout as Vp,TOKEN_2022_PROGRAM_ID as ss,TOKEN_PROGRAM_ID as as}from"@solana/spl-token";var xr=class extends Ie{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._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(Pt.address,Pt),this._mintGroup.official.add(Pt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,W(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Pt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new _p(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Vp.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.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 gi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n,this._owner=i?new ft(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ar({scope:this,moduleName:"Raydium_Farm"}),this.account=new Zn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new br({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new xr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Pr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new gr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new ct({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Rn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Ln({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){let t=Ep({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Hr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new gi(W(N({},t),{api:u}));return await c.fetchAvailabilityStatus(e.disableFeatureCheck),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Zr);return this._owner.publicKey}setOwner(e){return this._owner=e?new ft(e):void 0,this}get connection(){if(!this._connection)throw new Error(oa);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(Zr),new Error(Zr)}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 o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),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{TOKEN_PROGRAM_ID as ls,TOKEN_2022_PROGRAM_ID as us}from"@solana/spl-token";import{PublicKey as lt,TransactionInstruction as ms,SystemProgram as Gu}from"@solana/web3.js";import cs from"bn.js";function LS(r,e,t,n,i,o,s,a,u,c,l,m){let d=R([M("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1},{pubkey:new lt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new lt(t.id),isSigner:!1,isWritable:!0},{pubkey:new lt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ye(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(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ye(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 lt("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=ye(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 ms({keys:p,programId:r,data:y})}function OS(r,e,t,n,i,o,s,a,u,c){let l=R([M("instruction")]),m=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1},{pubkey:new lt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new lt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new lt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=ye(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=ye(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 lt("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=ye(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 ms({keys:m,programId:r,data:d})}function Uu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new lt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=ye(e),u=s.mintA.address===t;return[{pubkey:new lt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,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(us)||a.mintB.programId.equals(us)?[{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ut(new lt(String(r.programId)),new lt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function Fp(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=R([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1}];f.push(...Uu(a,c,o,t,n,p[0])),f.push(...Uu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new ms({keys:f,programId:r,data:b})}async function NS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ye(n.poolKey[0]),m=t.equals(l.mintA.address)?Kt.add(st):Ct.sub(st);return await xe.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new cs(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ui({poolKeys:l,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((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new cs(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?_.AmmV5SwapBaseIn:_.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],p=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Fp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,d,p,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new cs(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import zu from"bn.js";var ds=new zu(1e6);function vp(r,e,t){return r.mul(e).add(t).sub(new zu(1)).div(t)}function Xu(r,e,t){return r.mul(e).div(t)}var wi=class{static tradingFee(e,t){return vp(e,t,ds)}static protocolFee(e,t){return Xu(e,t,ds)}static fundFee(e,t){return Xu(e,t,ds)}};import Br from"bn.js";function Ai(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Wp(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=Ai(r,e);if(n.gt(On)){t=t.add(new Br(1));let i=r.div(t);n=Ai(r,t),n.gt(On)&&(i=i.add(new Br(1)))}return[t,e]}var On=new Br(0),ki=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Wp(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return Ai(e.mul(n),t).gt(On)&&s.gt(On)&&(s=s.add(new Br(1))),Ai(e.mul(i),t).gt(On)&&a.gt(On)&&(a=a.add(new Br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Yu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Yu||{}),Qu=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,i){let o=wi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=ki.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var ju={[Qr.toBase58()]:3},Hu={3:Qr};var Dp=R([pe(5),pe(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"),pe(7)]),Zu={3:Dp};import{PublicKey as $u}from"@solana/web3.js";var Pi=ae("Serum"),Ju=class{static getProgramId(e){let t=Hu[e];return t||Pi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||Pi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Zu[e];return t||Pi.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()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=$u.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return Pi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var SK=r=>r;export{mb as ACCOUNT_TYPE_SIZE,vb as ALL_PROGRAM_ID,Xd as AMM_CONFIG_SEED,Ll as AMM_STABLE,$i as AMM_V4,uf as ANAMint,Xe as API_URLS,Bl as AccountType,oT as AmmConfigLayout,Hr as Api,su as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,by as BN_100,gy as BN_1000,wy as BN_10000,yy as BN_FIVE,qs as BN_ONE,nn as BN_TEN,fy as BN_THREE,py as BN_TWO,Be as BN_ZERO,Xg as BitStructure,ua as Blob,Ol as CLMM_PROGRAM_ID,Vi as CLOCK_PROGRAM_ID,vl as CREATE_CPMM_POOL_AUTH,Wl as CREATE_CPMM_POOL_FEE_ACC,Fl as CREATE_CPMM_POOL_PROGRAM,gr as Clmm,xe as ClmmInstrument,ki as ConstantProductCurve,rx as CpmmConfigInfoLayout,wi as CpmmFee,Mu as CpmmPoolInfoLayout,vn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,dg as DEV_API_URLS,Eb as DEV_CREATE_CPMM_POOL_AUTH,Fb as DEV_CREATE_CPMM_POOL_FEE_ACC,Vb as DEV_CREATE_CPMM_POOL_PROGRAM,Rd as DataElement,cf as ETHMint,zo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ra as FARM_LOCK_MINT,La as FARM_LOCK_VAULT,Hi as FARM_PROGRAM_ID_V3,Zi as FARM_PROGRAM_ID_V5,Tn as FARM_PROGRAM_ID_V6,bt as FARM_PROGRAM_TO_VERSION,Na as FARM_VERSION_TO_LEDGER_LAYOUT,Oa as FARM_VERSION_TO_STATE_LAYOUT,di as FEE_RATE_DENOMINATOR,ds as FEE_RATE_DENOMINATOR_VALUE,Jd as FETCH_TICKARRAY_COUNT,$d as Fee,ee as Fraction,Yn as IDO_ALL_PROGRAM,Ml as IDO_PROGRAM_ID_V1,_l as IDO_PROGRAM_ID_V2,Vl as IDO_PROGRAM_ID_V3,El as IDO_PROGRAM_ID_V4,Vr as INSTRUCTION_PROGRAM_ID,_ as InstructionType,Ji as JupTokenType,Pu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,sp as LIQUIDITY_VERSION_TO_SERUM_VERSION,PP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,au as LOG_B_2_X32,uu as LOG_B_P_ERR_MARGIN_LOWER_X64,cu as LOG_B_P_ERR_MARGIN_UPPER_X64,zr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,ic as LogLevel,xi as Logger,es as MARKET_STATE_LAYOUT_V2,Dp as MARKET_STATE_LAYOUT_V3,Zu as MARKET_VERSION_TO_STATE_LAYOUT,Hs as MAX_BASE64_SIZE,Ct as MAX_SQRT_PRICE_X64,Je as MAX_TICK,An as MEMO_PROGRAM_ID,_s as MEMO_PROGRAM_ID2,kn as METADATA_PROGRAM_ID,Kt as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,Kn as MODEL_DATA_PUBKEY,Ju as Market,Z as MathUtil,Xo as MaxU64,ou as MaxUint128,Ft as NEGATIVE_ONE,af as NRVMint,st as ONE,Rl as OPEN_BOOK_PROGRAM,Hd as OPERATION_SEED,Qo as ObservationInfoLayout,np as ObservationLayout,yu as OperationLayout,so as OptionLayout,ft as Owner,Jp as PAIMint,Qd as POOL_REWARD_VAULT_SEED,zd as POOL_SEED,Zd as POOL_TICK_ARRAY_BITMAP_SEED,Yd as POOL_VAULT_SEED,nu as POSITION_SEED,ve as Percent,Ul as PoolFetchType,du as PoolInfoLayout,je as PoolUtils,pu as PositionInfoLayout,ip as PositionRewardInfoLayout,fr as PositionUtils,Ge as Price,sT as ProtocolPositionLayout,mi as Q128,at as Q64,$p as RAYMint,tt as RENT_PROGRAM_ID,gi as Raydium,rp as RewardInfo,Yu as RoundDirection,Di as Rounding,Nl as Router,ju as SERUM_PROGRAMID_TO_VERSION,Qr as SERUM_PROGRAM_ID_V3,Hu as SERUM_VERSION_TO_PROGRAMID,ia as SESSION_KEY,Ne as SOLMint,Pt as SOL_INFO,Hk as SPL_MINT_LAYOUT,ef as SRMMint,eo as STORAGE_KEY,Vs as SYSTEM_PROGRAM_ID,H as SqrtPriceMath,Sn as StableLayout,ao as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,jd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,QP as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,fu as TickArrayBitmapExtensionLayout,pr as TickArrayBitmapExtensionUtils,dr as TickArrayLayout,op as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,de as Token,fe as TokenAmount,Yr as TxBuilder,Wn as TxVersion,mr as U64Resolution,HP as U64_IGNORE_RANGE,ro as UInt,tf as USDCMint,sf as USDHMint,nf as USDTMint,Cl as UTIL1216,uo as Union,Ka as Voter,ld as VoterDepositEntry,cd as VoterLockup,Sa as VoterRegistrar,ud as VoterVotingMintConfig,J as WSOLMint,Jr as WideBits,_t as WrappedLayout,me as ZERO,Fs as _100_PERCENT,A as accountMeta,ey as add,Ur as addComputeBudget,Eo as addLiquidityLayout,Rw as array,go as associatedLedgerAccountLayout,io as bits,pe as blob,De as bool,Ro as calFarmRewardAmount,vp as ceilDiv,Dn as checkLegacyTxSize,qn as checkV0TxSize,Yi as chunkArray,Tr as claimLayout,Vt as closeAccountInstruction,Ni as commonSystemAccountMeta,Va as createAssociatedLedgerAccountInstruction,ae as createLogger,Ua as createPoolFeeLayout,Za as createPoolV4InstructionV2,kP as createPoolV4Layout,xt as createWSolAccountInstructions,Aw as cstr,Ff as currencyEquals,pl as decimalToFraction,Fm as decodeBool,Hf as div,vr as divCeil,$e as dwLayout,vm as encodeBool,Lg as endlessRetry,ll as eq,fw as f32,yw as f32be,bw as f64,gw as f64be,Po as farmAddRewardLayout,_A as farmLedgerLayoutV3_1,Jn as farmLedgerLayoutV3_2,VA as farmLedgerLayoutV5_1,xa as farmLedgerLayoutV5_2,Ba as farmLedgerLayoutV6_1,_a as farmRewardInfoToConfig,Ao as farmRewardLayout,ko as farmRewardRestartLayout,ad as farmRewardTimeInfoLayout,Ta as farmStateV3Layout,Ia as farmStateV5Layout,$n as farmStateV6Layout,ak as fetchMultipleFarmInfoAndUpdate,VT as fetchMultipleInfo,db as fetchMultipleMintInfos,oe as findProgramAddress,Mo as fixedSwapInLayout,_o as fixedSwapOutLayout,Xu as floorDiv,Gr as forecastTransactionSize,Wd as formatLayout,Ye as generatePubKey,be as getATAAddress,Ma as getAssociatedAuthority,Zo as getAssociatedConfigId,rt as getAssociatedLedgerAccount,tr as getAssociatedLedgerPoolAccount,lp as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Ap as getCpmmPdaAmmConfigId,kp as getCpmmPdaPoolId,Bu as getCreatePoolKeys,ta as getDate,Lo as getDepositEntryIndex,Ya as getDxByDyBaseIn,za as getDyByDxBaseIn,nb as getEpochInfo,oi as getFarmLedgerLayout,md as getFarmStateLayout,mp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,_h as getLiquidityFromAmounts,Jf as getMax,ht as getMultipleAccountsInfo,hn as getMultipleAccountsInfoWithCustomFlags,Qi as getMultipleLookupTableInfo,XP as getPdaAmmConfigId,ut as getPdaExBitmapAccount,Pp as getPdaLpMint,li as getPdaMetadataKey,fi as getPdaObservationId,lr as getPdaOperationAccount,Bt as getPdaPersonalPositionAddress,wp as getPdaPoolAuthority,ru as getPdaPoolId,iu as getPdaPoolRewardVaulId,Go as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,xu as getPdaVault,Pn as getRecentBlockHash,Io as getRegistrarAddress,Gl as getSessionKey,Qa as getStablePrice,Kl as getTime,Xy as getTimestamp,Co as getTokenOwnerRecordAddress,zb as getTransferAmountFee,Ke as getTransferAmountFeeV2,So as getVoterAddress,Ko as getVoterWeightRecordAddress,Bo as getVotingMintAuthority,xo as getVotingTokenMint,kd as governanceCreateTokenOwnerRecord,zg as greedy,cl as gt,jf as gte,ya as i128,WP as i16ToBytes,ci as i32ToBytes,ei as i64,fa as i8,Vo as initPoolLayout,yo as initTokenAccountInstruction,Lp as initializeMarket,Cb as intersection,ra as isDateAfter,na as isDateBefore,fl as isDecimal,$f as isMeaningfulNumber,ea as isNumber,ho as isValidFarmVersion,cr as isZero,ye as jsonInfo2PoolKeys,uk as judgeFarmType,qo as leadingZeros,tu as leastSignificantBit,Sd as liquidityStateV4Layout,Kd as liquidityStateV5Layout,Yf as lt,Qf as lte,rf as mSOLMint,ui as makeAMMSwapInstruction,Ha as makeAddLiquidityInstruction,No as makeAddNewRewardInstruction,bi as makeClaimInstruction,os as makeClaimInstructionV4,Cu as makeCreateCpmmPoolInInstruction,Ea as makeCreateFarmInstruction,Wu as makeCreateMarketInstruction,Fa as makeCreatorWithdrawFarmRewardInstruction,Ru as makeDepositCpmmInInstruction,va as makeDepositInstructionV3,Wa as makeDepositInstructionV5,Da as makeDepositInstructionV6,xk as makeDepositTokenInstruction,Sk as makeDepositWithdrawInstruction,FP as makeInitPoolInstructionV4,xB as makePurchaseInstruction,Oo as makeRestartRewardInstruction,$a as makeSimulatePoolInfoInstruction,Ou as makeSwapCpmmBaseInInInstruction,Nu as makeSwapCpmmBaseOutInInstruction,Ud as makeSwapFixedInInstruction,Gd as makeSwapFixedOutInstruction,NS as makeSwapInstruction,Hn as makeTransferInstruction,Lu as makeWithdrawCpmmInInstruction,sr as makeWithdrawInstructionV3,or as makeWithdrawInstructionV5,ir as makeWithdrawInstructionV6,Bk as makeWithdrawTokenInstruction,sn as minExpirationTime,jP as mockCreatePoolInfo,lu as mockV3CreatePoolInfo,Ld as modelDataInfoLayout,eu as mostSignificantBit,Gi as mul,Xi as notInnerObject,aw as ns64,pw as ns64be,ca as nu64,tw as nu64be,oo as offset,Nb as offsetDateTime,xw as option,U as parseBigNumberish,tn as parseNumberInfo,$s as parseSimulateLogToJson,Mt as parseSimulateValue,ha as parseTokenAccountResp,iP as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,B as publicKey,ns as purchaseLayout,id as realFarmStateV3Layout,od as realFarmStateV5Layout,sd as realFarmV6Layout,Ds as recursivelyDecimalToFraction,Do as removeLiquidityInstruction,Fo as removeLiquidityLayout,LS as route1Instruction,OS as route2Instruction,Fp as routeInstruction,Cw as rustEnum,rw as s16,uw as s16be,iw as s24,cw as s24be,We as s32,lw as s32be,ow as s40,mw as s40be,sw as s48,dw as s48be,nw as s8,q as seq,zp as setLoggerLevel,ml as shakeFractionDecimal,Zs as simulateMultipleInstruction,EP as simulatePoolInfoInstruction,Pl as simulateTransaction,Xs as sleep,Ei as solToWSol,aP as solToWSolToken,Yt as splAccountLayout,Gs as splitNumber,of as stSOLMint,Kw as str,R as struct,Zf as sub,Sw as tagged,qi as tenExponential,dl as toBN,hl as toBuffer,Us as toFraction,zf as toFractionWithDecimals,Ay as toPercent,ai as toToken,sP as toTokenAmount,oP as toTokenInfo,ky as toTokenPrice,Py as toTotalPrice,Ws as toUsdCurrency,Uo as trailingZeros,_i as tryParsePublicKey,z as u128,It as u16,Ja as u16ToBytes,Hg as u16be,Yg as u24,Zg as u24be,ze as u32,DP as u32ToBytes,$g as u32be,Qg as u40,Jg as u40be,jg as u48,ew as u48be,w as u64,M as u8,Lw as union,SK as unionArr,ww as unionLayoutDiscriminator,Lb as uniq,dd as updateFarmPoolInfo,jr as updateReqHistory,kw as utf8,Mi as validateAndParsePublicKey,To as validateFarmRewards,Bw as vec,Wm as vecU8,hd as voterStakeRegistryCreateDepositEntry,Pd as voterStakeRegistryCreateVoter,gd as voterStakeRegistryDeposit,wd as voterStakeRegistryUpdateVoterWeightRecord,Ad as voterStakeRegistryWithdraw,uP as wSolToSolToken,wo as withdrawRewardLayout,Rb as xor,Ow as zeros};
1
+ var ec=Object.defineProperty,tc=Object.defineProperties;var nc=Object.getOwnPropertyDescriptors;var Kr=Object.getOwnPropertySymbols;var ys=Object.prototype.hasOwnProperty,bs=Object.prototype.propertyIsEnumerable;var fs=(r,e,t)=>e in r?ec(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))ys.call(e,t)&&fs(r,t,e[t]);if(Kr)for(var t of Kr(e))bs.call(e,t)&&fs(r,t,e[t]);return r},W=(r,e)=>tc(r,nc(e));var he=(r,e)=>{var t={};for(var n in r)ys.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Kr)for(var n of Kr(r))e.indexOf(n)<0&&bs.call(r,n)&&(t[n]=r[n]);return t};import Xl from"axios";import{get as Ii,set as gs}from"lodash";import ws from"dayjs";import rc from"dayjs/plugin/utc";ws.extend(rc);var ic=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(ic||{}),xi=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 ws().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}},Bi={},As={};function ae(r){let e=Ii(Bi,r);if(!e){let t=Ii(As,r);e=new xi({name:r,logLevel:t}),gs(Bi,r,e)}return e}function zp(r,e){gs(As,r,e);let t=Ii(Bi,r);t&&(t.level=e)}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import yl from"big.js";import Xt from"bn.js";import ke from"bn.js";var gn=9e15,Gt=1e9,Si="0123456789abcdef",Rr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ki={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Ts,Ot,$=!0,Nr="[DecimalError] ",Ut=Nr+"Invalid argument: ",Is=Nr+"Precision limit exceeded",xs=Nr+"crypto unavailable",Bs="[object Decimal]",Ue=Math.floor,Oe=Math.pow,oc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ac=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ss=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,Q=7,uc=9007199254740991,cc=Rr.length-1,Ci=Lr.length-1,L={toStringTag:Bs};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};L.ceil=function(){return X(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Ut+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.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())+Q,n.rounding=1,t=lc(n,Os(n,t)),n.precision=r,n.rounding=e,X(Ot==2||Ot==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Oe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Fe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Oe(t,1/3),r=Ue((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Ae(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,X(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ue(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return Ae(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return X(Ae(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return X(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/_r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wn(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=wn(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/_r(5,r)),i=wn(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(i,e,t,!0)};L.hyperbolicTangent=L.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,Ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.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,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.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,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ci)return s=pt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ci)return s=pt(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),$=!0,X(s,l.precision=m,l.rounding=d,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&Ue(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,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)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if($=!1,a=m+p,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=Ae(s,n,a,1),_n(u.d,i=m,d))do if(a+=10,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=Ae(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(_n(u.d,i+=10,d));return $=!0,X(u,m,d)};L.minus=L.sub=function(r){var e,t,n,i,o,s,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 $?X(r,a,u):r}if(t=Ue(r.e/Q),l=Ue(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Mr(c,t),$?X(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.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]?X(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=Ae(t,r.abs(),0,3,1),e.s*=r.s):e=Ae(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Ri(this)};L.naturalLogarithm=L.ln=function(){return qt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,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)),$?X(r,a,u):r;if(o=Ue(m.e/Q),n=Ue(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Mr(c,n),$?X(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ut+r);return t.d?(e=Ks(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};L.sine=L.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())+Q,n.rounding=1,t=dc(n,Os(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ue((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Ae(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,X(n,u,l.rounding,r)};L.tangent=L.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=Ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,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=Ue(l.e/Q)+Ue(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Mr(o,t),$?X(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return Oi(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(et(r,0,Gt),e===void 0?e=n.rounding:et(e,0,8),X(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Pt(n,!0):(et(r,0,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r+1,e),t=Pt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Pt(i):(et(r,0,Gt),e===void 0?e=o.rounding:et(e,0,8),n=X(new o(i),r+i.e+1,e),t=Pt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ks(y)-p.e-1,s=o%Q,e.d[0]=Oe(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Ut+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*Q*2;m=Ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=Ae(c,n,o,1).minus(p).abs().cmp(Ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};L.toHexadecimal=L.toHex=function(r,e){return Oi(this,16,r,e)};L.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:et(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]?($=!1,t=Ae(t,r,0,e,1).times(r),$=!0,X(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return Oi(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Oe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return X(a,n,o);if(e=Ue(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=uc)return i=Cs(u,a,t,n),r.s<0?new u(1).div(i):X(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Oe(+a,c),e=t==0||!isFinite(t)?Ue(c*(Math.log("0."+Fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ri(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),_n(i.d,n,o)&&(e=n+10,i=X(Ri(r.times(qt(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=X(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,X(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Pt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(et(r,1,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r,e),t=Pt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(et(r,1,Gt),e===void 0?e=n.rounding:et(e,0,8)),X(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=Pt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return X(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=Pt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Fe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Dt(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Dt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function et(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Ut+r)}function _n(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Oe(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Oe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Oe(10,e-3)-1,s}function Cr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Si.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_r(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var Ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V,F,j,D=n.constructor,te=n.s==i.s?1:-1,ne=n.d,se=i.d;if(!ne||!ne[0]||!se||!se[0])return new D(!n.s||!i.s||(ne?se&&ne[0]==se[0]:!se)?NaN:ne&&ne[0]==0||!se?te*0:te/0);for(u?(p=1,l=n.e-i.e):(u=ft,p=Q,l=Ue(n.e/p)-Ue(i.e/p)),F=se.length,O=ne.length,g=new D(te),P=g.d=[],m=0;se[m]==(ne[m]||0);m++);if(se[m]>(ne[m]||0)&&l--,o==null?(I=o=D.precision,s=D.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/p+2|0,m=0,F==1){for(d=0,se=se[0],I++;(m<O||d)&&I--;m++)S=d*u+(ne[m]||0),P[m]=S/se|0,d=S%se|0;y=d||m<O}else{for(d=u/(se[0]+1)|0,d>1&&(se=r(se,d,u),ne=r(ne,d,u),F=se.length,O=ne.length),x=F,k=ne.slice(0,F),T=k.length;T<F;)k[T++]=0;j=se.slice(),j.unshift(0),V=se[0],se[1]>=u/2&&++V;do d=0,c=e(se,k,F,T),c<0?(h=k[0],F!=T&&(h=h*u+(k[1]||0)),d=h/V|0,d>1?(d>=u&&(d=u-1),f=r(se,d,u),b=f.length,T=k.length,c=e(f,k,b,T),c==1&&(d--,t(f,F<b?j:se,b,u))):(d==0&&(c=d=1),f=se.slice()),b=f.length,b<T&&f.unshift(0),t(k,f,T,u),c==-1&&(T=k.length,c=e(se,k,F,T),c<1&&(d++,t(k,F<T?j:se,T,u))),T=k.length):c===0&&(d++,k=[0]),P[m++]=d,c&&k[0]?k[T++]=ne[x]||0:(k=[ne[x]],T=1);while((x++<O||k[0]!==void 0)&&I--);y=k[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,Ts=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[d=0],u=l/Oe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/Q),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Oe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Oe(10,i-s):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]=Oe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Oe(10,Q-o),m[d]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ft)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Pt(r,e,t){if(!r.isFinite())return Ls(r);var n,i=r.e,o=Fe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Dt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Dt(-i-1)+o,t&&(n=t-s)>0&&(o+=Dt(n))):i>=s?(o+=Dt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Dt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Dt(n))),o}function Mr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Or(r,e,t){if(e>cc)throw $=!0,t&&(r.precision=t),Error(Is);return X(new r(Rr),e,1,!0)}function pt(r,e,t){if(e>Ci)throw Error(Is);return X(new r(Lr),e,t,!0)}function Ks(r){var e=r.length-1,t=e*Q+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 Dt(r){for(var e="";r--;)e+="0";return e}function Cs(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for($=!1;;){if(t%2&&(o=o.times(e),Ps(o.d,s)&&(i=!0)),t=Ue(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ps(e.d,s)}return $=!0,o}function ks(r){return r.d[r.d.length-1]&1}function Rs(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ri(r,e){var t,n,i,o,s,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?($=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Oe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=X(o.times(r),u,1),t=t.times(++l),a=s.plus(Ae(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&_n(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return X(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function qt(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,k=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?($=!1,l=k):l=e,g.precision=l+=y,t=Fe(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Fe(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Or(g,l+2,k).times(o+""),f=qt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=k,e==null?X(f,k,P,$=!0):f;for(m=f,u=s=f=Ae(f.minus(1),f.plus(1),l,1),d=X(f.times(f),l,1),i=3;;){if(s=X(s.times(d),l,1),c=u.plus(Ae(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Or(g,l+2,k).times(o+""))),u=Ae(u,new g(p),l,1),e==null)if(_n(u.d,l-y,P,a))g.precision=l+=y,c=s=f=Ae(m.minus(1),m.plus(1),l,1),d=X(f.times(f),l,1),i=a=1;else return X(u,g.precision=k,P,$=!0);else return g.precision=k,u;u=c,i+=2}}function Ls(r){return String(r.s*r.s/0)}function Li(r,e){var t,n,i;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(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),$&&(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 mc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ss.test(e))return Li(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(sc.test(e))t=16,e=e.toLowerCase();else if(oc.test(e))t=2;else if(ac.test(e))t=8;else throw Error(Ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Cs(n,new n(t),o,o*2)),c=Cr(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Mr(c,l),r.d=c,$=!1,s&&(r=Ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Vn.pow(2,u))),$=!0,r)}function dc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_r(5,t)),e=wn(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function wn(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for($=!1,u=t.times(t),a=new r(n);;){if(s=Ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function _r(r,e){for(var t=r;--e;)t*=r;return t}function Os(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=ks(t)?n?2:3:n?4:1,e;Ot=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Oi(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(et(t,1,Gt),n===void 0?n=p.rounding:et(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Ls(r);else{for(l=Pt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Cr(Pt(d),10,i),d.e=d.d.length),m=Cr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=Ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Ts),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Si.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Cr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Si.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Ps(r,e){if(r.length>e)return r.length=e,!0}function pc(r){return new this(r).abs()}function fc(r){return new this(r).acos()}function yc(r){return new this(r).acosh()}function bc(r,e){return new this(r).plus(e)}function gc(r){return new this(r).asin()}function wc(r){return new this(r).asinh()}function Ac(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function Pc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Ae(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Ae(r,e,o,1)),t}function hc(r){return new this(r).cbrt()}function Tc(r){return X(r=new this(r),r.e+1,2)}function Ic(r,e,t){return new this(r).clamp(e,t)}function xc(r){if(!r||typeof r!="object")throw Error(Nr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Gt,"rounding",0,8,"toExpNeg",-gn,0,"toExpPos",0,gn,"maxE",0,gn,"minE",-gn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Ki[t]),(n=r[t])!==void 0)if(Ue(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ut+t+": "+n);if(t="crypto",i&&(this[t]=Ki[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(Ut+t+": "+n);return this}function Bc(r){return new this(r).cos()}function Sc(r){return new this(r).cosh()}function Ns(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,hs(o)){c.s=o.s,$?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Li(c,o.toString())}else if(u!=="string")throw Error(Ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Ss.test(o)?Li(c,o):mc(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=xc,i.clone=Ns,i.isDecimal=hs,i.abs=pc,i.acos=fc,i.acosh=yc,i.add=bc,i.asin=gc,i.asinh=wc,i.atan=Ac,i.atanh=kc,i.atan2=Pc,i.cbrt=hc,i.ceil=Tc,i.clamp=Ic,i.cos=Bc,i.cosh=Sc,i.div=Kc,i.exp=Cc,i.floor=Rc,i.hypot=Lc,i.ln=Oc,i.log=Nc,i.log10=_c,i.log2=Mc,i.max=Vc,i.min=Ec,i.mod=Fc,i.mul=vc,i.pow=Wc,i.random=Dc,i.round=qc,i.sign=Uc,i.sin=Gc,i.sinh=Xc,i.sqrt=zc,i.sub=Yc,i.sum=Qc,i.tan=jc,i.tanh=Hc,i.trunc=Zc,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 i.config(r),i}function Kc(r,e){return new this(r).div(e)}function Cc(r){return new this(r).exp()}function Rc(r){return X(r=new this(r),r.e+1,3)}function Lc(){var r,e,t=new this(0);for($=!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 $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function hs(r){return r instanceof Vn||r&&r.toStringTag===Bs||!1}function Oc(r){return new this(r).ln()}function Nc(r,e){return new this(r).log(e)}function Mc(r){return new this(r).log(2)}function _c(r){return new this(r).log(10)}function Vc(){return Rs(this,arguments,"lt")}function Ec(){return Rs(this,arguments,"gt")}function Fc(r,e){return new this(r).mod(e)}function vc(r,e){return new this(r).mul(e)}function Wc(r,e){return new this(r).pow(e)}function Dc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:et(r,1,Gt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(xs);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Oe(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function qc(r){return X(r=new this(r),r.e+1,this.rounding)}function Uc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Gc(r){return new this(r).sin()}function Xc(r){return new this(r).sinh()}function zc(r){return new this(r).sqrt()}function Yc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,X(t,this.precision,this.rounding)}function jc(r){return new this(r).tan()}function Hc(r){return new this(r).tanh()}function Zc(r){return X(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Vn=L.constructor=Ns(Ki);Rr=new Vn(Rr);Lr=new Vn(Lr);var E=Vn;import{PublicKey as Fi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as Te,SystemProgram as Ms,SYSVAR_RENT_PUBKEY as Jc}from"@solana/web3.js";function A({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ni=[A({pubkey:$c,isWritable:!1}),A({pubkey:Ms.programId,isWritable:!1}),A({pubkey:Jc,isWritable:!1})];function Mi({publicKey:r,transformSol:e}){let t=_i(r.toString());if(t instanceof Te)return e&&t.equals(Ne)?J:t;if(e&&t.toString()===Ne.toBase58())return J;if(typeof t=="string"){if(t===Te.default.toBase58())return Te.default;try{return new Te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function _i(r){try{return new Te(r)}catch{return r}}var An=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_s=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new Te("SysvarRent111111111111111111111111111111111"),Vi=new Te("SysvarC1ock11111111111111111111111111111111"),kn=new Te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vr=new Te("Sysvar1nstructions1111111111111111111111111"),Vs=Ms.programId,$p=new Te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Jp=new Te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ef=new Te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),tf=new Te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),nf=new Te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),rf=new Te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),of=new Te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),sf=new Te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),af=new Te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),uf=new Te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),cf=new Te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Te("So11111111111111111111111111111111111111112"),Ne=Te.default;function Ei(r){return Mi({publicKey:r,transformSol:!0})}import{PublicKey as el}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var ht={chainId:101,address:el.default.toBase58(),programId:Es.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Es.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 vi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Fi&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Fi(Me.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Fi.default:Mi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=vi;de.WSOL=new vi(W(N({},Me),{mint:Me.address}));import Fr from"big.js";import rl from"bn.js";import il from"decimal.js-light";import tl from"toformat";var nl=tl,En=nl;var Er=ae("module/fraction"),Wi=En(Fr),Fn=En(il),ol={[0]:Fn.ROUND_DOWN,[1]:Fn.ROUND_HALF_UP,[2]:Fn.ROUND_UP},sl={[0]:Fr.roundDown,[1]:Fr.roundHalfUp,[2]:Fr.roundUp},ee=class{constructor(e,t=new rl(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ee(this.denominator,this.numerator)}add(e){let t=e instanceof ee?e:new ee(U(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.add(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ee?e:new ee(U(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.sub(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ee?e:new ee(U(e));return new ee(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ee?e:new ee(U(e));return new ee(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<=0&&Er.logWithError(`${e} is not positive.`),Fn.set({precision:e+1,rounding:ol[n]});let i=new Fn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<0&&Er.logWithError(`${e} is negative.`),Wi.DP=e,Wi.RM=sl[n]||1,new Wi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var al=ae("Raydium_price"),Ge=class extends ee{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ee(qi(n.decimals),qi(i.decimals))}get raw(){return new ee(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&al.logWithError("mul token not equals");let n=super.mul(t);return new Ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ui=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},vn=Ui;vn.SOL=new Ui(ht);function Ff(r,e){return r instanceof de&&e instanceof de?r.equals(e):r instanceof de||e instanceof de?!1:r===e}import ul from"bn.js";var Fs=new ee(new ul(100)),ve=class extends ee{toSignificant(e=5,t,n){return this.mul(Fs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Fs).toFixed(e,t,n)}};function Se(r){if(r instanceof ve)return new ee(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof fe)try{return Se(r.toExact())}catch{return new ee(Be)}if(r instanceof ee)return r;let e=String(r),t=tn(e);return new ee(t.numerator,t.denominator)}function zf(r){var n;if(r instanceof ve)return{fr:new ee(r.numerator,r.denominator)};if(r instanceof Ge)return{fr:r.adjusted};if(r instanceof fe)return{fr:Se(r.toExact()),decimals:r.token.decimals};if(r instanceof ee)return{fr:r};let e=String(r),t=tn(e);return{fr:new ee(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Yf(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Be)}function cl(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.gt(Be)}function Qf(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.lte(Be)}function jf(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.gte(Be)}function ll(r,e){if(r==null||e==null)return!1;let t=Se(r),n=Se(e);return t.sub(n).numerator.eq(Be)}function Hf(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);try{return t.div(n)}catch{return t}}function Zf(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);return t.sub(n)}function $f(r){return r==null?!1:!ll(r,0)}function Jf(r,e){return cl(e,r)?e:r}function Gi(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);return t.mul(n)}function ey(r,e){if(r==null||e==null)return;let t=Se(r),n=Se(e);return t.add(n)}var Di=(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))(Di||{}),Be=new ke(0),qs=new ke(1),py=new ke(2),fy=new ke(3),yy=new ke(5),nn=new ke(10),by=new ke(100),gy=new ke(1e3),wy=new ke(1e4),vs=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof ke)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ke(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=vs||r<=-vs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ke(String(r))):typeof r=="bigint"?new ke(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ke(0))}function qi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof ke)return{numerator:r.toString(),denominator:"1"};if(r instanceof ee)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function vr(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 ml(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function dl(r,e=0){return r instanceof ke?r:new ke(ml(Us(r).mul(nn.pow(new ke(String(e))))))}function Us(r){if(r instanceof ve)return new ee(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof fe)try{return Us(r.toExact())}catch{return new ee(Be)}if(r instanceof ee)return r;let e=String(r),t=tn(e);return new ee(t.numerator,t.denominator)}function Ay(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new ke(t),new ke(n).mul(e!=null&&e.alreadyDecimaled?new ke(100):new ke(1)))}function ky(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new de({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new ke(o).mul(nn.pow(new ke(e.decimals))):o,u=new ke(s).mul(nn.pow(new ke(i.decimals)));return new Ge({baseToken:i,denominator:u.toString(),quoteToken:new de(W(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Ws(r){let e=new vn({decimals:6,symbol:"usd",name:"usd"}),t=dl(Gi(r,10**e.decimals));return new rn(e,t)}function Py(r,e){return Ws(!e||!r?0:Gi(r,e))}function pl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ee(e,t)}function fl(r){return r instanceof E}function Ds(r){return fl(r)?pl(r):Array.isArray(r)?r.map(e=>Ds(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ds(t)])):r}var bl=ae("Raydium_amount"),Wr=En(yl);function Gs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):bl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends ee{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new 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,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends ee{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Gs(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"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 rn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new rn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.currency.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Xs(r){new Promise(e=>setTimeout(e,r))}function Xy(){return new Date().getTime()}function Xi(r){return typeof r=="object"&&r!==null&&![de,fe,gl,ee,wl,Ge,ve].some(e=>typeof e=="object"&&r instanceof e)}function ye(r){return typeof r=="string"?_i(r):Array.isArray(r)?r.map(e=>ye(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ye(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as ji,Transaction as Gn,TransactionMessage as Xn,VersionedTransaction as zn}from"@solana/web3.js";import Sl from"axios";var Wn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Wn||{}),_={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 Ys,ComputeBudgetProgram as zs,Transaction as qr,TransactionMessage as Al,Keypair as Qs,VersionedTransaction as js}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),Hs=1644;function Ur(r){let e=[],t=[];return r.microLamports&&(e.push(zs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(zs.setComputeUnitLimit({units:r.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Gr(r,e){r.length<1&&Nt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Nt.logWithError(`no signers provided:, ${e.toString()}`);let t=new qr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Hs}catch{return!1}}async function Zs(r,e,t,n=!0){let i=new Ys("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new qr;s.feePayer=i;for(let c of e)Gr([...s.instructions,c],[i])||(o.push(s),s=new qr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Pl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Nt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Nt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Nt.debug("filteredLog:",u),l.length||Nt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function $s(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Nt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Mt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Nt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=Ys.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Pl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");o.push(p)}let s=o.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(s.length/u);c++)a.push(s.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 i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Nt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Dn({instructions:r,payer:e,signers:t}){return Gr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Qs.generate().publicKey.toString()}){let o=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new js(o).serialize()).toString("base64").length<Hs}catch{return!1}}var Dr={time:0,data:void 0};async function nb(r){if(!Dr.data||(Date.now()-Dr.time)/1e3>30){let e=await r.getEpochInfo();return Dr={time:Date.now(),data:e},e}else return Dr.data}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function on(r){let e=[];return r.forEach(t=>{t instanceof qr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Qs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof js&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Js,AddressLookupTableAccount as Xr}from"@solana/web3.js";import{PublicKey as Tl}from"@solana/web3.js";import{getTransferFeeConfig as Il,unpackMint as xl}from"@solana/spl-token";var zi=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Yi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Yi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&zi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&zi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Tl(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&zi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>W(N({},i),{accountInfo:n[o]}))}var Bl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Bl||{}),mb=1;async function db({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await hn(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=xl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=W(N({},a),{feeConfig:(o=Il(a))!=null?o:void 0})}return n}async function Qi({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Js(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Xr({key:s,state:Xr.deserialize(o.data)});n[s.toString()]=a,zr[s.toString()]=a}return n}var zr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Xr({key:new Js("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Xr.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 Yr=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}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 Sl.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}=Ur(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:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new Gn;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()=>{var i;let n=await Pn(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),on([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await ji(this.connection,t,this.signers.find(o=>o.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer]),signedTx:t};if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0}),signedTx:o[0]}}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var p;let{sequentially:l,onTxUpdate:m}=c||{},d=await Pn(this.connection);if((p=this.owner)!=null&&p.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=d,await ji(this.connection,y,a[f].find(b=>b.publicKey.equals(this.owner.publicKey))?a[f]:[...a[f],this.owner.signer])))),signedTxs:s};if(this.signAllTransactions){let y=s.map((b,g)=>(b.recentBlockhash=d,a[g].length&&b.sign(...a[g]),b));on(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},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:i}=d,o=he(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},zr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Un(p));let c=await Qi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Xn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new zn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var p;if(on([m]),(p=this.owner)!=null&&p.isKeyPair){this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:!0}),{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:!0}),signedTx:y[0]}}throw new Error("please connect wallet first")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var d;on(s);let{sequentially:l,onTxUpdate:m}=c||{};if((d=this.owner)!=null&&d.isKeyPair){let{lastValidBlockHeight:p,blockhash:y}=await this.connection.getLatestBlockhash();return s.forEach((f,b)=>{a[b].find(g=>g.publicKey.equals(this.owner.publicKey))||f.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async f=>{let b=await this.connection.sendTransaction(f);return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:p,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!p[y])return;let g=await this.connection.sendTransaction(p[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:p[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let k=f.findIndex(T=>T.txId===g);k>-1&&(f[k].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:p}}else{let y=[];for(let f=0;f<p.length;f+=1){let b=await this.connection.sendTransaction(p[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:p}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=he(c,["computeBudgetConfig"]),i=t?Ur(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Dn({instructions:d,payer:this.feePayer,signers:y})||Dn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d}=l||{},p=await Pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=p,a[b].length&&f.sign(...a[b])}),on(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await ji(this.connection,f,a[b].find(g=>g.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer]))),signedTxs:s};if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let b=0,g=[],P=async()=>{if(!f[b])return;let k=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:k,status:"sent",signedTx:f[b]}),d==null||d([...g]),b++,this.connection.onSignature(k,T=>{let h=g.findIndex(I=>I.txId===k);h>-1&&(g[h].status=T.err?"error":"success"),d==null||d([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:g.map(k=>k.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=he(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},zr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Un(g));let c=await Qi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Ur(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection),d=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],k=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zn(h))}else{let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new zn(k))}else{let k=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new zn(k))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:k}=g||{};if(p.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),on(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((S,x)=>{y[x].find(O=>O.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:p}}if(this.signAllTransactions){let h=await this.signAllTransactions(p);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let O=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:O,status:"sent",signedTx:h[I]}),k==null||k([...S]),I++,this.connection.onSignature(O,V=>{let F=S.findIndex(j=>j.txId===O);F>-1&&(S[F].status=V.err?"error":"success"),k==null||k([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(O)};return x(),{txIds:[],signedTxs:h}}else{let I=[];for(let S=0;S<h.length;S+=1){let x=await this.connection.sendTransaction(h[S],{skipPreflight:!0});I.push(x)}return{txIds:I,signedTxs:h}}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function Yi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Cb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Rb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function Lb(r){return[...new Set(r)]}var ea=r=>typeof r=="number",ta=r=>r?new Date(r):new Date,Kl=r=>ta(r).getTime();function na(r,e,t){let n=ea(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ra(r,e,t){let n=ea(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Nb(r,e){let n=Kl(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 ta(n)}import{PublicKey as Re}from"@solana/web3.js";var Hi=new Re("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Zi=new Re("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tn=new Re("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cl=new Re("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Rl=new Re("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qr=new Re("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$i=new Re("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ll=new Re("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ol=new Re("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nl=new Re("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ml=new Re("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),_l=new Re("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Vl=new Re("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),El=new Re("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fl=new Re("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vl=new Re("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wl=new Re("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Vb=new Re("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Eb=new Re("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Fb=new Re("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Yn={IDO_PROGRAM_ID_V1:Ml,IDO_PROGRAM_ID_V2:_l,IDO_PROGRAM_ID_V3:Vl,IDO_PROGRAM_ID_V4:El},vb={AMM_V4:$i,AMM_STABLE:Ll,CLMM_PROGRAM_ID:Ol,FARM_PROGRAM_ID_V3:Hi,FARM_PROGRAM_ID_V5:Zi,FARM_PROGRAM_ID_V6:Tn,OPEN_BOOK_PROGRAM:Rl,SERUM_PROGRAM_ID_V3:Qr,UTIL1216:Cl,Router:Nl,CREATE_CPMM_POOL_PROGRAM:Fl,CREATE_CPMM_POOL_AUTH:vl,CREATE_CPMM_POOL_FEE_ACC:Wl};import{PublicKey as Dl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";function be(r,e,t){return oe([r.toBuffer(),(t!=null?t:ql).toBuffer(),e.toBuffer()],new Dl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var It=1e4;function zb(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new Le(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===It){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(It)),new Le(It-i.transferFeeBasisPoints)),u=new Le(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=zt(c.mul(new Le(i.transferFeeBasisPoints)),new Le(It)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=zt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(It)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Ke(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=W(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Le(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===It){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(It)),new Le(It-o.transferFeeBasisPoints)),c=new Le(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=zt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(It)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=zt(r.mul(new Le(o.transferFeeBasisPoints)),new Le(It)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function sn(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var Ji=(t=>(t.ALL="all",t.Strict="strict",t))(Ji||{}),Ul=(n=>(n.All="all",n.Standard="standard",n.Concentrated="concentrated",n))(Ul||{});var Xe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",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"},dg=N({},Xe);var ia="ray_tab_hash",eo="ray_req_hash",Gl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(ia);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(ia,r)),r},jr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=he(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(eo)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(N({},t),{time:Date.now(),session:Gl()}));try{localStorage.setItem(eo,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(eo,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return jr(W(N({},t),{logCount:r,removeLastLog:!0}))}};var In=ae("Raydium_Api"),to=new Map;async function Lg(r,e,t=1e3){let n;for(;n==null;)try{In.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){In.error(`Request ${r} failed, retry after ${t} ms`,i),await Xs(t)}return n}var Hr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Xl.create({baseURL:this.urlConfigs.BASE_HOST||Xe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return In.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(In.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:d}=a;return n&&jr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),In.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&jr({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),In.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Xe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Xe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return this.api.get(this.urlConfigs.CHAIN_TIME||Xe.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Xe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Xe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Xe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Xe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Xe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Xe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>to.has(s)?(n.push(to.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Xe.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{to.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Xe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Xe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Xe.CHECK_AVAILABILITY)).data}};import{merge as Ep}from"lodash";var Zr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",oa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as bo,TOKEN_PROGRAM_ID as Ht,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as td}from"@solana/spl-token";import{PublicKey as ii,SystemProgram as nd}from"@solana/web3.js";var no=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ie=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(no(e))}logInfo(...e){this.logger.info(no(e))}logAndCreateError(...e){let t=no(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as jm,createCloseAccountInstruction as Hm,createTransferInstruction as Zm,TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";import{PublicKey as $m,SystemProgram as Jm}from"@solana/web3.js";import ed from"bn.js";import{PublicKey as Pa,Keypair as Xm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import Ym from"bn.js";import{PublicKey as Em}from"@solana/web3.js";import da,{isBN as pa}from"bn.js";import{bits as zl,BitStructure as Yl,blob as Ql,Blob as jl,cstr as Hl,f32 as Zl,f32be as $l,f64 as Jl,f64be as em,greedy as tm,Layout as nm,ns64 as rm,ns64be as im,nu64 as om,nu64be as sm,offset as am,s16 as um,s16be as cm,s24 as lm,s24be as mm,s32 as dm,s32be as pm,s40 as fm,s40be as ym,s48 as bm,s48be as gm,s8 as wm,seq as Am,struct as Gg,Structure as km,u16 as Pm,u16be as hm,u24 as Tm,u24be as Im,u32 as xm,u32be as Bm,u40 as Sm,u40be as Km,u48 as Cm,u48be as Rm,u8 as Lm,UInt as Om,union as Nm,Union as Mm,unionLayoutDiscriminator as _m,utf8 as Vm}from"@solana/buffer-layout";var Qn=nm,sa=km,aa=Mm,Xg=Yl,ro=Om,ua=jl,zg=tm,$r=Lm,xt=Pm,Yg=Tm,jn=xm,Qg=Sm,jg=Cm,ca=om,Hg=hm,Zg=Im,$g=Bm,Jg=Km,ew=Rm,tw=sm,nw=wm,rw=um,iw=lm,We=dm,ow=fm,sw=bm,aw=rm,uw=cm,cw=mm,lw=pm,mw=ym,dw=gm,pw=im,fw=Zl,yw=$l,bw=Jl,gw=em;var la=Am,ma=Nm,ww=_m,pe=Ql,Aw=Hl,kw=Vm,io=zl,oo=am;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new da(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new da(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jr=class extends Qn{constructor(t){super(8,t);this._lower=io(jn(),!1),this._upper=io(jn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function M(r){return new ro(1,r)}function ze(r){return new ro(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function fa(r){return new an(1,!0,r)}function ei(r){return new an(8,!0,r)}function ya(r){return new an(16,!0,r)}var _t=class extends Qn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new _t(pe(32),e=>new Em(e),e=>e.toBuffer(),r)}var so=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=$r()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function xw(r,e){return new so(r,e)}function De(r){return new _t($r(),Fm,vm,r)}function Fm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vm(r){return r?1:0}function Bw(r,e){let t=jn("length"),n=R([t,q(r,oo(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Sw(r,e,t){let n=R([w("tag"),e.replicate("data")]);function i({tag:o,data:s}){if(!o.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+o.toString("hex"));return s}return new _t(n,i,o=>({tag:r,data:o}),t)}function Wm(r){let e=jn("length"),t=R([e,pe(oo(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Kw(r){return new _t(Wm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Cw(r,e){let t=ma($r(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Rw(r,e,t){let n=R([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var ao=class extends sa{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new ao(r,e,t)}var uo=class extends aa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Lw(r,e,t){return new uo(r,e,t)}var co=class extends ua{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Ow(r){return new co(r)}function q(r,e,t){let n,i=typeof e=="number"?e:pa(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=pa(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return la(r,i,t)}var Yt=R([B("mint"),B("owner"),w("amount"),ze("delegateOption"),B("delegate"),M("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),B("closeAuthority")]);function Dm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function lo(r,...e){if(!Dm(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 mo(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 ba(r,e){lo(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ni=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),bt=(r,e)=>r<<32-e|r>>>e;var vw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function po(r){return typeof r=="string"&&(r=qm(r)),lo(r),r}var ti=class{clone(){return this._cloneInto()}},Ww={}.toString;function ga(r){let e=n=>r().update(po(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Um(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var wa=(r,e,t)=>r&e^~r&t,Aa=(r,e,t)=>r&e^r&t^e&t,ri=class extends ti{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){mo(this);let{view:t,buffer:n,blockLen:i}=this;e=po(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ni(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){mo(this),ba(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Um(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=ni(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Gm=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]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jt=new Uint32Array(64),fo=class extends ri{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)jt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=jt[m-15],p=jt[m-2],y=bt(d,7)^bt(d,18)^d>>>3,f=bt(p,17)^bt(p,19)^p>>>10;jt[m]=f+jt[m-7]+y+jt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=bt(a,6)^bt(a,11)^bt(a,25),p=l+d+wa(a,u,c)+Gm[m]+jt[m]|0,f=(bt(n,2)^bt(n,13)^bt(n,22))+Aa(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){jt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ka=ga(()=>new fo);var rA=ae("Raydium_Util");function ha({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:be(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Pa.default,amount:new Ym(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=zm}){let t=Xm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qm(r,t,e),seed:t}}function Qm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ka(n);return new Pa(i)}function yo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=xn}=r;return jm(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=xn}=r;return Hm(e,t,i,n,o)}async function Bt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Yt.span,n),u=U(t).add(new ed(a)),c=Ye({fromPublicKey:i,programId:xn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Jm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:xn}),yo({mint:new $m(Me.address),tokenAccount:c.publicKey,owner:o,programId:xn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Hn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=xn}){return Zm(r,e,t,BigInt(String(n)),i,o)}var Zn=class extends Ie{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}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 be(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 i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Ht},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:td},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ha({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.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}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Ht,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u)return i&&s.equals(u),u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ii(t.tokenProgram||Ht),m=this.getAssociatedTokenAccount(n,new ii(l)),d=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=bo(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=p.instructions)==null||y.push(g),p.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&Bn.decode(P.data).mint.equals(n)&&Bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(g),p.instructionTypes.push(_.CreateATA);if(n.equals(J)&&i.amount){let P=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(p.instructions.push(Hn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Ht})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:p}}else if(n.equals(J)){let g=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return p.instructions.push(...g.instructions||[]),p.endInstructions.push(...g.endInstructions||[]),p.signers.push(...g.signers||[]),p.instructionTypes.push(...g.instructionTypes||[]),p.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:p}}else{let g=Ye({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),k=nd.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Bn.span,programId:l});return p.instructions.push(k,yo({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Ht,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await bo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Ht,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new ii(J).equals(o)){let p=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=bo(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Ht)&&Bn.decode(f.data).mint.equals(o)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Ht,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ii(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=he(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=m,p=he(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Td}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as Id}from"@solana/web3.js";import{PublicKey as Ca}from"@solana/web3.js";var go=R([M("instruction")]),wo=R([M("instruction")]),rd=R([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),q(w(),15,"padding")]),id=R([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),od=R([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),sd=R([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(rd,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),Ta=new Proxy(id,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ia=new Proxy(od,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),$n=new Proxy(sd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return W(N({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ad=R([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ao=R([M("instruction"),w("nonce"),q(ad,5,"rewardTimeInfo")]),ko=R([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Po=R([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),_A=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Jn=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),VA=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),xa=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Ba=R([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),$e=R([M("instruction"),w("amount")]),ud=R([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),fa("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),Sa=R([pe(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(ud,4,"votingMints"),ei("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),cd=R([ei("startTime"),ei("endTime"),M("kind"),q(M(),15,"reserved")]),ld=R([q(cd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),De("isUsed"),De("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),Ka=R([pe(8),B("voterAuthority"),B("registrar"),q(ld,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var GA=ae("Raydium_farm_config"),Ra=new Ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),La=new Ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Oa={3:Ta,5:Ia,6:$n},Na={3:Jn,5:xa,6:Ba},ho=r=>[3,5,6].indexOf(r)!==-1,To=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},Zt={"Standard SPL":0,"Option tokens":1},gt={[Hi.toString()]:3,[Zi.toString()]:5,[Tn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as pd,SYSVAR_CLOCK_PUBKEY as nr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as fd,TOKEN_PROGRAM_ID as ot,ASSOCIATED_TOKEN_PROGRAM_ID as yd}from"@solana/spl-token";import si from"bn.js";function Io(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function xo(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Bo(r,e){return oe([e.toBuffer()],r)}function So(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ko(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Co(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var er=ae("Raydium.farm.util");function tr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function rt({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Ma=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function _a(r){return{isSet:new nt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Ro(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function oi(r){let e=Na[r];return e||er.logWithError("invalid version",r),e}function md(r){let e=Oa[r];return e||er.logWithError("invalid version",r),e}function dd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new nt(t)))return r;let i=new nt(t).sub(r.lastSlot);r.lastSlot=new nt(t);for(let o of r.rewardInfos){if(e.amount.eq(new nt(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new nt(10).pow(new nt(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new nt(0)))continue;let o=nt.min(new nt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new nt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function ak({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new nt(10),u=[];for(let d of e){let p=ye(d);p.version===6?s=!0:o=!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:rt({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await hn(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=md(p);(!b||!b.data||b.data.length!==P.span)&&er.logWithError(`invalid farm state account info, pools.id, ${d}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Yt.span)&&er.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=oi(p);b&&b.data&&(b.data.length!==P.span&&er.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=dd(c[d].state,c[d].lpVault,m,i));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 nt(9)):a.pow(new nt(15)),b=p.rewardInfos.map((g,P)=>{let k=y.rewardDebts[P];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(k)});c[d].wrapped=W(N({},c[d].wrapped),{pendingRewards:b})}return c}function uk(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>na(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ra(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 Lo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=Ka.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var bd=ae("Raydium_farm_instruction"),rr={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 Va(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||bd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(go.span);go.encode({instruction:s},a);let u=[A({pubkey:t}),A({pubkey:n}),A({pubkey:o,isWritable:!1}),A({pubkey:un.programId,isWritable:!1}),A({pubkey:pd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function Ea(r){var n;let e=Buffer.alloc(Ao.span);Ao.encode({instruction:0,nonce:new si(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Ni,A({pubkey:r.farmId}),A({pubkey:r.farmAuthority,isWritable:!1}),A({pubkey:r.lpVault}),A({pubkey:r.lpMint,isWritable:!1}),A({pubkey:r.lockVault}),A({pubkey:r.lockMint,isWritable:!1}),A({pubkey:(n=r.lockUserAccount)!=null?n:Ne}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(A({pubkey:i.rewardMint,isWritable:!1}),A({pubkey:i.rewardVault}),A({pubkey:i.userRewardToken}));return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function Fa(r){let e=Buffer.alloc(wo.span);wo.encode({instruction:5},e);let t=[A({pubkey:ot,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.authority,isWritable:!1}),A({pubkey:r.lpVault,isWritable:!1}),A({pubkey:r.rewardVault}),A({pubkey:r.userRewardToken}),A({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function gd(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=R([M("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:s,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:Vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...rr.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function wd(r,e,t,n){let i=R([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...rr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function Ad(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=R([M("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ot,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:Vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...rr.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function kd(r,e,t,n,i,o){let s=R([M("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Ve({keys:a,programId:r,data:u})}function Pd(r,e,t,n,i,o,s,a){let u=R([M("voterBump"),M("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...rr.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function hd(r,e,t,n,i,o,s,a,u,c,l,m){let d=R([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),ze("periods"),De("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:yd,isSigner:!1,isWritable:!1},{pubkey:tt,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([...rr.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:p,programId:r,data:f})}async function xk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Io(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Jn.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new si(0)))throw Error("user do not has new stake amount");let y=xo(e,a).publicKey,f=Bo(e,a).publicKey,{publicKey:b,nonce:g}=So(n,c,s),P=be(b,y,u).publicKey,{publicKey:k,nonce:T}=Ko(n,c,s),h=Co(t,i,o,s).publicKey,I=[],S=be(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(fd(s,S,s,y)),await r.getAccountInfo(b)===null){let j=kd(t,i,s,o,s,h);I.push(j,Pd(n,c,b,k,s,s,g,T))}let{index:V,isInit:F}=await Lo(r,c,b,y);return F||I.push(hd(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(gd(n,c,b,P,S,s,l,a,y,f,e,V,p),wd(n,c,b,k)),I}async function Bk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Io(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Jn.decode(m.data);if(d.voteLockedBalance.eq(new si(0)))throw Error("user has vote locked balance = 0");let p=xo(e,a).publicKey,y=Bo(e,a).publicKey,{publicKey:f}=So(n,c,s),b=be(f,p,u).publicKey,{publicKey:g}=Ko(n,c,s),P=Co(t,i,o,s).publicKey,k=[],{index:T,isInit:h}=await Lo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return k.push(Ad(n,c,f,s,P,g,b,be(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),k}function Oo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(ko.span);ko.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[A({pubkey:ot,isWritable:!1}),A({pubkey:n.id}),A({pubkey:n.lpVault,isWritable:!1}),A({pubkey:e}),A({pubkey:t}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:n.programId,keys:s,data:o})}function No({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(Po.span);Po.encode({instruction:4,isSet:new si(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Ni,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:i.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:t.programId,keys:s,data:o})}function Sk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],d=rt({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc($e.span);$e.encode({instruction:a,amount:u},p);let y=n===6?[A({pubkey:ot,isWritable:!1}),...c?[A({pubkey:un.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:new ie(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new ie(t.lpVault)}),A({pubkey:o[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(A({pubkey:o[f]})),y.push(A({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(A({pubkey:o[f]}));return new Ve({programId:l,keys:y,data:p})}function ir(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:2,amount:U(s)},l);let m=[A({pubkey:ot,isWritable:!1}),A({pubkey:u}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:new ie(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}function or(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:12,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function sr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:10,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let d=[A({pubkey:c}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new ie(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new ie(t.rewardInfos[0].vault)}),A({pubkey:nr,isWritable:!1}),A({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Ve({programId:u,keys:d,data:m})}function Da(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:1,amount:U(s)},l);let m=[A({pubkey:ot,isWritable:!1}),A({pubkey:un.programId,isWritable:!1}),A({pubkey:u}),A({pubkey:new ie(t.authority),isWritable:!1}),A({pubkey:new ie(t.lpVault)}),A({pubkey:c}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Ve({programId:a,keys:m,data:l})}var ar=class extends Ie{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Ro(W(N({},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:i=Tn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Pe(e.lpMint.address),lockInfo:{lockMint:Ra,lockVault:La},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ye({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption($n.span);u.addInstruction({instructions:[Id.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:$n.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ma({programId:new Pe(a.programId),poolId:l.publicKey}),y=tr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(Zt[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(_a(T));let{rewardPubKey:h,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:T,payer:c});I&&u.addInstruction(I),h||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let S=T.mint.equals(Ne)?new Pe(Me.address):T.mint;b.push({rewardMint:S,rewardVault:tr({programId:a.programId,poolId:l.publicKey,mint:S,type:"rewardVault"}),userRewardToken:h})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=Ea({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[P],instructionTypes:[k]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new Pe(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new Pe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(b=m.vault)!=null?b:Ne,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:[Oo({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.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(Ne)?new Pe(Me.address):m.mint,p=a.rewardInfos.findIndex(k=>new Pe(k.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Ne,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Oo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=gt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new Pe(Me.address):i.mint,m=tr({programId:new Pe(n.programId),poolId:new Pe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[No({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=gt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new Pe(Me.address):l.mint,d=tr({programId:new Pe(n.programId),poolId:new Pe(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=No({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,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=gt[d];ho(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Pe(n.programId),new Pe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=rt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let k={};for(let D of this.scope.account.tokenAccounts)if(a){let te=be(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&te.equals(D.publicKey)&&(k[D.mint.toString()]=D.publicKey)}else k[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=k[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",k);let I=[];for(let D of m){let te=s&&D.mint.address===J.toString(),ne=k[D.mint.address];if(!ne){let{account:se,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(D.mint.address),notUseTokenAccount:te,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!te,associatedOnly:te?!1:a,checkCreateATAOwner:u});ne=se,dt&&P.addInstruction(dt)}k[D.mint.address]=ne,I.push(ne)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=oi(p).decode(x.data)),n.programId!==Tn.toString()&&!S){let{instruction:D,instructionType:te}=Va({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[te]})}let O=To({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new Pe(D))},F=p===6?Da(V):p===5?Wa(V):va(V),j={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[j[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,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=gt[n.programId];ho(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 b={};for(let O of this.scope.account.tokenAccounts)if(u){let V=be(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&V.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let O=rt({programId:new Pe(n.programId),poolId:new Pe(n.id),owner:this.scope.ownerPubKey,version:p}),V=await this.scope.connection.getAccountInfo(O);V||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:V}),oi(p).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===J.toString(),k=b[g.toString()];if(!k){let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});k=O,V&&f.addInstruction(V)}b[g.toString()]=k;let T=[];for(let O of d){let V=s&&O.mint.address===J.toString(),F=b[O.mint.address];if(!F){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(O.mint.address),notUseTokenAccount:V,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&f.addInstruction(D)}b[O.mint.address]=F,T.push(F)}let h=To({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:k,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new Pe(O))},S=p===6?ir(I):p===5?or(I):sr(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.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 i=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new Pe(Me.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Ro(W(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(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:[Td(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Fa({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.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:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=be(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)=>W(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,k=gt[f],T=b.address,h=n&&T===J.toString(),I=m[T];if(!I){let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=j,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let j of g){let D=n&&j.mint.address===J.toString(),te=m[j.mint.address];if(!te){let{account:ne,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(j.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});te=ne,se&&l.addInstruction(se)}m[j.mint.address]=te,S.push(te)}let x=p[P],O={amount:Be,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(j=>new Pe(j))},V=k===6?ir(O):k===5?or(O):sr(O),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[k]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as it}from"@solana/web3.js";import{NATIVE_MINT as Iu,TOKEN_PROGRAM_ID as pi}from"@solana/spl-token";var Hk=R([ze("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),ze("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as xd}from"@solana/web3.js";import{MintLayout as qa,TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";var iP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new xd(e));return!t||t.data.length!==qa.span?void 0:qa.decode(t.data)},oP=({mint:r,decimals:e,programId:t=Bd,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},ai=r=>new de({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),sP=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=he(o,["amount","isRaw","name"]);return new fe(new de({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function aP(r){return r.address===ht.address?Me:r}function uP(r){return r.address===Me.address?ht:r}import{TOKEN_PROGRAM_ID as ur,ASSOCIATED_TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as ge,TransactionInstruction as Et,SystemProgram as Wo,SYSVAR_RENT_PUBKEY as qd}from"@solana/web3.js";var Mo=R([M("instruction"),w("amountIn"),w("minAmountOut")]),_o=R([M("instruction"),w("maxAmountIn"),w("amountOut")]),kP=R([M("instruction"),M("nonce")]),Vo=R([M("instruction"),M("nonce"),w("startTime")]),Sd=R([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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("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"),q(w(),3,"padding")]),Kd=R([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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("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"),q(w(),64,"padding")]),Eo=R([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Fo=R([M("instruction"),w("amountIn")]),PP={4:Sd,5:Kd},Ua=R([w("fee")]);import{PublicKey as Cd}from"@solana/web3.js";var Kn=new Cd("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Rd=R([w("x"),w("y"),w("price")]),Ld=R([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Rd,ln,"DataElement")]);function Od(r,e){return[0,ln-2]}function Nd(r){return[0,ln-2]}function Md(r){return[0,ln-2]}function _d(r,e,t){let[n,i]=Od(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ln-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)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function vo(r,e,t){let[n,i,o]=_d(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function cn(r,e,t){return e*r.multiplier/t}function Ga(r,e,t){return e*t/r.multiplier}function Vd(r,e){let[t,n]=Nd(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ln-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Ed(r,e){let[t,n]=Md(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ln-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Vd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].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-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Fd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ed(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].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-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function vd(r,e){let t=Xa(r,e,0,!1);return t[3]?t[0]:0}function za(r,e,t,n){let i=vo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,d]=Xa(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ga(r,p,i)}}function Ya(r,e,t,n){let i=vo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,d]=Fd(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ga(r,p,i)}}function Wd(r){let e=Ld.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 Qa(r,e,t,n){let i=vd(r,cn(r,e,vo(r,e,t)))/r.multiplier;return n?i:1/i}var Sn=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(Kn);e&&(this._layoutData=Wd(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Ha(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Eo.span);Eo.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Be:qs},a);let u=[A({pubkey:ur,isWritable:!1}),A({pubkey:new ge(e.id)}),A({pubkey:new ge(t.authority),isWritable:!1}),A({pubkey:new ge(t.openOrders),isWritable:!1}),A({pubkey:new ge(t.targetOrders)}),A({pubkey:new ge(e.lpMint.address)}),A({pubkey:new ge(t.vault.A)}),A({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(A({pubkey:Kn})),u.push(A({pubkey:new ge(e.marketId),isWritable:!1}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:new ge(t.marketEventQueue),isWritable:!1})),new Et({programId:new ge(e.programId),keys:u,data:a})}function Do(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ye(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Fo.span);Fo.encode({instruction:4,amountIn:U(i)},a);let u=[A({pubkey:ur,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.mintLp.address}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return s===5?u.push(A({pubkey:Kn})):(u.push(A({pubkey:o.id})),u.push(A({pubkey:o.id}))),u.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Za({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:k,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=R([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:ur,isSigner:!1,isWritable:!1},{pubkey:Dd,isSigner:!1,isWritable:!1},{pubkey:Wo.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,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:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],V=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:k,coinAmount:T,pcAmount:h},V),{instruction:new Et({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function EP(r){let e=R([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ge(r.id),isWritable:!1}),A({pubkey:new ge(r.authority),isWritable:!1}),A({pubkey:new ge(r.openOrders),isWritable:!1}),A({pubkey:new ge(r.vault.A),isWritable:!1}),A({pubkey:new ge(r.vault.B),isWritable:!1}),A({pubkey:new ge(r.mintLp.address),isWritable:!1}),A({pubkey:new ge(r.marketId),isWritable:!1}),A({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return new Et({programId:new ge(r.programId),keys:n,data:t})}function Ud({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ye(r),s=Buffer.alloc(Mo.span);Mo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[A({pubkey:ur,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders})];return i===4&&a.push(A({pubkey:o.targetOrders})),a.push(A({pubkey:o.vault.A}),A({pubkey:o.vault.B})),i===5&&a.push(A({pubkey:Kn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Gd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ye(r),s=Buffer.alloc(_o.span);_o.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[A({pubkey:Wo.programId,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.openOrders}),A({pubkey:o.targetOrders}),A({pubkey:o.vault.A}),A({pubkey:o.vault.B})];return i===5&&a.push(A({pubkey:Kn})),a.push(A({pubkey:o.marketProgramId,isWritable:!1}),A({pubkey:o.marketId}),A({pubkey:o.marketBids}),A({pubkey:o.marketAsks}),A({pubkey:o.marketEventQueue}),A({pubkey:o.marketBaseVault}),A({pubkey:o.marketQuoteVault}),A({pubkey:o.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function ui(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ud(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Gd(W(N({},a),{maxAmountIn:i,amountOut:o}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function FP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Vo.span);Vo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=ye(r),o=[A({pubkey:ur,isWritable:!1}),A({pubkey:Wo.programId,isWritable:!1}),A({pubkey:qd,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.mintA.address,isWritable:!1}),A({pubkey:i.mintB.address,isWritable:!1}),A({pubkey:i.vault.A,isWritable:!1}),A({pubkey:i.vault.B,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:i.id,isWritable:!1}),A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new Et({programId:i.programId,keys:o,data:n})}function $a({poolKeys:r}){let e=R([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ge(r.id),isWritable:!1}),A({pubkey:new ge(r.authority),isWritable:!1}),A({pubkey:new ge(r.openOrders),isWritable:!1}),A({pubkey:new ge(r.vault.A),isWritable:!1}),A({pubkey:new ge(r.vault.B),isWritable:!1}),A({pubkey:new ge(r.mintLp.address),isWritable:!1}),A({pubkey:new ge(r.marketId),isWritable:!1}),A({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new ge(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as qe,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as wt,SystemProgram as Cn,Keypair as jo}from"@solana/web3.js";import gu from"bn.js";import tp from"bn.js";function Ja(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function WP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function DP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ci(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function qo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Uo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function cr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function eu(r,e){return cr(r,e)?null:qo(r,e)}function tu(r,e){return cr(r,e)?null:Uo(r,e)}var Xd=Buffer.from("amm_config","utf8"),zd=Buffer.from("pool","utf8"),Yd=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),nu=Buffer.from("position","utf8"),jd=Buffer.from("tick_array","utf8"),Hd=Buffer.from("operation","utf8"),Zd=Buffer.from("pool_tick_array_bitmap_extension","utf8");function XP(r,e){return oe([Xd,Ja(e)],r)}function ru(r,e,t,n){return oe([zd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Go(r,e,t){return oe([Yd,e.toBuffer(),t.toBuffer()],r)}function iu(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function we(r,e,t){return oe([jd,e.toBuffer(),ci(t)],r)}function mn(r,e,t,n){return oe([nu,e.toBuffer(),ci(t),ci(n)],r)}function St(r,e){return oe([nu,e.toBuffer()],r)}function li(r){return oe([Buffer.from("metadata","utf8"),kn.toBuffer(),r.toBuffer()],kn)}function lr(r){return oe([Hd],r)}function ut(r,e){return oe([Zd,e.toBuffer()],r)}import Kt from"bn.js";var me=new Kt(0),st=new Kt(1),Ft=new Kt(-1),at=new Kt(1).shln(64),mi=new Kt(1).shln(128),Xo=at.sub(st),mr=64,ou=mi.subn(1),Qe=-443636,Je=-Qe,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),su=16,au="59543866431248",uu="184467440737095516",cu="15793534762490258745",di=new Kt(10).pow(new Kt(6)),$d=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))($d||{}),QP={[500]:10,[3e3]:60,[1e4]:200},jP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,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},lu={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:[]},HP=new Kt("18446744073700000000");var Jd=15,le=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(i,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jd/2));for(let p=0;p<l.length;p++){let{publicKey:y}=we(t,n,l[p]);u.push(y)}let m=(await Tt(e,u)).map(p=>p!==null?dr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(N({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=G.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/le.tickCount(t)),a=n?G.searchLowBitFromStart(i,o,s-1,1,t):G.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=_e-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<_e;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=we(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<_e;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=we(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(G.checkIsOutOfBoundary(e)){if(e>Je)return!1;let n=G.getTickArrayStartIndexByTick(Qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as $t}from"@solana/web3.js";import Ce from"bn.js";var zo=14,vt=class{static maxTickInTickarrayBitmap(e){return e*_e*dn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-le.tickCount(n):t+le.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*_e,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=eu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=tu(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},pr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(Je<=t)throw Error(`extensionTickBoundary check error: ${Je}, ${t}`);if(n<=Qe)throw Error(`extensionTickBoundary check error: ${n}, ${Qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=le.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=G.mergeTickArrayBitmap(e).shln(dn-1-a),c=cr(512,u)?null:qo(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=cr(512,u)?null:Uo(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(i=dn-i),i}};import Lt from"bn.js";var fr=class{static getfeeGrowthInside(e,t,n){let i=new Lt(0),o=new Lt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Lt(0),a=new Lt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,at),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,at),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,at),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,at),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,k;let a=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[Ke(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ke(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ke(new Lt(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ke(new Lt(new E(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as mu}from"@solana/spl-token";var je=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=we(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ft),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=je.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?pr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=we(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=we(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=pr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Qe||t>Je)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(N({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $t(d)});if(p.tokenMint.equals($t.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let y=new Ce(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=Z.mulDivFloor(f,p.emissionsPerSecondX64,at),k=p.rewardTotalEmissioned.add(P);s.push(W(N({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:k,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>Je&&(t=le.getArrayStartIndex(Je,e)+le.tickCount(e)),n<Qe&&(n=le.getArrayStartIndex(Qe,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)*dn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=fu.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=G.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=G.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=we(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=dr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(St(p,d).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=pu.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:T}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:k,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>W(N({},x),{pendingReward:new Ce(0)})),leverage:h,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await G.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await Tt(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=dr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,k=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[k].toString()],I=T.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await fr.GetPositionFees(f,g,I,S),V=await fr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),g.tokenFeeAmountB=O.gte(new Ce(0))?O:new Ce(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Ce(0))?V[F]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var V;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new E(0))?u=c?Ct.add(new Ce(1)):Rt.sub(new Ce(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=Ke(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=je.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:me),u),g=Ke(p,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),k=c?P:new E(1).div(P),T=p.mul(new Ce(Math.floor((1-s)*1e10))).div(new Ce(1e10)),h=Ke(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(k).sub(I).abs(),x=I,O=new ve(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:sn(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:O,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new de(W(N({},u),{mint:u.address,isToken2022:u.programId===mu.toBase58()})),new de(W(N({},c),{mint:c.address,isToken2022:c.programId===mu.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:k,remainingAccounts:T}=await je.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},d),{amount:new fe(l,d.amount),fee:d.fee===void 0?void 0:new fe(l,d.fee)}),I=W(N({},p),{amount:new fe(m,p.amount),fee:p.fee===void 0?void 0:new fe(m,p.fee)}),S=W(N({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),x=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new fe(l,k);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:O,priceImpact:P,fee:V,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=G.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=G.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Ei(e.mintA.address).toString()],d=i[Ei(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=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:k}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(k.toString()).div(new E(10).pow(y)).mul(d.value)),S=new E(T.toString()).div(new E(10).pow(p)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(d.value)),x=S.div(I.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,j=e.rewardDefaultInfos.map(D=>{var se,dt;let te=D.mint.decimals,ne=i[D.mint.address];return u<((se=D.startTime)!=null?se:0)||u>((dt=D.endTime)!=null?dt:0)||!D.perSecond||!ne||te===void 0?0:new E(ne.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(te)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:j,apr:V+j.reduce((D,te)=>D+te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),d=H.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=Ke(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Ce(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new Ce(0);else if(l.lte(d)){let k=ce.getLiquidityFromTokenAmountA(l,d,f,!a),T=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?k:T}else b=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,d,f);return je.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,k;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[Ke(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ke(m.amountB,(g=t.mintB.extensions)==null?void 0:g.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),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new $t(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=du.decode(i.data),s=ut(e,new $t(n.id)).publicKey,a=await je.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function _h({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var k,T,h,I;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[Ke(m,(k=r.mintA.extensions)==null?void 0:k.feeConfig,a,!u),Ke(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var Z=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(st)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(st)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(mi).sub(t).mod(mi)}};function Ee(r,e){return Yo(r.mul(e),64,256)}function ep(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Yo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(mr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,st,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(mr);if(i)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,st,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Qe||e>Je)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new re("37481735321082"))),e>0&&(n=ou.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Rt)||e.lt(Ct))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=ep(n,32,128),o=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new re(0))&&s<su;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new re(au)),d=Yo(m.sub(new re(uu)),64,128).toNumber(),p=Yo(m.add(new re(cu)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=fn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(mr),s=t.sub(e);return i?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),st,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?Z.mulDivCeil(n,t.sub(e),at):Z.mulDivFloor(n,t.sub(e),at)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?Z.mulDivRoundingUp(a,st,Xo):a.shrn(mr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Xo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,i,!1),a=ce.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,i,o),a=ce.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new re(new E(u.toString()).mul(l).toFixed(0)),d=new re(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,k,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ke(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Ke(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)],[b,g]=[Ke(new re(new E(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),Ke(new re(new E(p.amountB.toString()).mul(d).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:sn(y.expirationTime,f.expirationTime)}}},pn=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(st):Rt.sub(st)),s){if(y.lt(Ct))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(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(me),b={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+le.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},g=p,P=n[p],k=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(k>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=je.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");g=V.nextStartIndex;let{publicKey:F}=we(e,t,g);x=F,P=n[g],S=G.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),h.tickNext<Qe?h.tickNext=Qe:h.tickNext>Je&&(h.tickNext=Je),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let O;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?O=y:O=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let V=S.liquidityNet;s&&(V=V.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,V)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=V!=b.tick&&!s&&P.startTickIndex===V,b.tick=V}++k}try{let{nextStartIndex:h,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(we(e,t,h).publicKey),p=h)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=i.gte(me);if(u){let l=Z.mulDivFloor(i,di.sub(new re(o.toString())),di);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ft).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ft),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Ft))&&(s.amountOut=i.mul(Ft)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new re(o),di.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=we(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new tp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=we(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Qe||e>Je}static nextInitTick(e,t,n,i,o){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<_e;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=_e-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<_e;){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 i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var oT=R([pe(8),M("bump"),xt("index"),B(""),ze("protocolFeeRate"),ze("tradeFeeRate"),xt("tickSpacing"),q(w(),8,"")]),np=R([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Qo=R([pe(8),De("initialized"),B("poolId"),q(np,1e3,"observations"),q(z(),5,"")]),rp=R([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),du=R([pe(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),xt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),We("tickCurrent"),xt("observationIndex"),xt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(rp,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),ip=R([z("growthInsideLastX64"),w("rewardAmountOwed")]),pu=R([pe(8),M("bump"),B("nftMint"),B("poolId"),We("tickLower"),We("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ip,3,"rewardInfos"),q(w(),8,"")]),sT=R([pe(8),M("bump"),B("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),op=R([We("tick"),ya("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),dr=R([pe(8),B("poolId"),We("startTickIndex"),q(op,_e,"ticks"),M("initializedTickCount"),q(M(),115,"")]),yu=R([pe(329),q(B(),100,"whitelistMints")]),fu=R([pe(8),B("poolId"),q(q(w(),8),zo,"positiveTickArrayBitmap"),q(q(w(),8),zo,"negativeTickArrayBitmap")]);var wu=ae("Raydium_Clmm"),At={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]},xe=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=R([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let P=Buffer.from([...At.createPool,...g]);return new wt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ye({fromPublicKey:i,programId:n}),[d,p]=[new v(o.address),new v(s.address)],y=[Cn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Qo.span),space:Qo.span,programId:n})],{publicKey:f}=ru(n,a,d,p),{publicKey:b}=Go(n,f,d),{publicKey:g}=Go(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new v(o.programId||qe),p,g,new v(s.programId||qe),ut(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],te=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},te);let ne=Buffer.from([...At.openPosition,...te]);return new wt({keys:D,programId:e,data:ne})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=jo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:k}=be(n.wallet,y,qe),{publicKey:T}=li(y),{publicKey:h}=St(d,y),{publicKey:I}=mn(d,p,i,o),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=jo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:P}=we(d,p,b),{publicKey:k}=be(n.wallet,y,qe),{publicKey:T}=li(y),{publicKey:h}=St(d,y),{publicKey:I}=mn(d,p,i,o),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),j=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],te=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new gu(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},te);let ne=Buffer.from([...At.openPosition,...te]);return new wt({keys:D,programId:e,data:ne})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new v((await l(1))[0]);else{let x=jo.generate();d.push(x),m=x.publicKey}let[p,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,y,f),{publicKey:P}=we(p,y,b),{publicKey:k}=be(n.wallet,m,qe),{publicKey:T}=li(m),{publicKey:h}=St(p,m),{publicKey:I}=mn(p,y,i,o),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,k,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:k,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:d,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...At.closePosition,...u]);return new wt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=be(n.wallet,i.nftMint,qe),{publicKey:a}=St(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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: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:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...At.increaseLiquidity,...I]);return new wt({keys:h,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,qe),{publicKey:f}=St(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(u,c,l),{publicKey:p}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,qe),{publicKey:f}=St(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,d,p,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P){let k=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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: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:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(k.span);k.encode({liquidity:new gu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...At.increaseLiquidity,...I]);return new wt({keys:h,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=R([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],S=Buffer.alloc(T.span);T.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...At.decreaseLiquidity,...S]);return new wt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(c,l,m),{publicKey:y}=we(c,l,d),{publicKey:f}=be(i.wallet,n.nftMint,u),{publicKey:b}=St(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new v(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new v(e.rewardDefaultInfos[T].mint.address)});let k=[];return k.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,p,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ut(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:k,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g){let P=R([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),De("isBaseInput")]),k=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],h=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...At.swap,...h]);return new wt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[p,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:y,f?y:p,u,m,o,s,a,!0,ut(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...At.initReward,...f]);return new wt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=iu(o,s,i.mint).publicKey,u=lr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([M("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:U(l),endTime:U(m)},f);let b=Buffer.from([...At.setRewardEmissions,...f]);return new wt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new v(t.rewardInfos[d].vault),c=new v(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=lr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([M("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...At.collectReward,...l]);return new wt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[p,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as cp}from"@solana/web3.js";import{PublicKey as ap}from"@solana/web3.js";import Au from"bn.js";var ku=new Au(25),Pu=new Au(1e4),sp={4:3,5:3};var up=ae("Raydium_liquidity_serum");function hu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=ap.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw up.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 yr from"bn.js";function Zo({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function yn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function lp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function mp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=yn({name:"amm_associated_seed",programId:a,marketId:t}),l=yn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=mp({programId:a}),p=yn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=yn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=yn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=lp({programId:a,marketId:t}),g=yn({name:"target_associated_seed",programId:a,marketId:t}),P=yn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=hu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:k,lookupTableAccount:cp.default,configId:Zo({programId:a})}}var Ho;async function VT({connection:r,poolKeysList:e,config:t}){Ho||(Ho=new Sn({connection:r}),await Ho.initStableModelLayout());let n=e.map(s=>$a({poolKeys:s}));return(await Zs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=$s(s,"GetPoolData"),u=new yr(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),d=new yr(Mt(a,"pool_coin_amount")),p=new yr(Mt(a,"pool_pc_amount")),y=new yr(Mt(a,"pool_lp_supply")),f="0";try{f=Mt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new yr(f)}})}import He from"bn.js";var br=class extends Ie{constructor(t){super(t);this.stableLayout=new Sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new He(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ai(t[o?"mintB":"mintA"]),[u,c]=[new He(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new He(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new He(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let d=Be;s.isZero()||(d=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c));let p=vr(s.mul(l),new He(m==="base"?t.mintAmountA:t.mintAmountB).mul(new He(10).pow(new He(t[m==="base"?"mintA":"mintB"].decimals)))),f=new ve(new He(1)).add(i).mul(d).quotient,b=new fe(a,d),g=new fe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new it(n.lpMint.address)}),P=[p,y],k=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),k.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[O,V]=k,[F,j]=T,D=await this.getAmmPoolKeys(n.id),te=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ne}=Wt,se=he(Wt,["tokenAccount"]);te.addInstruction(se);let Sr=await l.handleTokenAccount({side:"in",amount:j,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:dt}=Sr,Nn=he(Sr,["tokenAccount"]);te.addInstruction(Nn);let Mn=await l.handleTokenAccount({side:"out",amount:0,mint:new it(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:hi}=Mn,Ti=he(Mn,["tokenAccount"]);return te.addInstruction(Ti),te.addInstruction({instructions:[Ha({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:ne,quoteTokenAccount:dt,lpTokenAccount:hi,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:j,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),te.addCustomComputeBudget(c),u===0&&await te.buildV0(),te.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new it(n.mintA.address),new it(n.mintB.address),new it(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.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}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:k}=S,T=he(S,["tokenAccount"]);b.addInstruction(T);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=he(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Do({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:k,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=pi,checkCreateATAOwner:d=!0,getEphemeralSigners:p,txVersion:y}){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 f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ne of this.scope.account.tokenAccountRawInfos)(b[ne.accountInfo.mint.toString()]===void 0||be(this.scope.ownerPubKey,ne.accountInfo.mint,pi).publicKey.equals(ne.pubkey))&&(b[ne.accountInfo.mint.toString()]=ne.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new He(0)),k=t.mintA.address===de.WSOL.mint.toString(),T=t.mintB.address===de.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:pi,mint:new it(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:pi,mint:new it(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let ne=[];for(let Wt of s.rewardInfos){let Sr=Wt.mint.address===de.WSOL.mint.toString();if(b[Wt.mint.address])ne.push(b[Wt.mint.address]);else{let{account:Mn,instructionParams:ps}=await this.scope.account.getOrCreateTokenAccount({mint:new it(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Sr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Mn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),ps&&f.addInstruction(ps),ne.push(Mn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ne},Nn=gt[s.programId],hi=Nn===6?ir(dt):Nn===5?or(dt):sr(dt),Ti={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[hi],instructionTypes:[Ti[Nn]]})}let O=await this.getAmmPoolKeys(t.id),V=Do({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[F,j]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),te=await xe.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:j},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...te.instructions],signers:te.signers,instructionTypes:[...te.instructionTypes],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var j;let b=c.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),g=c.useSOLBalance&&i.mint.equals(Iu),P=c.useSOLBalance&&o.mint.equals(Iu),k=this.createTxBuilder(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});k.addInstruction(h||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(k.addInstruction(S||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={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:V,instructionType:F}=Za(W(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:be(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return k.addInstruction({instructions:[V],instructionTypes:[F]}),k.addCustomComputeBudget(f),k.versionBuild({txVersion:p,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=Zo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ua.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===$i.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let x=Qa(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new He(0),g=new He(0);if(!f.isZero())if(p){g=zt(f.mul(ku),Pu);let x=f.sub(g),O=m.add(x);b=d.mul(x).div(O)}else{g=f.mul(new He(2)).div(new He(1e4));let x=f.sub(g);l==="quote"?b=new He(za(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new He(Ya(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new He(new E(b.toString()).mul(1-s).toFixed(0)),k=b,T=P,h=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:k,minAmountOut:T,currentPrice:y,executionPrice:h,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new it(l.address),programId:new it(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new it(m.address),programId:new it(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new it(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=he(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new it(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=he(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),c.addInstruction({instructions:[ui({version:k,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[k===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import kt from"bn.js";var gr=class extends Ie{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)||ue.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new kt(new ue(i.address).toBuffer()).gt(new kt(new ue(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await xe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:W(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},lu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,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(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),k=n.useSOLBalance&&e.mintB.address===J.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(O||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await xe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:W(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(F),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,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,b=null,g=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});k&&(f=k),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id);console.log(123123444,S);let x=await xe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,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:i,amountMaxB:o,liquidity:s,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(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=xe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,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(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(P||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});k&&(y=k),d.addInstruction(T||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=xe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(I),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,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=i.useSOLBalance&&t.mintA.address===J.toString(),y=i.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(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=g,P&&d.addInstruction(P);let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=k,T&&d.addInstruction(T);let h=[];for(let O of t.rewardDefaultInfos){let V=i.useSOLBalance&&O.mint.address===J.toString(),F;if(O.mint.address===t.mintA.address)F=f;else if(O.mint.address===t.mintB.address)F=b;else{let{account:j,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(O.mint.programId),mint:new ue(O.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=j,D&&d.addInstruction(D)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await xe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let O=await xe.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),x=N(N({},x),O.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 i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=xe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=xe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=xe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 kt(new E(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:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=xe.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,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 ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(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:i,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=xe.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=xe.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:i=!0,checkCreateATAOwner:o=!1}){let s=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 ue(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:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=xe.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===J.toBase58(),p=s.useSOLBalance&&e.mintB.address===J.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?Ct.add(new kt(1)):Rt.sub(new kt(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});f=P,k&&m.addInstruction(k)}let b;if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});b=P,k&&m.addInstruction(k)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(xe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?be(this.scope.ownerPubKey,m.accountInfo.mint,s).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(k=>!k.liquidity.isZero()||k.rewardInfos.find(T=>!T.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:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ue(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=k,T&&l.addInstruction(T)}let b=c[d.mintB.address];if(!b){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ue(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=k,T&&l.addInstruction(T)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let k of d.rewardDefaultInfos){let T=n.useSOLBalance&&k.mint.address===J.toString(),h=c[k.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(k.mint.programId),mint:new ue(k.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,S&&l.addInstruction(S)}c[k.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(d.id);for(let k of t[m.id]){let T=xe.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:k,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new kt(0),amountMinA:new kt(0),amountMinB:new kt(0)});l.addInstruction(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(lr(e).publicKey);return t?yu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as yi,TOKEN_PROGRAM_ID as en,AccountLayout as _u}from"@solana/spl-token";var dp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pp=Buffer.from("amm_config","utf8"),fp=Buffer.from("pool","utf8"),yp=Buffer.from("pool_lp_mint","utf8"),bp=Buffer.from("pool_vault","utf8"),gp=Buffer.from("observation","utf8");function wp(r){return oe([dp],r)}function Ap(r,e){return oe([pp,hp(e)],r)}function kp(r,e,t,n){return oe([fp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Pp(r,e){return oe([yp,e.toBuffer()],r)}function xu(r,e,t){return oe([bp,e.toBuffer(),t.toBuffer()],r)}function fi(r,e){return oe([gp,e.toBuffer()],r)}function hp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Bu({programId:r,mintA:e,mintB:t}){let n=Ap(r,0).publicKey,i=wp(r).publicKey,o=kp(r,n,e,t).publicKey,s=Pp(r,o).publicKey,a=xu(r,o,e).publicKey,u=xu(r,o,t).publicKey,c=fi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o,TOKEN_2022_PROGRAM_ID as Ku,ASSOCIATED_TOKEN_PROGRAM_ID as Tp}from"@solana/spl-token";var Su=ae("Raydium_Cpmm_ins"),Ar={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 Cu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=R([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Tp,isSigner:!1,isWritable:!1},{pubkey:Vs,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:k},I),new wr({keys:h,programId:r,data:Buffer.from([...Ar.initialize,...I])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){Su.info(123123,{mintA:c.toBase58(),mintB:l.toBase58(),lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()});let f=R([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Su.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.deposit,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=R([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:_s,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.withdraw,...g])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=R([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseInput,...P])})}function Nu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=R([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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(b.span);return b.encode({amountInMax:y,amountOut:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseOutput,...P])})}import ct from"bn.js";var rx=R([pe(8),M("bump"),De("disableCreatePool"),xt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),Mu=R([pe(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends Ie{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e){let t=await this.scope.connection.getAccountInfo(new Y(e));if(!t)throw new Error(`pool not found: ${e}`);let n=Mu.decode(t.data),[i,o]=await this.scope.connection.getMultipleAccountsInfo([n.vaultA,n.vaultB]);if(!i)throw new Error(`pool vaultA info not found: ${n.vaultA.toBase58()}`);if(!o)throw new Error(`pool vaultB info not found: ${n.vaultB.toBase58()}`);return W(N({},n),{baseReserve:new ct(_u.decode(i.data).amount.toString()).sub(n.protocolFeesMintA).sub(n.fundFeesMintA),quoteReserve:new ct(_u.decode(o.data).amount.toString()).sub(n.protocolFeesMintB).sub(n.fundFeesMintB)})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=he(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var j,D,te;let d=i.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),p=new ct(new Y(c.mintA.address).toBuffer()).lte(new ct(new Y(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===yi.toBase58(),k=i.useSOLBalance&&f.address===yi.toBase58(),[T,h]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:k?{payer:d,amount:g}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||O===void 0)throw Error("you don't has some token account");let F=Bu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[Cu(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,be(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:en),new Y((te=f.programId)!=null?te:en),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeBudgetConfig:s,config:a,txVersion:u}=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:c}=this.scope,{bypassAssociatedCheck:l,checkCreateATAOwner:m}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),d=await this.getRpcPoolInfo(t.id),{liquidity:p,anotherAmount:y}=this.computePairAmount({poolInfo:W(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),f=y.raw,b=t.mintA.address===yi.toString(),g=t.mintB.address===yi.toString(),P=this.createTxBuilder(),[k,T]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||(i?n:f).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:f}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(I||{});let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i?f:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?f:n}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:!1,checkCreateATAOwner:m});P.addInstruction(x||{}),!h&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",c.tokenAccounts);let O=await c.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),D=await c.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:O,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:V}=D,F=he(D,["tokenAccount"]);P.addInstruction(F);let j=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),V,h,S,new Y(j.vault.A),new Y(j.vault.B),k,T,new Y(t.lpMint.address),p,i?n:f,i?f:n)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),P.addCustomComputeBudget(s),P.versionBuild({txVersion:u})}async withdrawLiquidity(e){let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new ct(1)).sub(i),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],{account:m}=this.scope,d=this.createTxBuilder(),[p,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=p.equals(J),b=y.equals(J),g,P,{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});g=k,T&&d.addInstruction(T);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:!b,checkCreateATAOwner:!1});P=h,I&&d.addInstruction(I),(!g||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let S=await m.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});S||this.logAndCreateError("cannot found lp token account","tokenAccounts",m.tokenAccounts);let x=await this.getCpmmPoolKeys(t.id);return d.addInstruction({instructions:[Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(x.authority),new Y(t.id),S,g,P,new Y(x.vault.A),new Y(x.vault.B),p,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),d.addCustomComputeBudget(o),d.versionBuild({txVersion:s})}async swap(e){var T,h,x,O,V,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new Y(t.mintA.address),new Y(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:en),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=he(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=he(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Ou(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),f,g,new Y(k.vault.A),new Y(k.vault.B),new Y((x=t.mintA.programId)!=null?x:en),new Y((O=t.mintB.programId)!=null?O:en),m,d,fi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Nu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.id),new Y(t.id),g,f,new Y(k.vault.B),new Y(k.vault.A),new Y((V=t.mintB.programId)!=null?V:en),new Y((F=t.mintA.programId)!=null?F:en),d,m,fi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,baseIn:i}){let o=new ct(new E(t).mul(10**e[i?"mintA":"mintB"].decimals).toFixed(0)),s=ai(e[i?"mintB":"mintA"]),[a,u]=[new ct(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new ct(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],c=new ct(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",a.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?e.mintA.symbol:e.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",i?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let l=i?"base":"quote";this.logDebug("input side:",l);let m=o.mul(c).div(l==="base"?a:u),d=Be;o.isZero()||(d=Ip(m,a,u,c)[i?"amountB":"amountA"]);let y=new ve(new ct(1)).add(n).mul(d).quotient,f=new fe(s,d),b=new fe(s,y);return this.logDebug("anotherAmount:",f.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:f,maxAnotherAmount:b,liquidity:m}}};function Ip(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new ct(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new ct(1))),{amountA:i,amountB:o}}var Pr=class extends Ie{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(Be)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Be)?-1:1}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}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=U(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Hn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[Hn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Vt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as xp}from"@solana/spl-token";import{PublicKey as Bp,Transaction as Jo,TransactionInstruction as Sp}from"@solana/web3.js";import Vu from"bn.js";var Ze=class extends Ie{static getPdaPoolId(e,t){return oe([Ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Vu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Ze.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==Ze.POOL_LAYOUT.span||b.data.length!==Ze.OWNER_LAYOUT.span)continue;let g=Ze.POOL_LAYOUT.decode(f.data),P=Ze.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new Vu(0))).filter(x=>!x).length!==3,I=o>k&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:k,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,O)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[O].debtAmount.add(P.tokenInfo[O].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];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(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(de.WSOL.mint),associatedOnly:u.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};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(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(de.WSOL.mint),associatedOnly:m.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Gr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Jo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Jo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Jo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=R([]),o=[{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:xp,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Sp({keys:o,programId:e,data:a})}},lt=Ze;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=R([pe(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(R([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=R([pe(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(R([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Bp(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ts}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Du}from"@solana/spl-token";import hr from"bn.js";import{TransactionInstruction as Cp,SYSVAR_RENT_PUBKEY as Rp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{createInitializeAccountInstruction as Fu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as vu}from"@solana/web3.js";function Kp(r="accountFlags"){let e=new Jr(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 es=R([pe(5),Kp("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"),pe(7)]);function Lp({programId:r,marketInfo:e}){let t=R([M("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),xt("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:Rp,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}:[]),i=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},i),new Cp({keys:n,programId:r,data:i})}async function Wu({connection:r,wallet:e,marketInfo:t}){let n=new vu,i=await r.getMinimumBalanceForRentExemption(165);n.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Eu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Eu}),Fu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Fu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new vu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(es.span),space:es.span,programId:t.programId}),bn.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}),bn.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}),bn.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}),bn.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}),Lp({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:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:o,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var Rn=class extends Ie{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ye({fromPublicKey:u,programId:o}),l=Ye({fromPublicKey:u,programId:o}),m=Ye({fromPublicKey:u,programId:o}),d=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:Du}),f=Ye({fromPublicKey:u,programId:Du}),b=0,g=new hr(100);function P(){let V=new hr(0);for(;;)try{return{vaultOwner:ts.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new hr(25555)))throw Error("find vault owner error")}}let{vaultOwner:k,vaultSignerNonce:T}=P(),h=new hr(Math.round(10**e.decimals*n)),I=new hr(Math.round(n*10**t.decimals*i));if(h.eq(Be))throw Error("lot size is too small");if(I.eq(Be))throw Error("tick size or lot size is too small");let S=await Wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:k,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});let O=[];for await(let V of S.slice(1,S.length)){let F=this.createTxBuilder();F.addCustomComputeBudget(a),F.addInstruction({instructions:V.transaction.instructions,signers:V.signer,instructionTypes:V.instructionTypes});let j=await F.versionBuild({txVersion:s});O.push(j)}return x.versionMultiBuild({extraPreBuildData:O,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new ts(e.mint),quoteMin:new ts(t.mint)}},txVersion:s})}};import{PublicKey as Ir}from"@solana/web3.js";import{PublicKey as Op,TransactionInstruction as rs,SYSVAR_CLOCK_PUBKEY as Np}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as is}from"@solana/spl-token";var ns=R([M("instruction"),ca("amount")]),Tr=R([M("instruction")]);function xB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Op("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:is,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Vi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(ns.span);return ns.encode({instruction:1,amount:Number(e)},i),new rs({keys:n,programId:r,data:i})}function bi({programId:r},e){let t=[{pubkey:is,isSigner:!1,isWritable:!1},{pubkey:Vi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Tr.span);return Tr.encode({instruction:2},n),new rs({keys:t,programId:r,data:n})}function os(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Tr.span);Tr.encode({instruction:2},s);let a=[{pubkey:is,isWritable:!1,isSigner:!1},{pubkey:Np,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new rs({programId:e.programId,keys:a,data:s})}import qu from"bn.js";var Mp={[Yn.IDO_PROGRAM_ID_V1.toString()]:1,[Yn.IDO_PROGRAM_ID_V2.toString()]:2,[Yn.IDO_PROGRAM_ID_V3.toString()]:3,[Yn.IDO_PROGRAM_ID_V4.toString()]:4},Ln=class extends Ie{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Mp[t.programId];a||this.logAndCreateError("invalid version",a);let u=ye(t),[c,l]=[!new qu(e.coin).isZero(),!new qu(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:i});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:b}=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:i});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[bi({programId:new Ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={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 Ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[os(W(N({},g),{side:"base"}))]:[],...l?[os(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as _p}from"@solana/web3.js";import{MintLayout as Vp,TOKEN_2022_PROGRAM_ID as ss,TOKEN_PROGRAM_ID as as}from"@solana/spl-token";var xr=class extends Ie{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._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(ht.address,ht),this._mintGroup.official.add(ht.address),s.forEach(u=>{this._blackTokenMap.set(u.address,W(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?ss.toBase58():as.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return ht;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new _p(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Vp.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.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 gi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n,this._owner=i?new yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ar({scope:this,moduleName:"Raydium_Farm"}),this.account=new Zn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new br({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new xr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Pr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new gr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Rn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Ln({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){let t=Ep({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Hr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new gi(W(N({},t),{api:u}));return await c.fetchAvailabilityStatus(e.disableFeatureCheck),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Zr);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(oa);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(Zr),new Error(Zr)}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 o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),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{TOKEN_PROGRAM_ID as ls,TOKEN_2022_PROGRAM_ID as us}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as ms,SystemProgram as Gu}from"@solana/web3.js";import cs from"bn.js";function LS(r,e,t,n,i,o,s,a,u,c,l,m){let d=R([M("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ye(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(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ye(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 mt("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=ye(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 ms({keys:p,programId:r,data:y})}function OS(r,e,t,n,i,o,s,a,u,c){let l=R([M("instruction")]),m=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=ye(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=ye(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 mt("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=ye(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 ms({keys:m,programId:r,data:d})}function Uu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=ye(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,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(us)||a.mintB.programId.equals(us)?[{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ut(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function Fp(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=R([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ls,isSigner:!1,isWritable:!1}];f.push(...Uu(a,c,o,t,n,p[0])),f.push(...Uu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new ms({keys:f,programId:r,data:b})}async function NS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ye(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(st):Rt.sub(st);return await xe.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new cs(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ui({poolKeys:l,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((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new cs(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?_.AmmV5SwapBaseIn:_.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],p=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Fp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,d,p,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new cs(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import zu from"bn.js";var ds=new zu(1e6);function vp(r,e,t){return r.mul(e).add(t).sub(new zu(1)).div(t)}function Xu(r,e,t){return r.mul(e).div(t)}var wi=class{static tradingFee(e,t){return vp(e,t,ds)}static protocolFee(e,t){return Xu(e,t,ds)}static fundFee(e,t){return Xu(e,t,ds)}};import Br from"bn.js";function Ai(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Wp(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=Ai(r,e);if(n.gt(On)){t=t.add(new Br(1));let i=r.div(t);n=Ai(r,t),n.gt(On)&&(i=i.add(new Br(1)))}return[t,e]}var On=new Br(0),ki=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Wp(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return Ai(e.mul(n),t).gt(On)&&s.gt(On)&&(s=s.add(new Br(1))),Ai(e.mul(i),t).gt(On)&&a.gt(On)&&(a=a.add(new Br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Yu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Yu||{}),Qu=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,i){let o=wi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=ki.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var ju={[Qr.toBase58()]:3},Hu={3:Qr};var Dp=R([pe(5),pe(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"),pe(7)]),Zu={3:Dp};import{PublicKey as $u}from"@solana/web3.js";var Pi=ae("Serum"),Ju=class{static getProgramId(e){let t=Hu[e];return t||Pi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||Pi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Zu[e];return t||Pi.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()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=$u.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return Pi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var SK=r=>r;export{mb as ACCOUNT_TYPE_SIZE,vb as ALL_PROGRAM_ID,Xd as AMM_CONFIG_SEED,Ll as AMM_STABLE,$i as AMM_V4,uf as ANAMint,Xe as API_URLS,Bl as AccountType,oT as AmmConfigLayout,Hr as Api,su as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,by as BN_100,gy as BN_1000,wy as BN_10000,yy as BN_FIVE,qs as BN_ONE,nn as BN_TEN,fy as BN_THREE,py as BN_TWO,Be as BN_ZERO,Xg as BitStructure,ua as Blob,Ol as CLMM_PROGRAM_ID,Vi as CLOCK_PROGRAM_ID,vl as CREATE_CPMM_POOL_AUTH,Wl as CREATE_CPMM_POOL_FEE_ACC,Fl as CREATE_CPMM_POOL_PROGRAM,gr as Clmm,xe as ClmmInstrument,ki as ConstantProductCurve,rx as CpmmConfigInfoLayout,wi as CpmmFee,Mu as CpmmPoolInfoLayout,vn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,dg as DEV_API_URLS,Eb as DEV_CREATE_CPMM_POOL_AUTH,Fb as DEV_CREATE_CPMM_POOL_FEE_ACC,Vb as DEV_CREATE_CPMM_POOL_PROGRAM,Rd as DataElement,cf as ETHMint,zo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ra as FARM_LOCK_MINT,La as FARM_LOCK_VAULT,Hi as FARM_PROGRAM_ID_V3,Zi as FARM_PROGRAM_ID_V5,Tn as FARM_PROGRAM_ID_V6,gt as FARM_PROGRAM_TO_VERSION,Na as FARM_VERSION_TO_LEDGER_LAYOUT,Oa as FARM_VERSION_TO_STATE_LAYOUT,di as FEE_RATE_DENOMINATOR,ds as FEE_RATE_DENOMINATOR_VALUE,Jd as FETCH_TICKARRAY_COUNT,$d as Fee,ee as Fraction,Yn as IDO_ALL_PROGRAM,Ml as IDO_PROGRAM_ID_V1,_l as IDO_PROGRAM_ID_V2,Vl as IDO_PROGRAM_ID_V3,El as IDO_PROGRAM_ID_V4,Vr as INSTRUCTION_PROGRAM_ID,_ as InstructionType,Ji as JupTokenType,Pu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,sp as LIQUIDITY_VERSION_TO_SERUM_VERSION,PP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,au as LOG_B_2_X32,uu as LOG_B_P_ERR_MARGIN_LOWER_X64,cu as LOG_B_P_ERR_MARGIN_UPPER_X64,zr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,ic as LogLevel,xi as Logger,es as MARKET_STATE_LAYOUT_V2,Dp as MARKET_STATE_LAYOUT_V3,Zu as MARKET_VERSION_TO_STATE_LAYOUT,Hs as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,Je as MAX_TICK,An as MEMO_PROGRAM_ID,_s as MEMO_PROGRAM_ID2,kn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,Kn as MODEL_DATA_PUBKEY,Ju as Market,Z as MathUtil,Xo as MaxU64,ou as MaxUint128,Ft as NEGATIVE_ONE,af as NRVMint,st as ONE,Rl as OPEN_BOOK_PROGRAM,Hd as OPERATION_SEED,Qo as ObservationInfoLayout,np as ObservationLayout,yu as OperationLayout,so as OptionLayout,yt as Owner,Jp as PAIMint,Qd as POOL_REWARD_VAULT_SEED,zd as POOL_SEED,Zd as POOL_TICK_ARRAY_BITMAP_SEED,Yd as POOL_VAULT_SEED,nu as POSITION_SEED,ve as Percent,Ul as PoolFetchType,du as PoolInfoLayout,je as PoolUtils,pu as PositionInfoLayout,ip as PositionRewardInfoLayout,fr as PositionUtils,Ge as Price,sT as ProtocolPositionLayout,mi as Q128,at as Q64,$p as RAYMint,tt as RENT_PROGRAM_ID,gi as Raydium,rp as RewardInfo,Yu as RoundDirection,Di as Rounding,Nl as Router,ju as SERUM_PROGRAMID_TO_VERSION,Qr as SERUM_PROGRAM_ID_V3,Hu as SERUM_VERSION_TO_PROGRAMID,ia as SESSION_KEY,Ne as SOLMint,ht as SOL_INFO,Hk as SPL_MINT_LAYOUT,ef as SRMMint,eo as STORAGE_KEY,Vs as SYSTEM_PROGRAM_ID,H as SqrtPriceMath,Sn as StableLayout,ao as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,jd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,QP as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,fu as TickArrayBitmapExtensionLayout,pr as TickArrayBitmapExtensionUtils,dr as TickArrayLayout,op as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,de as Token,fe as TokenAmount,Yr as TxBuilder,Wn as TxVersion,mr as U64Resolution,HP as U64_IGNORE_RANGE,ro as UInt,tf as USDCMint,sf as USDHMint,nf as USDTMint,Cl as UTIL1216,uo as Union,Ka as Voter,ld as VoterDepositEntry,cd as VoterLockup,Sa as VoterRegistrar,ud as VoterVotingMintConfig,J as WSOLMint,Jr as WideBits,_t as WrappedLayout,me as ZERO,Fs as _100_PERCENT,A as accountMeta,ey as add,Ur as addComputeBudget,Eo as addLiquidityLayout,Rw as array,go as associatedLedgerAccountLayout,io as bits,pe as blob,De as bool,Ro as calFarmRewardAmount,vp as ceilDiv,Dn as checkLegacyTxSize,qn as checkV0TxSize,Yi as chunkArray,Tr as claimLayout,Vt as closeAccountInstruction,Ni as commonSystemAccountMeta,Va as createAssociatedLedgerAccountInstruction,ae as createLogger,Ua as createPoolFeeLayout,Za as createPoolV4InstructionV2,kP as createPoolV4Layout,Bt as createWSolAccountInstructions,Aw as cstr,Ff as currencyEquals,pl as decimalToFraction,Fm as decodeBool,Hf as div,vr as divCeil,$e as dwLayout,vm as encodeBool,Lg as endlessRetry,ll as eq,fw as f32,yw as f32be,bw as f64,gw as f64be,Po as farmAddRewardLayout,_A as farmLedgerLayoutV3_1,Jn as farmLedgerLayoutV3_2,VA as farmLedgerLayoutV5_1,xa as farmLedgerLayoutV5_2,Ba as farmLedgerLayoutV6_1,_a as farmRewardInfoToConfig,Ao as farmRewardLayout,ko as farmRewardRestartLayout,ad as farmRewardTimeInfoLayout,Ta as farmStateV3Layout,Ia as farmStateV5Layout,$n as farmStateV6Layout,ak as fetchMultipleFarmInfoAndUpdate,VT as fetchMultipleInfo,db as fetchMultipleMintInfos,oe as findProgramAddress,Mo as fixedSwapInLayout,_o as fixedSwapOutLayout,Xu as floorDiv,Gr as forecastTransactionSize,Wd as formatLayout,Ye as generatePubKey,be as getATAAddress,Ma as getAssociatedAuthority,Zo as getAssociatedConfigId,rt as getAssociatedLedgerAccount,tr as getAssociatedLedgerPoolAccount,lp as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Ap as getCpmmPdaAmmConfigId,kp as getCpmmPdaPoolId,Bu as getCreatePoolKeys,ta as getDate,Lo as getDepositEntryIndex,Ya as getDxByDyBaseIn,za as getDyByDxBaseIn,nb as getEpochInfo,oi as getFarmLedgerLayout,md as getFarmStateLayout,mp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,_h as getLiquidityFromAmounts,Jf as getMax,Tt as getMultipleAccountsInfo,hn as getMultipleAccountsInfoWithCustomFlags,Qi as getMultipleLookupTableInfo,XP as getPdaAmmConfigId,ut as getPdaExBitmapAccount,Pp as getPdaLpMint,li as getPdaMetadataKey,fi as getPdaObservationId,lr as getPdaOperationAccount,St as getPdaPersonalPositionAddress,wp as getPdaPoolAuthority,ru as getPdaPoolId,iu as getPdaPoolRewardVaulId,Go as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,xu as getPdaVault,Pn as getRecentBlockHash,Io as getRegistrarAddress,Gl as getSessionKey,Qa as getStablePrice,Kl as getTime,Xy as getTimestamp,Co as getTokenOwnerRecordAddress,zb as getTransferAmountFee,Ke as getTransferAmountFeeV2,So as getVoterAddress,Ko as getVoterWeightRecordAddress,Bo as getVotingMintAuthority,xo as getVotingTokenMint,kd as governanceCreateTokenOwnerRecord,zg as greedy,cl as gt,jf as gte,ya as i128,WP as i16ToBytes,ci as i32ToBytes,ei as i64,fa as i8,Vo as initPoolLayout,yo as initTokenAccountInstruction,Lp as initializeMarket,Cb as intersection,ra as isDateAfter,na as isDateBefore,fl as isDecimal,$f as isMeaningfulNumber,ea as isNumber,ho as isValidFarmVersion,cr as isZero,ye as jsonInfo2PoolKeys,uk as judgeFarmType,qo as leadingZeros,tu as leastSignificantBit,Sd as liquidityStateV4Layout,Kd as liquidityStateV5Layout,Yf as lt,Qf as lte,rf as mSOLMint,ui as makeAMMSwapInstruction,Ha as makeAddLiquidityInstruction,No as makeAddNewRewardInstruction,bi as makeClaimInstruction,os as makeClaimInstructionV4,Cu as makeCreateCpmmPoolInInstruction,Ea as makeCreateFarmInstruction,Wu as makeCreateMarketInstruction,Fa as makeCreatorWithdrawFarmRewardInstruction,Ru as makeDepositCpmmInInstruction,va as makeDepositInstructionV3,Wa as makeDepositInstructionV5,Da as makeDepositInstructionV6,xk as makeDepositTokenInstruction,Sk as makeDepositWithdrawInstruction,FP as makeInitPoolInstructionV4,xB as makePurchaseInstruction,Oo as makeRestartRewardInstruction,$a as makeSimulatePoolInfoInstruction,Ou as makeSwapCpmmBaseInInInstruction,Nu as makeSwapCpmmBaseOutInInstruction,Ud as makeSwapFixedInInstruction,Gd as makeSwapFixedOutInstruction,NS as makeSwapInstruction,Hn as makeTransferInstruction,Lu as makeWithdrawCpmmInInstruction,sr as makeWithdrawInstructionV3,or as makeWithdrawInstructionV5,ir as makeWithdrawInstructionV6,Bk as makeWithdrawTokenInstruction,sn as minExpirationTime,jP as mockCreatePoolInfo,lu as mockV3CreatePoolInfo,Ld as modelDataInfoLayout,eu as mostSignificantBit,Gi as mul,Xi as notInnerObject,aw as ns64,pw as ns64be,ca as nu64,tw as nu64be,oo as offset,Nb as offsetDateTime,xw as option,U as parseBigNumberish,tn as parseNumberInfo,$s as parseSimulateLogToJson,Mt as parseSimulateValue,ha as parseTokenAccountResp,iP as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,B as publicKey,ns as purchaseLayout,id as realFarmStateV3Layout,od as realFarmStateV5Layout,sd as realFarmV6Layout,Ds as recursivelyDecimalToFraction,Do as removeLiquidityInstruction,Fo as removeLiquidityLayout,LS as route1Instruction,OS as route2Instruction,Fp as routeInstruction,Cw as rustEnum,rw as s16,uw as s16be,iw as s24,cw as s24be,We as s32,lw as s32be,ow as s40,mw as s40be,sw as s48,dw as s48be,nw as s8,q as seq,zp as setLoggerLevel,ml as shakeFractionDecimal,Zs as simulateMultipleInstruction,EP as simulatePoolInfoInstruction,Pl as simulateTransaction,Xs as sleep,Ei as solToWSol,aP as solToWSolToken,Yt as splAccountLayout,Gs as splitNumber,of as stSOLMint,Kw as str,R as struct,Zf as sub,Sw as tagged,qi as tenExponential,dl as toBN,hl as toBuffer,Us as toFraction,zf as toFractionWithDecimals,Ay as toPercent,ai as toToken,sP as toTokenAmount,oP as toTokenInfo,ky as toTokenPrice,Py as toTotalPrice,Ws as toUsdCurrency,Uo as trailingZeros,_i as tryParsePublicKey,z as u128,xt as u16,Ja as u16ToBytes,Hg as u16be,Yg as u24,Zg as u24be,ze as u32,DP as u32ToBytes,$g as u32be,Qg as u40,Jg as u40be,jg as u48,ew as u48be,w as u64,M as u8,Lw as union,SK as unionArr,ww as unionLayoutDiscriminator,Lb as uniq,dd as updateFarmPoolInfo,jr as updateReqHistory,kw as utf8,Mi as validateAndParsePublicKey,To as validateFarmRewards,Bw as vec,Wm as vecU8,hd as voterStakeRegistryCreateDepositEntry,Pd as voterStakeRegistryCreateVoter,gd as voterStakeRegistryDeposit,wd as voterStakeRegistryUpdateVoterWeightRecord,Ad as voterStakeRegistryWithdraw,uP as wSolToSolToken,wo as withdrawRewardLayout,Rb as xor,Ow as zeros};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map