@raydium-io/raydium-sdk-v2 0.0.30-alpha → 0.0.31-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 (102) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +5 -5
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +4 -4
  39. package/lib/raydium/cpmm/cpmm.js +1 -1
  40. package/lib/raydium/cpmm/cpmm.js.map +1 -1
  41. package/lib/raydium/cpmm/cpmm.mjs +1 -1
  42. package/lib/raydium/cpmm/cpmm.mjs.map +1 -1
  43. package/lib/raydium/cpmm/index.d.ts +1 -1
  44. package/lib/raydium/cpmm/index.js +1 -1
  45. package/lib/raydium/cpmm/index.js.map +1 -1
  46. package/lib/raydium/cpmm/index.mjs +1 -1
  47. package/lib/raydium/cpmm/index.mjs.map +1 -1
  48. package/lib/raydium/cpmm/instruction.js +1 -1
  49. package/lib/raydium/cpmm/instruction.js.map +1 -1
  50. package/lib/raydium/cpmm/instruction.mjs +1 -1
  51. package/lib/raydium/cpmm/instruction.mjs.map +1 -1
  52. package/lib/raydium/cpmm/type.d.ts +9 -2
  53. package/lib/raydium/cpmm/type.js +1 -1
  54. package/lib/raydium/cpmm/type.js.map +1 -1
  55. package/lib/raydium/farm/config.d.ts +1 -1
  56. package/lib/raydium/farm/farm.d.ts +3 -3
  57. package/lib/raydium/farm/index.d.ts +1 -1
  58. package/lib/raydium/farm/instruction.d.ts +1 -1
  59. package/lib/raydium/farm/layout.d.ts +1 -1
  60. package/lib/raydium/farm/type.d.ts +1 -1
  61. package/lib/raydium/farm/util.d.ts +1 -1
  62. package/lib/raydium/ido/ido.d.ts +3 -3
  63. package/lib/raydium/ido/index.d.ts +3 -3
  64. package/lib/raydium/ido/instruction.d.ts +1 -1
  65. package/lib/raydium/ido/type.d.ts +1 -1
  66. package/lib/raydium/index.d.ts +3 -3
  67. package/lib/raydium/index.js +1 -1
  68. package/lib/raydium/index.js.map +1 -1
  69. package/lib/raydium/index.mjs +1 -1
  70. package/lib/raydium/index.mjs.map +1 -1
  71. package/lib/raydium/liquidity/index.d.ts +1 -1
  72. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  73. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  74. package/lib/raydium/liquidity/type.d.ts +1 -1
  75. package/lib/raydium/liquidity/utils.d.ts +1 -1
  76. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  77. package/lib/raydium/marketV2/index.d.ts +3 -3
  78. package/lib/raydium/moduleBase.d.ts +3 -3
  79. package/lib/raydium/raydium.d.ts +3 -3
  80. package/lib/raydium/raydium.js +1 -1
  81. package/lib/raydium/raydium.js.map +1 -1
  82. package/lib/raydium/raydium.mjs +1 -1
  83. package/lib/raydium/raydium.mjs.map +1 -1
  84. package/lib/raydium/token/constant.d.ts +1 -1
  85. package/lib/raydium/token/index.d.ts +1 -1
  86. package/lib/raydium/token/token.d.ts +3 -3
  87. package/lib/raydium/token/type.d.ts +1 -1
  88. package/lib/raydium/token/utils.d.ts +1 -1
  89. package/lib/raydium/tradeV2/index.d.ts +2 -2
  90. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  91. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  92. package/lib/raydium/tradeV2/type.d.ts +2 -2
  93. package/lib/raydium/type.d.ts +1 -1
  94. package/lib/raydium/utils1216/index.d.ts +3 -3
  95. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  96. package/lib/{raydium-d75706f4.d.ts → raydium-af1993ca.d.ts} +6 -5
  97. package/lib/{type-83523f5f.d.ts → type-3b373344.d.ts} +3 -3
  98. package/lib/{type-6fd96950.d.ts → type-502bbda1.d.ts} +1 -1
  99. package/package.json +1 -1
  100. package/src/raydium/cpmm/cpmm.ts +70 -19
  101. package/src/raydium/cpmm/instruction.ts +1 -1
  102. package/src/raydium/cpmm/type.ts +9 -2
@@ -1,3 +1,3 @@
1
- var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var gr=Object.getOwnPropertySymbols;var Ho=Object.prototype.hasOwnProperty,Zo=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))Ho.call(e,t)&&jo(r,t,e[t]);if(gr)for(var t of gr(e))Zo.call(e,t)&&jo(r,t,e[t]);return r},D=(r,e)=>Nu(r,Mu(e));var ke=(r,e)=>{var t={};for(var n in r)Ho.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&gr)for(var n of gr(r))e.indexOf(n)<0&&Zo.call(r,n)&&(t[n]=r[n]);return t};import{merge as kd}from"lodash";import ul from"axios";import{get as $o,set as _u}from"lodash";import es from"dayjs";import Vu from"dayjs/plugin/utc";es.extend(Vu);var fi=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 es().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}},Jo={},Eu={};function se(r){let e=$o(Jo,r);if(!e){let t=$o(Eu,r);e=new fi({name:r,logLevel:t}),_u(Jo,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Rr from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,yi="0123456789abcdef",Ar="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",bi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},is,Rt,$=!0,hr="[DecimalError] ",Wt=hr+"Invalid argument: ",os=hr+"Precision limit exceeded",ss=hr+"crypto unavailable",as="[object Decimal]",Fe=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,us=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,dt=1e7,j=7,Du=9007199254740991,qu=Ar.length-1,gi=kr.length-1,R={toStringTag:as};R.absoluteValue=R.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};R.ceil=function(){return G(new this.constructor(this),this.e+1,2)};R.clampedTo=R.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(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};R.comparedTo=R.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};R.cosine=R.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())+j,n.rounding=1,t=Uu(n,ps(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};R.cubeRoot=R.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*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=Fe((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=ge(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(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")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,G(n,r,m.rounding,e)};R.decimalPlaces=R.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Fe(this.e/j))*j,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};R.dividedBy=R.div=function(r){return ge(this,new this.constructor(r))};R.dividedToIntegerBy=R.divToInt=function(r){var e=this,t=e.constructor;return G(ge(e,new t(r),0,1,1),t.precision,t.rounding)};R.equals=R.eq=function(r){return this.cmp(r)===0};R.floor=function(){return G(new this.constructor(this),this.e+1,3)};R.greaterThan=R.gt=function(r){return this.cmp(r)>0};R.greaterThanOrEqualTo=R.gte=function(r){var e=this.cmp(r);return e==1||e===0};R.hyperbolicCosine=R.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/Ir(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(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 G(o,s.precision=t,s.rounding=n,!0)};R.hyperbolicSine=R.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=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Ir(5,r)),i=ln(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,G(i,e,t,!0)};R.hyperbolicTangent=R.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,ge(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};R.inverseCosine=R.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()?mt(t,i,o):new t(0):new t(NaN):e.isZero()?mt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=mt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};R.inverseHyperbolicCosine=R.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)};R.inverseHyperbolicSine=R.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())};R.inverseHyperbolicTangent=R.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?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ge(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)};R.inverseSine=R.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=mt(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)))};R.inverseTangent=R.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<=gi)return s=mt(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=gi)return s=mt(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/j+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/j),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,G(s,l.precision=m,l.rounding=d,!0)};R.isFinite=function(){return!!this.d};R.isInteger=R.isInt=function(){return!!this.d&&Fe(this.e/j)>this.d.length-2};R.isNaN=function(){return!this.s};R.isNegative=R.isNeg=function(){return this.s<0};R.isPositive=R.isPos=function(){return this.s>0};R.isZero=function(){return!!this.d&&this.d[0]===0};R.lessThan=R.lt=function(r){return this.cmp(r)<0};R.lessThanOrEqualTo=R.lte=function(r){return this.cmp(r)<1};R.logarithm=R.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=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),In(u.d,i=m,d))do if(a+=10,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(In(u.d,i+=10,d));return $=!0,G(u,m,d)};R.minus=R.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 $?G(r,a,u):r}if(t=Fe(r.e/j),l=Fe(p.e/j),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/j),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]=dt-1;--c[i],c[n]+=dt}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=Tr(c,t),$?G(r,a,u):r):new y(u===3?-0:0)};R.modulo=R.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]?G(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=ge(t,r.abs(),0,3,1),e.s*=r.s):e=ge(t,r,0,n.modulo,1),e=e.times(r),$=!0,t.minus(e))};R.naturalExponential=R.exp=function(){return wi(this)};R.naturalLogarithm=R.ln=function(){return vt(this)};R.negated=R.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};R.plus=R.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)),$?G(r,a,u):r;if(o=Fe(m.e/j),n=Fe(r.e/j),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/j),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)/dt|0,c[i]%=dt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Tr(c,n),$?G(r,a,u):r};R.precision=R.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};R.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};R.sine=R.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())+j,n.rounding=1,t=Xu(n,ps(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};R.squareRoot=R.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=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Fe((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(ge(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(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")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return $=!0,G(n,u,l.rounding,r)};R.tangent=R.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=ge(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};R.times=R.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=Fe(l.e/j)+Fe(r.e/j),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%dt|0,e=a/dt|0;o[i]=(o[i]+e)%dt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Tr(o,t),$?G(r,m.precision,m.rounding):r};R.toBinary=function(r,e){return ki(this,2,r,e)};R.toDecimalPlaces=R.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(je(r,0,Dt),e===void 0?e=n.rounding:je(e,0,8),G(t,r+t.e+1,e))};R.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(je(r,0,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(je(r,0,Dt),e===void 0?e=o.rounding:je(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};R.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=cs(y)-p.e-1,s=o%j,e.d[0]=Ke(10,s<0?j+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*j*2;m=ge(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=ge(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=ge(c,n,o,1).minus(p).abs().cmp(ge(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};R.toHexadecimal=R.toHex=function(r,e){return ki(this,16,r,e)};R.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:je(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=ge(t,r,0,e,1).times(r),$=!0,G(t)):(r.s=t.s,t=r),t};R.toNumber=function(){return+this};R.toOctal=function(r,e){return ki(this,8,r,e)};R.toPower=R.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(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=Fe(r.e/j),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=ls(u,a,t,n),r.s<0?new u(1).div(i):G(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=Ke(+a,c),e=t==0||!isFinite(t)?Fe(c*(Math.log("0."+Me(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=wi(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),In(i.d,n,o)&&(e=n+10,i=G(wi(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,$=!0,u.rounding=o,G(i,n,o))};R.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):(je(r,1,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toSignificantDigits=R.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(je(r,1,Dt),e===void 0?e=n.rounding:je(e,0,8)),G(new n(t),r,e)};R.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};R.truncated=R.trunc=function(){return G(new this.constructor(this),this.e+1,1)};R.valueOf=R.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 Me(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=j-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=j-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function je(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function In(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=j,i=0):(i=Math.ceil((e+1)/j),e%=j),o=Ke(10,j-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)==Ke(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)==Ke(10,e-3)-1,s}function wr(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]+=yi.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 Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Ir(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(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 ge=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,Q,W=n.constructor,ee=n.s==i.s?1:-1,te=n.d,oe=i.d;if(!te||!te[0]||!oe||!oe[0])return new W(!n.s||!i.s||(te?oe&&te[0]==oe[0]:!oe)?NaN:te&&te[0]==0||!oe?ee*0:ee/0);for(u?(p=1,l=n.e-i.e):(u=dt,p=j,l=Fe(n.e/p)-Fe(i.e/p)),F=oe.length,O=te.length,g=new W(ee),P=g.d=[],m=0;oe[m]==(te[m]||0);m++);if(oe[m]>(te[m]||0)&&l--,o==null?(I=o=W.precision,s=W.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,oe=oe[0],I++;(m<O||d)&&I--;m++)S=d*u+(te[m]||0),P[m]=S/oe|0,d=S%oe|0;y=d||m<O}else{for(d=u/(oe[0]+1)|0,d>1&&(oe=r(oe,d,u),te=r(te,d,u),F=oe.length,O=te.length),x=F,k=te.slice(0,F),T=k.length;T<F;)k[T++]=0;Q=oe.slice(),Q.unshift(0),V=oe[0],oe[1]>=u/2&&++V;do d=0,c=e(oe,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(oe,d,u),b=f.length,T=k.length,c=e(f,k,b,T),c==1&&(d--,t(f,F<b?Q:oe,b,u))):(d==0&&(c=d=1),f=oe.slice()),b=f.length,b<T&&f.unshift(0),t(k,f,T,u),c==-1&&(T=k.length,c=e(oe,k,F,T),c<1&&(d++,t(k,F<T?Q:oe,T,u))),T=k.length):c===0&&(d++,k=[0]),P[m++]=d,c&&k[0]?k[T++]=te[x]||0:(k=[te[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,is=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(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+=j,s=e,l=m[d=0],u=l/Ke(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/j),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=j,s=o-j+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=j,s=o-j+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Ke(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/Ke(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]=Ke(10,(j-e%j)%j),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ke(10,j-o),m[d]=s>0?(l/Ke(10,i-s)%Ke(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]==dt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=dt)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 ds(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function Tr(r,e){var t=r[0];for(e*=j;t>=10;t/=10)e++;return e}function Pr(r,e,t){if(e>qu)throw $=!0,t&&(r.precision=t),Error(os);return G(new r(Ar),e,1,!0)}function mt(r,e,t){if(e>gi)throw Error(os);return G(new r(kr),e,t,!0)}function cs(r){var e=r.length-1,t=e*j+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 Ft(r){for(var e="";r--;)e+="0";return e}function ls(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/j+4);for($=!1;;){if(t%2&&(o=o.times(e),ns(o.d,s)&&(i=!0)),t=Fe(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ns(e.d,s)}return $=!0,o}function ts(r){return r.d[r.d.length-1]&1}function ms(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 wi(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(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(ge(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&In(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return G(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function vt(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=Me(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=Me(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=Pr(g,l+2,k).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=k,e==null?G(f,k,P,$=!0):f;for(m=f,u=s=f=ge(f.minus(1),f.plus(1),l,1),d=G(f.times(f),l,1),i=3;;){if(s=G(s.times(d),l,1),c=u.plus(ge(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Pr(g,l+2,k).times(o+""))),u=ge(u,new g(p),l,1),e==null)if(In(u.d,l-y,P,a))g.precision=l+=y,c=s=f=ge(m.minus(1),m.plus(1),l,1),d=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=k,P,$=!0);else return g.precision=k,u;u=c,i+=2}}function ds(r){return String(r.s*r.s/0)}function Ai(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)%j,t<0&&(n+=j),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=j;n<i;)r.d.push(+e.slice(n,n+=j));e=e.slice(n),n=j-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 Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),us.test(e))return Ai(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+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=ls(n,new n(t),o,o*2)),c=wr(e,t,dt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Tr(c,l),r.d=c,$=!1,s&&(r=ge(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):xn.pow(2,u))),$=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Ir(5,t)),e=ln(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 ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/j);for($=!1,u=t.times(t),a=new r(n);;){if(s=ge(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ge(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 Ir(r,e){for(var t=r;--e;)t*=r;return t}function ps(r,e){var t,n=e.s<0,i=mt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ts(t)?n?2:3:n?4:1,e;Rt=ts(t)?n?1:4:n?3:2}return e.minus(i).abs()}function ki(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(je(t,1,Dt),n===void 0?n=p.rounding:je(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ds(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=wr(kt(d),10,i),d.e=d.d.length),m=wr(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=ge(r,d,t,n,0,i),m=r.d,o=r.e,c=is),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+=yi.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=wr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=yi.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 ns(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Qu(r){return new this(r).acosh()}function ju(r,e){return new this(r).plus(e)}function Hu(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(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=mt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?mt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=mt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ge(r,e,o,1)),e=mt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ge(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(hr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=bi[t]),(n=r[t])!==void 0)if(Fe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=bi[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(ss);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function fs(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,rs(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 Ai(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),us.test(o)?Ai(c,o):Gu(c,o)}if(i.prototype=R,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=ic,i.clone=fs,i.isDecimal=rs,i.abs=zu,i.acos=Yu,i.acosh=Qu,i.add=ju,i.asin=Hu,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=kc,i.round=Pc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,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 ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(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 rs(r){return r instanceof xn||r&&r.toStringTag===as||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ms(this,arguments,"lt")}function bc(){return ms(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function kc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:je(r,1,Dt),n=Math.ceil(r/j),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(ss);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=j,n&&r&&(i=Ke(10,j-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-=j)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<j&&(t-=j-n)}return s.e=t,s.d=a,s}function Pc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for($=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return $=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString;R[Symbol.toStringTag]="Decimal";var xn=R.constructor=fs(bi);Ar=new xn(Ar);kr=new xn(kr);var E=xn;import{PublicKey as Bi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as ys,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function A({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Pi=[A({pubkey:Lc,isWritable:!1}),A({pubkey:ys.programId,isWritable:!1}),A({pubkey:Oc,isWritable:!1})];function hi({publicKey:r,transformSol:e}){let t=Ti(r.toString());if(t instanceof Pe)return e&&t.equals(Ce)?J:t;if(e&&t.toString()===Ce.toBase58())return J;if(typeof t=="string"){if(t===Pe.default.toBase58())return Pe.default;try{return new Pe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ti(r){try{return new Pe(r)}catch{return r}}var mn=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bs=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new Pe("SysvarRent111111111111111111111111111111111"),Ii=new Pe("SysvarC1ock11111111111111111111111111111111"),dn=new Pe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xr=new Pe("Sysvar1nstructions1111111111111111111111111"),gs=ys.programId,Md=new Pe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_d=new Pe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vd=new Pe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ed=new Pe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fd=new Pe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vd=new Pe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Wd=new Pe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new Pe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qd=new Pe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ud=new Pe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gd=new Pe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Pe("So11111111111111111111111111111111111111112"),Ce=Pe.default;function xi(r){return hi({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ws}from"@solana/spl-token";var Pt={chainId:101,address:Nc.default.toBase58(),programId:ws.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ws.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 Si=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Bi&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Bi(Re.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?Bi.default:hi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Si;he.WSOL=new Si(D(N({},Re),{mint:Re.address}));import Sr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Bn=_c;var Br=se("module/fraction"),Ki=Bn(Sr),Sn=Bn(Ec),Fc={[0]:Sn.ROUND_DOWN,[1]:Sn.ROUND_HALF_UP,[2]:Sn.ROUND_UP},vc={[0]:Sr.roundDown,[1]:Sr.roundHalfUp,[2]:Sr.roundUp},le=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Br.logWithError(`${e} is not an integer.`),e<=0&&Br.logWithError(`${e} is not positive.`),Sn.set({precision:e+1,rounding:Fc[n]});let i=new Sn(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)||Br.logWithError(`${e} is not an integer.`),e<0&&Br.logWithError(`${e} is negative.`),Ki.DP=e,Ki.RM=vc[n]||1,new Ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=se("Raydium_price"),ot=class extends le{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new le(Ci(n.decimals),Ci(i.decimals))}get raw(){return new le(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ot({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new ot({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 Ri=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Kr=Ri;Kr.SOL=new Ri(Pt);import qc from"bn.js";var As=new le(new qc(100)),tt=class extends le{toSignificant(e=5,t,n){return this.mul(As).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(As).toFixed(e,t,n)}};var ze=new Ze(0),Ps=new Ze(1),Wp=new Ze(2),Dp=new Ze(3),qp=new Ze(5),Li=new Ze(10),Up=new Ze(100),Gp=new Ze(1e3),Xp=new Ze(1e4),ks=9007199254740991;function X(r){let e=se("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ci(r){return Li.pow(X(r))}function Cr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=se("Raydium_amount"),Ts=Bn(Uc);function Xc(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")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ae=class extends le{constructor(t,n,i=!0,o){let s=new Rr(0),a=Li.pow(new Rr(t.decimals));if(i)s=X(n);else{let u=new Rr(0),c=new Rr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(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 Ts.DP=this.token.decimals,new Ts(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function hs(r){return typeof r=="object"&&r!==null&&![he,Ae,zc,le,Yc,ot,tt].some(e=>typeof e=="object"&&r instanceof e)}function pe(r){return typeof r=="string"?Ti(r):Array.isArray(r)?r.map(e=>pe(e)):hs(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,pe(t)])):r}import{PublicKey as Ln,sendAndConfirmTransaction as _i,Transaction as On,TransactionMessage as Nn,VersionedTransaction as Mn}from"@solana/web3.js";import Jc from"axios";var _={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 xs,ComputeBudgetProgram as Is,Transaction as Lr,TransactionMessage as Qc,Keypair as Bs,VersionedTransaction as Ss}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as jc}from"@solana/spl-token";var Lt=se("Raydium_txUtil"),Ks=1644;function Or(r){let e=[],t=[];return r.microLamports&&(e.push(Is.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(Is.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 Nr(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Lr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ks}catch{return!1}}async function Cs(r,e,t,n=!0){let i=new xs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Lr;s.feePayer=i;for(let c of e)Nr([...s.instructions,c],[i])||(o.push(s),s=new Lr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Hc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Rs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=xs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Hc(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&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Kn({instructions:r,payer:e,signers:t}){return Nr(r,[e,...t])}function Cn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Bs.generate().publicKey.toString()}){let o=new Qc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ss(o).serialize()).toString("base64").length<Ks}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function Ht(r){let e=[];return r.forEach(t=>{t instanceof Lr&&(t.recentBlockhash||(t.recentBlockhash=jc.toBase58()),t.feePayer||(t.feePayer=Bs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ss&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Ls,AddressLookupTableAccount as Mr}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Nf,unpackMint as Mf}from"@solana/spl-token";var Oi=se("Raydium_accountInfo_util");async function ht(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Ni(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=Ni(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Oi.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"&&Oi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Oi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Rn(r,e,t){let n=await ht(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}async function Mi({connection:r,address:e}){let t=await ht(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Ls(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Mr({key:s,state:Mr.deserialize(o.data)});n[s.toString()]=a,_r[s.toString()]=a}return n}var _r={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Mr({key:new Ls("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Mr.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 Vr=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 Jc.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}=Or(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!==Ln.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 On;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),Ht([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await _i(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 _i(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));Ht(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=ke(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},_r),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Ln(p));let c=await Mi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Nn({payerKey:this.feePayer,recentBlockhash:i?Ln.default.toBase58():await pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Mn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var p;if(Ht([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;Ht(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=ke(c,["computeBudgetConfig"]),i=t?Or(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(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 Ln(f));if(u.length<12&&Kn({instructions:d,payer:this.feePayer,signers:y})||Kn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Kn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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);Kn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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])}),Ht(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await _i(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=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},_r),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Ln(g));let c=await Mi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Or(t):{instructions:[],instructionTypes:[]},m=await pn(this.connection),d=this.signers.reduce((g,P)=>D(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&&Cn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||Cn({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&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mn(h))}else{let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mn(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&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mn(k))}else{let k=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mn(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])}),Ht(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(Q=>Q.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 pt=class{constructor(e){this._owner=e}get publicKey(){return pt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return pt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return pt.isKeyPair(this._owner)}get isPublicKey(){return pt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!pt.isKeyPair(e)}};function Ni(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Os=r=>typeof r=="number";function Ns(r,e,t){let n=Os(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Ms(r,e,t){let n=Os(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as Se}from"@solana/web3.js";var _s=new Se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Vs=new Se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),_n=new Se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ny=new Se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ry=new Se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ei=new Se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Es=new Se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),iy=new Se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),oy=new Se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sy=new Se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),el=new Se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new Se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new Se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new Se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ay=new Se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),uy=new Se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),cy=new Se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ly=new Se("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),my=new Se("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),dy=new Se("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Vn={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ol}from"@solana/spl-token";function fe(r,e,t){return ie([r.toBuffer(),(t!=null?t:ol).toBuffer(),e.toBuffer()],new il("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ft from"bn.js";var En=1e4;function xe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(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 ft(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===En){let u=new ft(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Fn(r.mul(new ft(En)),new ft(En-o.transferFeeBasisPoints)),c=new ft(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Fn(l.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Fn(r.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Fn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new ft(0))?t.add(new ft(1)):t}var ve={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"},Fy=N({},ve);var Fs="ray_tab_hash",Fi="ray_req_hash",sl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Fs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Fs,r)),r},Er=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=ke(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Fi)||"[]").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(D(N({},t),{time:Date.now(),session:sl()}));try{localStorage.setItem(Fi,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(Fi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Er(D(N({},t),{logCount:r,removeLastLog:!0}))}};var Fr=se("Raydium_Api"),vi=new Map;var vr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ul.create({baseURL:this.urlConfigs.BASE_HOST||ve.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Fr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Fr.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&&Er({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Fr.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&&Er({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Fr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||ve.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||ve.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||ve.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||ve.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||ve.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||ve.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||ve.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||ve.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||ve.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>vi.has(s)?(n.push(vi.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||ve.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{vi.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||ve.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||ve.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||ve.CHECK_AVAILABILITY)).data}};var Wr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",vs="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Hi,TOKEN_PROGRAM_ID as Xt,AccountLayout as yn,TOKEN_2022_PROGRAM_ID as El}from"@solana/spl-token";import{PublicKey as Qr,SystemProgram as Fl}from"@solana/web3.js";var Wi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new Vr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Wi(e))}logInfo(...e){this.logger.info(Wi(e))}logAndCreateError(...e){let t=Wi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ll,createCloseAccountInstruction as Ol,createTransferInstruction as Nl,TOKEN_PROGRAM_ID as fn}from"@solana/spl-token";import{PublicKey as Ml,SystemProgram as _l}from"@solana/web3.js";import Vl from"bn.js";import{PublicKey as Js,Keypair as Sl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import Cl from"bn.js";import{PublicKey as kl}from"@solana/web3.js";import Gs,{isBN as Xs}from"bn.js";import{bits as cl,BitStructure as bb,blob as ll,Blob as gb,cstr as wb,f32 as Ab,f32be as kb,f64 as Pb,f64be as hb,greedy as Tb,Layout as ml,ns64 as Ib,ns64be as xb,nu64 as dl,nu64be as Bb,offset as Sb,s16 as Kb,s16be as Cb,s24 as Rb,s24be as Lb,s32 as pl,s32be as Ob,s40 as Nb,s40be as Mb,s48 as _b,s48be as Vb,s8 as Eb,seq as fl,struct as Fb,Structure as yl,u16 as bl,u16be as vb,u24 as Wb,u24be as Db,u32 as gl,u32be as qb,u40 as Ub,u40be as Gb,u48 as Xb,u48be as zb,u8 as wl,UInt as Al,union as Yb,Union as Qb,unionLayoutDiscriminator as jb,utf8 as Hb}from"@solana/buffer-layout";var Dr=ml,Ws=yl;var Di=Al;var Ds=wl,Tt=bl;var qi=gl;var qs=dl;var _e=pl;var Us=fl;var de=ll;var Ui=cl;var $t=class extends Dr{constructor(t,n,i){super(t,i);this.blob=de(t),this.signed=n}decode(t,n=0){let i=new Gs(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 Gs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},qr=class extends Dr{constructor(t){super(8,t);this._lower=Ui(qi(),!1),this._upper=Ui(qi(),!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 Di(1,r)}function We(r){return new Di(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function zs(r){return new $t(1,!0,r)}function Gr(r){return new $t(8,!0,r)}function Ys(r){return new $t(16,!0,r)}var Ur=class extends Dr{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 Ur(de(32),e=>new kl(e),e=>e.toBuffer(),r)}function Ve(r){return new Ur(Ds(),Pl,hl,r)}function Pl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hl(r){return r?1:0}var Gi=class extends Ws{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new Gi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:Xs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Xs(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 Us(r,i,t)}var qt=L([B("mint"),B("owner"),w("amount"),We("delegateOption"),B("delegate"),M("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),B("closeAuthority")]);function Tl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Xi(r,...e){if(!Tl(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 zi(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 Qs(r,e){Xi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var zr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),yt=(r,e)=>r<<32-e|r>>>e;var mg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Il(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Yi(r){return typeof r=="string"&&(r=Il(r)),Xi(r),r}var Xr=class{clone(){return this._cloneInto()}},dg={}.toString;function js(r){let e=n=>r().update(Yi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function xl(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 Hs=(r,e,t)=>r&e^~r&t,Zs=(r,e,t)=>r&e^r&t^e&t,Yr=class extends Xr{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=zr(this.buffer)}update(e){zi(this);let{view:t,buffer:n,blockLen:i}=this;e=Yi(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=zr(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){zi(this),Qs(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;xl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=zr(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 Bl=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]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Qi=class extends Yr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[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)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Gt[m-15],p=Gt[m-2],y=yt(d,7)^yt(d,18)^d>>>3,f=yt(p,17)^yt(p,19)^p>>>10;Gt[m]=f+Gt[m-7]+y+Gt[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+Hs(a,u,c)+Bl[m]+Gt[m]|0,f=(yt(n,2)^yt(n,13)^yt(n,22))+Zs(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(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var $s=js(()=>new Qi);var Cg=se("Raydium_Util");function ea({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:fe(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:Js.default,amount:new Cl(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Kl}){let t=Sl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Rl(r,t,e),seed:t}}function Rl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=$s(n);return new Js(i)}function ji(r){let{mint:e,tokenAccount:t,owner:n,programId:i=fn}=r;return Ll(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=fn}=r;return Ol(e,t,i,n,o)}async function It(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new Vl(a)),c=De({fromPublicKey:i,programId:fn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[_l.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:fn}),ji({mint:new Ml(Re.address),tokenAccount:c.publicKey,owner:o,programId:fn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function vn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=fn}){return Nl(r,e,t,BigInt(String(n)),i,o)}var Wn=class extends Te{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 fe(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:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:El},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ea({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=Xt,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&&(!i||i&&s.equals(u)))return 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 Qr(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new Qr(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=Hi(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)&&yn.decode(P.data).mint.equals(n)&&yn.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 It({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(vn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(Nt({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 It({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=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(yn.span),k=Fl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:yn.span,programId:l});return p.instructions.push(k,ji({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(Nt({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=Xt,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 Hi(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({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=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new Qr(J).equals(o)){let p=await It({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=Hi(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(Xt)&&yn.decode(f.data).mint.equals(o)&&yn.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=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Qr(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=ke(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=ke(m,["tokenAccount"]);u=d,c.addInstruction(p)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as om}from"@solana/spl-token";import{PublicKey as we,SystemProgram as sm}from"@solana/web3.js";import{PublicKey as aa}from"@solana/web3.js";var Zi=L([M("instruction")]),$i=L([M("instruction")]),vl=L([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")]),Wl=L([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Dl=L([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),de(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),ql=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(vl,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),ta=new Proxy(Wl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),na=new Proxy(Dl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(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)}}),Dn=new Proxy(ql,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(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)}}),Ul=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ji=L([M("instruction"),w("nonce"),q(Ul,5,"rewardTimeInfo")]),eo=L([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),to=L([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),aw=L([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),qn=L([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),uw=L([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ra=L([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),ia=L([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=L([M("instruction"),w("amount")]),Gl=L([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),zs("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),oa=L([de(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(Gl,4,"votingMints"),Gr("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),Xl=L([Gr("startTime"),Gr("endTime"),M("kind"),q(M(),15,"reserved")]),zl=L([q(Xl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ve("isUsed"),Ve("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),sa=L([de(8),B("voterAuthority"),B("registrar"),q(zl,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var bw=se("Raydium_farm_config"),ua=new aa("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ca=new aa("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),la={3:ta,5:na,6:Dn},ma={3:qn,5:ra,6:ia},no=r=>[3,5,6].indexOf(r)!==-1,ro=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={[_s.toString()]:3,[Vs.toString()]:5,[_n.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as jl,SYSVAR_CLOCK_PUBKEY as Xn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Hl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as Zl}from"@solana/spl-token";import Hr from"bn.js";function io(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function oo(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function so(r,e){return ie([e.toBuffer()],r)}function ao(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function uo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function co(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Un=se("Raydium.farm.util");function Gn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var da=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function pa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function lo(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function jr(r){let e=ma[r];return e||Un.logWithError("invalid version",r),e}function Yl(r){let e=la[r];return e||Un.logWithError("invalid version",r),e}function Ql(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(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 $e(0)))continue;let o=$e.min(new $e(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 $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function Nw({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let d of e){let p=pe(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:Je({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await Rn(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=Yl(p);(!b||!b.data||b.data.length!==P.span)&&Un.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!==qt.span)&&Un.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=jr(p);b&&b.data&&(b.data.length!==P.span&&Un.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=Ql(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 $e(9)):a.pow(new $e(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=D(N({},c[d].wrapped),{pendingRewards:b})}return c}function Mw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ns(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ms(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 mo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=oa.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=sa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var $l=se("Raydium_farm_instruction"),zn={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 fa(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||$l.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Zi.span);Zi.encode({instruction:s},a);let u=[A({pubkey:t}),A({pubkey:n}),A({pubkey:o,isWritable:!1}),A({pubkey:Jt.programId,isWritable:!1}),A({pubkey:jl,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function ya(r){var n;let e=Buffer.alloc(Ji.span);Ji.encode({instruction:0,nonce:new Hr(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Pi,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:Ce}),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 Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function ba(r){let e=Buffer.alloc($i.span);$i.encode({instruction:5},e);let t=[A({pubkey:nt,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 Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function Jl(r,e,t,n,i,o,s,a,u,c,l,m,d){let p=L([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:nt,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:xr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...zn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function em(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...zn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function tm(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([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:nt,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:xr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let P=Buffer.from([...zn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function nm(r,e,t,n,i,o){let s=L([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:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function rm(r,e,t,n,i,o,s,a){let u=L([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:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...zn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function im(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),We("periods"),Ve("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:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Zl,isSigner:!1,isWritable:!1},{pubkey:He,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([...zn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:p,programId:r,data:f})}async function Zw({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=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=qn.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new Hr(0)))throw Error("user do not has new stake amount");let y=oo(e,a).publicKey,f=so(e,a).publicKey,{publicKey:b,nonce:g}=ao(n,c,s),P=fe(b,y,u).publicKey,{publicKey:k,nonce:T}=uo(n,c,s),h=co(t,i,o,s).publicKey,I=[],S=fe(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(Hl(s,S,s,y)),await r.getAccountInfo(b)===null){let Q=nm(t,i,s,o,s,h);I.push(Q,rm(n,c,b,k,s,s,g,T))}let{index:V,isInit:F}=await mo(r,c,b,y);return F||I.push(im(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(Jl(n,c,b,P,S,s,l,a,y,f,e,V,p),em(n,c,b,k)),I}async function $w({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=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=qn.decode(m.data);if(d.voteLockedBalance.eq(new Hr(0)))throw Error("user has vote locked balance = 0");let p=oo(e,a).publicKey,y=so(e,a).publicKey,{publicKey:f}=ao(n,c,s),b=fe(f,p,u).publicKey,{publicKey:g}=uo(n,c,s),P=co(t,i,o,s).publicKey,k=[],{index:T,isInit:h}=await mo(r,c,f,p);if(!h)throw Error("deposit entry index check error");return k.push(tm(n,c,f,s,P,g,b,fe(s,p,u).publicKey,l,a,p,y,e,T,d.voteLockedBalance)),k}function po({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(eo.span);eo.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[A({pubkey:nt,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 Oe({programId:n.programId,keys:s,data:o})}function fo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(to.span);to.encode({instruction:4,isSet:new Hr(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...Pi,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 Oe({programId:t.programId,keys:s,data:o})}function Jw(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],d=Je({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},p);let y=n===6?[A({pubkey:nt,isWritable:!1}),...c?[A({pubkey:Jt.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new re(t.lpVault)}),A({pubkey:o[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,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 re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new re(t.rewardInfos[f].vault)})),y.push(A({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:p})}function Yn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[A({pubkey:nt,isWritable:!1}),A({pubkey:u}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(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 re(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Oe({programId:a,keys:m,data:l})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new re(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function ga(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({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 re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let d=[A({pubkey:c}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:o,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new re(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new re(t.rewardInfos[0].vault)}),A({pubkey:Xn,isWritable:!1}),A({pubkey:nt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new re(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Oe({programId:u,keys:d,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[A({pubkey:nt,isWritable:!1}),A({pubkey:Jt.programId,isWritable:!1}),A({pubkey:u}),A({pubkey:new re(t.authority),isWritable:!1}),A({pubkey:new re(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 re(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new Oe({programId:a,keys:m,data:l})}var Hn=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:lo(D(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=_n,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new we(e.lpMint.address),lockInfo:{lockMint:ua,lockVault:ca},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Dn.span);u.addInstruction({instructions:[sm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Dn.span,programId:a.programId})]});let{publicKey:d,nonce:p}=da({programId:new we(a.programId),poolId:l.publicKey}),y=Gn({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(pa(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(Ce)?new we(Re.address):T.mint;b.push({rewardMint:S,rewardVault:Gn({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}=ya({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=pe((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(Ce)?new we(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new we(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:Ce,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:[po({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=pe((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(Ce)?new we(Re.address):m.mint,p=a.rewardInfos.findIndex(k=>new we(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:Ce,{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=po({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=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new we(Re.address):i.mint,m=Gn({programId:new we(n.programId),poolId:new we(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:[fo({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=pe((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(Ce)?new we(Re.address):l.mint,d=Gn({programId:new we(n.programId),poolId:new we(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=fo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(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];no(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new we(n.programId),new we(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let k={};for(let W of this.scope.account.tokenAccounts)if(a){let ee=fe(this.scope.ownerPubKey,W.mint,W.programId).publicKey;W.publicKey&&ee.equals(W.publicKey)&&(k[W.mint.toString()]=W.publicKey)}else k[W.mint.toString()]=W.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 W of m){let ee=s&&W.mint.address===J.toString(),te=k[W.mint.address];if(!te){let{account:oe,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:W.mint.programId,mint:new we(W.mint.address),notUseTokenAccount:ee,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!ee,associatedOnly:ee?!1:a,checkCreateATAOwner:u});te=oe,lt&&P.addInstruction(lt)}k[W.mint.address]=te,I.push(te)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=jr(p).decode(x.data)),n.programId!==_n.toString()&&!S){let{instruction:W,instructionType:ee}=fa({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[W],instructionTypes:[ee]})}let O=ro({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(W=>new we(W))},F=p===6?Aa(V):p===5?wa(V):ga(V),Q={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[Q[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];no(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=fe(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=Je({programId:new we(n.programId),poolId:new we(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}),jr(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({tokenProgram:y.lpMint.programId,mint:new we(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:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:O.mint.programId,mint:new we(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=Q,W&&f.addInstruction(W)}b[O.mint.address]=F,T.push(F)}let h=ro({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:k,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new we(O))},S=p===6?Yn(I):p===5?Qn(I):jn(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=pe((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===Ce.toString()?new we(Re.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:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:lo(D(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:[om(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=ba({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=fe(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(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:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new we(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=Q,W&&l.addInstruction(W)}m[T.toString()]=I;let S=[];for(let Q of g){let W=n&&Q.mint.address===J.toString(),ee=m[Q.mint.address];if(!ee){let{account:te,instructionParams:oe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new we(Q.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:o,checkCreateATAOwner:s});ee=te,oe&&l.addInstruction(oe)}m[Q.mint.address]=ee,S.push(ee)}let x=p[P],O={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new we(Q))},V=k===6?Yn(O):k===5?Qn(O):jn(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 et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ri}from"@solana/spl-token";var hA=L([We("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),We("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as am}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";var RA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new am(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},LA=({mint:r,decimals:e,programId:t=um,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}},Zr=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),OA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=ke(o,["amount","isRaw","name"]);return new Ae(new he({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function NA(r){return r.address===Pt.address?Re:r}function MA(r){return r.address===Re.address?Pt:r}import{TOKEN_PROGRAM_ID as Zn,ASSOCIATED_TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as ye,TransactionInstruction as Mt,SystemProgram as Po,SYSVAR_RENT_PUBKEY as Im}from"@solana/web3.js";var yo=L([M("instruction"),w("amountIn"),w("minAmountOut")]),bo=L([M("instruction"),w("maxAmountIn"),w("amountOut")]),zA=L([M("instruction"),M("nonce")]),go=L([M("instruction"),M("nonce"),w("startTime")]),cm=L([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")]),lm=L([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")]),wo=L([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Ao=L([M("instruction"),w("amountIn")]),YA={4:cm,5:lm},Pa=L([w("fee")]);import{PublicKey as mm}from"@solana/web3.js";var gn=new mm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,dm=L([w("x"),w("y"),w("price")]),pm=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(dm,tn,"DataElement")]);function fm(r,e){return[0,tn-2]}function ym(r){return[0,tn-2]}function bm(r){return[0,tn-2]}function gm(r,e,t){let[n,i]=fm(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>=tn-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 ko(r,e,t){let[n,i,o]=gm(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 en(r,e,t){return e*r.multiplier/t}function ha(r,e,t){return e*t/r.multiplier}function wm(r,e){let[t,n]=ym(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-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 Am(r,e){let[t,n]=bm(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-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 Ta(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=wm(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 km(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Am(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 Pm(r,e){let t=Ta(r,e,0,!1);return t[3]?t[0]:0}function Ia(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,d]=Ta(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return ha(r,p,i)}}function xa(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,d]=km(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return ha(r,p,i)}}function hm(r){let e=pm.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 Ba(r,e,t,n){let i=Pm(r,en(r,e,ko(r,e,t)))/r.multiplier;return n?i:1/i}var bn=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(gn);e&&(this._layoutData=hm(e==null?void 0:e.data))}}};var Sa=se("Raydium_liquidity_instruction");function Ka(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(wo.span);wo.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:Ps},a);let u=[A({pubkey:Zn,isWritable:!1}),A({pubkey:new ye(e.id)}),A({pubkey:new ye(t.authority),isWritable:!1}),A({pubkey:new ye(t.openOrders),isWritable:!1}),A({pubkey:new ye(t.targetOrders)}),A({pubkey:new ye(e.lpMint.address)}),A({pubkey:new ye(t.vault.A)}),A({pubkey:new ye(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(A({pubkey:gn})),u.push(A({pubkey:new ye(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 ye(t.marketEventQueue),isWritable:!1})),new Mt({programId:new ye(e.programId),keys:u,data:a})}function ho(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=pe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Ao.span);Ao.encode({instruction:4,amountIn:X(i)},a);let u=[A({pubkey:Zn,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:gn})):(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 Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function Ca({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=L([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:Zn,isSigner:!1,isWritable:!1},{pubkey:Tm,isSigner:!1,isWritable:!1},{pubkey:Po.programId,isSigner:!1,isWritable:!1},{pubkey:He,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 Mt({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function ck(r){let e=L([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ye(r.id),isWritable:!1}),A({pubkey:new ye(r.authority),isWritable:!1}),A({pubkey:new ye(r.openOrders),isWritable:!1}),A({pubkey:new ye(r.vault.A),isWritable:!1}),A({pubkey:new ye(r.vault.B),isWritable:!1}),A({pubkey:new ye(r.mintLp.address),isWritable:!1}),A({pubkey:new ye(r.marketId),isWritable:!1}),A({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new ye(r.programId),keys:n,data:t})}function xm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=pe(r),s=Buffer.alloc(yo.span);yo.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[A({pubkey:Zn,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:gn})),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 Mt({programId:o.programId,keys:a,data:s})}function Bm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=pe(r),s=Buffer.alloc(bo.span);bo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[A({pubkey:Po.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:gn})),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 Mt({programId:o.programId,keys:a,data:s})}function $r(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 xm(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Bm(D(N({},a),{maxAmountIn:i,amountOut:o}),t);Sa.logWithError("invalid params","params",r)}throw Sa.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function lk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(go.span);go.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=pe(r),o=[A({pubkey:Zn,isWritable:!1}),A({pubkey:Po.programId,isWritable:!1}),A({pubkey:Im,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 Mt({programId:i.programId,keys:o,data:n})}function Ra({poolKeys:r}){let e=L([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ye(r.id),isWritable:!1}),A({pubkey:new ye(r.authority),isWritable:!1}),A({pubkey:new ye(r.openOrders),isWritable:!1}),A({pubkey:new ye(r.vault.A),isWritable:!1}),A({pubkey:new ye(r.vault.B),isWritable:!1}),A({pubkey:new ye(r.mintLp.address),isWritable:!1}),A({pubkey:new ye(r.marketId),isWritable:!1}),A({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new ye(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ee,TOKEN_2022_PROGRAM_ID as Qt,ASSOCIATED_TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as gt,SystemProgram as wn,Keypair as Ro}from"@solana/web3.js";import ja from"bn.js";import Em from"bn.js";function La(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function dk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function pk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function Jr(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function To(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Io(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function $n(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Oa(r,e){return $n(r,e)?null:To(r,e)}function Na(r,e){return $n(r,e)?null:Io(r,e)}var Sm=Buffer.from("amm_config","utf8"),Km=Buffer.from("pool","utf8"),Cm=Buffer.from("pool_vault","utf8"),Rm=Buffer.from("pool_reward_vault","utf8"),Ma=Buffer.from("position","utf8"),Lm=Buffer.from("tick_array","utf8"),Om=Buffer.from("operation","utf8"),Nm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function gk(r,e){return ie([Sm,La(e)],r)}function _a(r,e,t,n){return ie([Km,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function xo(r,e,t){return ie([Cm,e.toBuffer(),t.toBuffer()],r)}function Va(r,e,t){return ie([Rm,e.toBuffer(),t.toBuffer()],r)}function be(r,e,t){return ie([Lm,e.toBuffer(),Jr(t)],r)}function nn(r,e,t,n){return ie([Ma,e.toBuffer(),Jr(t),Jr(n)],r)}function xt(r,e){return ie([Ma,e.toBuffer()],r)}function ei(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function Jn(r){return ie([Om],r)}function st(r,e){return ie([Nm,e.toBuffer()],r)}import Bt from"bn.js";var me=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ti=new Bt(1).shln(128),Bo=it.sub(rt),er=64,Ea=ti.subn(1),qe=-443636,Qe=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Fa=16,va="59543866431248",Wa="184467440737095516",Da="15793534762490258745",ni=new Bt(10).pow(new Bt(6)),Mm=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Mm||{}),kk={[500]:10,[3e3]:60,[1e4]:200},Pk={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},qa={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:[]},hk=new Bt("18446744073700000000");var _m=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_m/2));for(let p=0;p<l.length;p++){let{publicKey:y}=be(t,n,l[p]);u.push(y)}let m=(await ht(e,u)).map(p=>p!==null?tr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(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=U.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/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.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=Le-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<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=be(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.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<Le;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=be(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(U.checkIsOutOfBoundary(e)){if(e>Qe)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Be from"bn.js";var So=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}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(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,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=Oa(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=Na(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},nr=class{static getBitmapOffset(e,t){if(!ce.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(Qe<=t)throw Error(`extensionTickBoundary check error: ${Qe}, ${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:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.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=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=$n(512,u)?null:To(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=$n(512,u)?null:Io(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var rr=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(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 Ct(0),a=new Ct(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,it),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),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,it),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),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,it),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,it),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 Ct(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 Ct(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 Ct(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 Ct(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=ue.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[xe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),xe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[xe(new Ct(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),xe(new Ct(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:Zt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Ua}from"@solana/spl-token";var Ue=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}=on.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(_t),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}=be(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?nr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=be(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=be(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/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.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=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=nr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Qe)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=D(N({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Yt(d)});if(p.tokenMint.equals(Yt.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){s.push(p);continue}let y=new Be(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,it),k=p.rewardTotalEmissioned.add(P);s.push(D(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=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ce.getArrayStartIndex(Qe,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Rn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.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=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=be(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Rn(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=tr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(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(xt(p,d).publicKey);let l=await ht(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Xa.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=U._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:T}=ue.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=>D(N({},x),{pendingReward:new Be(0)})),leverage:h,tokenFeeAmountA:new Be(0),tokenFeeAmountB:new Be(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await U.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]=tr.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[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await rr.GetPositionFees(f,g,I,S),V=await rr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Be(0))?x:new Be(0),g.tokenFeeAmountB=O.gte(new Be(0))?O:new Be(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Be(0))?V[F]:new Be(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?St.add(new Be(1)):Kt.sub(new Be(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=xe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:me),u),g=xe(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 Be(Math.floor((1-s)*1e10))).div(new Be(1e10)),h=xe(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 tt(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:h,expirationTime:Zt(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 he(D(N({},u),{mint:u.address,isToken2022:u.programId===Ua.toBase58()})),new he(D(N({},c),{mint:c.address,isToken2022:c.programId===Ua.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:k,remainingAccounts:T}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),h=D(N({},d),{amount:new Ae(l,d.amount),fee:d.fee===void 0?void 0:new Ae(l,d.fee)}),I=D(N({},p),{amount:new Ae(m,p.amount),fee:p.fee===void 0?void 0:new Ae(m,p.fee)}),S=D(N({},y),{amount:new Ae(m,y.amount),fee:y.fee===void 0?void 0:new Ae(m,y.fee)}),x=new ot({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new ot({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new Ae(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=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.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[xi(e.mintA.address).toString()],d=i[xi(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}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ue.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,Q=e.rewardDefaultInfos.map(W=>{var oe,lt;let ee=W.mint.decimals,te=i[W.mint.address];return u<((oe=W.startTime)!=null?oe:0)||u>((lt=W.endTime)!=null?lt:0)||!W.perSecond||!te||ee===void 0?0:new E(te.value).mul(new E(W.perSecond).mul(F)).div(new E(10).pow(ee)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:Q,apr:V+Q.reduce((W,ee)=>W+ee,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=xe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Be(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,d,f,!a):new Be(0);else if(l.lte(d)){let k=ue.getLiquidityFromTokenAmountA(l,d,f,!a),T=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?k:T}else b=t?new Be(0):ue.getLiquidityFromTokenAmountB(m,d,f);return Ue.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=ue.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[xe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),xe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[xe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),xe(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:Zt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=Ga.decode(i.data),s=st(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function aP({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]=[xe(m,(k=r.mintA.extensions)==null?void 0:k.feeConfig,a,!u),xe(d,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ue.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(rt)),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(rt)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ti).sub(t).mod(ti)}};function Ne(r,e){return Ko(r.mul(e),64,256)}function Vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ko(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(er);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,rt,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(er);if(i)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,rt,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>Qe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=Ea.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=Vm(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Fa;){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 ne(va)),d=Ko(m.sub(new ne(Wa)),64,128).toNumber(),p=Ko(m.add(new ne(Da)),64,128).toNumber();return d==p?d:H.getSqrtPriceX64FromTick(p).lte(e)?p:d}},sn=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=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ue=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(er),s=t.sub(e);return i?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),rt,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),it):Z.mulDivFloor(n,t.sub(e),it)}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,rt,Bo):a.shrn(er)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Bo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new E(u.toString()).mul(l).toFixed(0)),d=new ne(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=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[xe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),xe(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)],[b,g]=[xe(new ne(new E(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),xe(new ne(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:Zt(y.expirationTime,f.expirationTime)}}},on=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?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))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(Kt))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+ce.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(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=U.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=Ue.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}=be(e,t,g);x=F,P=n[g],S=U.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>Qe&&(h.tickNext=Qe),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]=on.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(_t)),b.liquidity=ue.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}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&p!==h&&(b.accounts.push(be(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 ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(me);if(u){let l=Z.mulDivFloor(i,ni.sub(new ne(o.toString())),ni);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),ni.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=be(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.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)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,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*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Em(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*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=be(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=>U.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=ce.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=>U.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=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>Qe}static nextInitTick(e,t,n,i,o){if(ce.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<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){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=sn.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=sn.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 LP=L([de(8),M("bump"),Tt("index"),B(""),We("protocolFeeRate"),We("tradeFeeRate"),Tt("tickSpacing"),q(w(),8,"")]),Fm=L([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Co=L([de(8),Ve("initialized"),B("poolId"),q(Fm,1e3,"observations"),q(z(),5,"")]),vm=L([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),Ga=L([de(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),Tt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),_e("tickCurrent"),Tt("observationIndex"),Tt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(vm,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")]),Wm=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),Xa=L([de(8),M("bump"),B("nftMint"),B("poolId"),_e("tickLower"),_e("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Wm,3,"rewardInfos"),q(w(),8,"")]),OP=L([de(8),M("bump"),B("poolId"),_e("tickLowerIndex"),_e("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Dm=L([_e("tick"),Ys("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),tr=L([de(8),B("poolId"),_e("startTickIndex"),q(Dm,Le,"ticks"),M("initializedTickCount"),q(M(),115,"")]),Ya=L([de(329),q(B(),100,"whitelistMints")]),za=L([de(8),B("poolId"),q(q(w(),8),So,"positiveTickArrayBitmap"),q(q(w(),8),So,"negativeTickArrayBitmap")]);var Ha=se("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]},Ie=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([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:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,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=De({fromPublicKey:i,programId:n}),[d,p]=[new v(o.address),new v(s.address)],y=[wn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Co.span),space:Co.span,programId:n})],{publicKey:f}=_a(n,a,d,p),{publicKey:b}=xo(n,f,d),{publicKey:g}=xo(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new v(o.programId||Ee),p,g,new v(s.programId||Ee),st(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=L([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),Q=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],W=[{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:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],ee=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},ee);let te=Buffer.from([...wt.openPosition,...ee]);return new gt({keys:W,programId:e,data:te})}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=Ro.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,p,f),{publicKey:P}=be(d,p,b),{publicKey:k}=fe(n.wallet,y,Ee),{publicKey:T}=ei(y),{publicKey:h}=xt(d,y),{publicKey:I}=nn(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=Ro.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,p,f),{publicKey:P}=be(d,p,b),{publicKey:k}=fe(n.wallet,y,Ee),{publicKey:T}=ei(y),{publicKey:h}=xt(d,y),{publicKey:I}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?st(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=L([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),Q=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],W=[{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:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],ee=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new ja(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},ee);let te=Buffer.from([...wt.openPosition,...ee]);return new gt({keys:W,programId:e,data:te})}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=Ro.generate();d.push(x),m=x.publicKey}let[p,y]=[new v(e.programId),new v(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,y,f),{publicKey:P}=be(p,y,b),{publicKey:k}=fe(n.wallet,m,Ee),{publicKey:T}=ei(m),{publicKey:h}=xt(p,m),{publicKey:I}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?st(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=L([]),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:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,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}=fe(n.wallet,i.nftMint,Ee),{publicKey:a}=xt(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=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(u,c,l),{publicKey:p}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(u,c,l),{publicKey:p}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(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=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,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 ja(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=L([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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(c,l,m),{publicKey:y}=be(c,l,d),{publicKey:f}=fe(i.wallet,n.nftMint,u),{publicKey:b}=xt(c,n.nftMint),{publicKey:g}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?st(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=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ve("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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,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,st(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=L([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:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:X(l),endTime:X(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=Va(o,s,i.mint).publicKey,u=Jn(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=L([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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,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:X(l),endTime:X(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)&&Ha.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Jn(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=L([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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,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)&&Ha.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 Xm}from"@solana/web3.js";import{PublicKey as Um}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),qm={4:3,5:3};var Gm=se("Raydium_liquidity_serum");function eu({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=Um.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Gm.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 ir from"bn.js";function Oo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function zm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ym({programId:r}){return ie([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=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ym({programId:a}),p=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=zm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=eu({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:Xm.default,configId:Oo({programId:a})}}var Lo;async function uh({connection:r,poolKeysList:e,config:t}){Lo||(Lo=new bn({connection:r}),await Lo.initStableModelLayout());let n=e.map(s=>Ra({poolKeys:s}));return(await Cs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Rs(s,"GetPoolData"),u=new ir(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),d=new ir(Ot(a,"pool_coin_amount")),p=new ir(Ot(a,"pool_pc_amount")),y=new ir(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new ir(f)}})}import Ge from"bn.js";var or=class extends Te{constructor(t){super(t);this.stableLayout=new bn({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 Ge(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Zr(t[o?"mintB":"mintA"]),[u,c]=[new Ge(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ge(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ge(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=ze;s.isZero()||(d=m==="base"?Cr(s.mul(c),u):Cr(s.mul(u),c));let p=Cr(s.mul(l),new Ge(m==="base"?t.mintAmountA:t.mintAmountB).mul(new Ge(10).pow(new Ge(t[m==="base"?"mintA":"mintB"].decimals)))),f=new tt(new Ge(1)).add(i).mul(d).quotient,b=new Ae(a,d),g=new Ae(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 et(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,Q]=T,W=await this.getAmmPoolKeys(n.id),ee=this.createTxBuilder(),Et=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:te}=Et,oe=ke(Et,["tokenAccount"]);ee.addInstruction(oe);let br=await l.handleTokenAccount({side:"in",amount:Q,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:lt}=br,hn=ke(br,["tokenAccount"]);ee.addInstruction(hn);let Tn=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:di}=Tn,pi=ke(Tn,["tokenAccount"]);return ee.addInstruction(pi),ee.addInstruction({instructions:[Ka({poolInfo:n,poolKeys:W,userKeys:{baseTokenAccount:te,quoteTokenAccount:lt,lpTokenAccount:di,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:Q,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),ee.addCustomComputeBudget(c),u===0&&await ee.buildV0(),ee.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 et(n.mintA.address),new et(n.mintB.address),new et(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=ke(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=ke(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[ho({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=ri,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 te of this.scope.account.tokenAccountRawInfos)(b[te.accountInfo.mint.toString()]===void 0||fe(this.scope.ownerPubKey,te.accountInfo.mint,ri).publicKey.equals(te.pubkey))&&(b[te.accountInfo.mint.toString()]=te.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 Ge(0)),k=t.mintA.address===he.WSOL.mint.toString(),T=t.mintB.address===he.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ri,mint:new et(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:ri,mint:new et(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 te=[];for(let Et of s.rewardInfos){let br=Et.mint.address===he.WSOL.mint.toString();if(b[Et.mint.address])te.push(b[Et.mint.address]);else{let{account:Tn,instructionParams:Qo}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!br,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});Tn||this.logAndCreateError("farm reward account not found:",Et.mint.address),Qo&&f.addInstruction(Qo),te.push(Tn)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],lt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:te},hn=bt[s.programId],di=hn===6?Yn(lt):hn===5?Qn(lt):jn(lt),pi={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[di],instructionTypes:[pi[hn]]})}let O=await this.getAmmPoolKeys(t.id),V=ho({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,Q]=t.mintA.address===n.mintA.address?[h,S]:[S,h],W=await this.scope.clmm.getClmmPoolKeys(t.id),ee=await Ie.openPositionFromBaseInstructions(D(N({poolInfo:n,poolKeys:W,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...ee.instructions],signers:ee.signers,instructionTypes:[...ee.instructionTypes],lookupTableAddress:W.lookupTableAccount?[W.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 Q;let b=c.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),g=c.useSOLBalance&&i.mint.equals(nu),P=c.useSOLBalance&&o.mint.equals(nu),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}=Ca(D(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:fe(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=Oo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Pa.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===Es.toBase58(),y;if(p)y=new E(d.toString()).div(m.toString());else{let x=Ba(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 Ge(0),g=new Ge(0);if(!f.isZero())if(p){g=Fn(f.mul($a),Ja);let x=f.sub(g),O=m.add(x);b=d.mul(x).div(O)}else{g=f.mul(new Ge(2)).div(new Ge(1e4));let x=f.sub(g);l==="quote"?b=new Ge(Ia(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new Ge(xa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new Ge(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 et(l.address),programId:new et(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=ke(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=ke(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),c.addInstruction({instructions:[$r({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 ae}from"@solana/web3.js";import At from"bn.js";var sr=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ae.default,mint1: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 ae(i.address).toBuffer()).gt(new At(new ae(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ie.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:D(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:[]}},qa),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 ae(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 ae(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 Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:D(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 ae(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 ae(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),x=await Ie.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 ae(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({tokenProgram:t.mintB.programId,mint:new ae(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=Ie.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 ae(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({tokenProgram:t.mintB.programId,mint:new ae(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=Ie.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 ae(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,P&&d.addInstruction(P);let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});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:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(O.mint.programId),mint:new ae(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=Q,W&&d.addInstruction(W)}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 Ie.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 Ie.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=Ie.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 ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new 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=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64: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 ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new 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=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ae(l.mint.programId),mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64: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=Ie.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 ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new 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=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64: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 ae(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=Ie.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 ae(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1: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=Ie.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?St.add(new At(1)):Kt.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 ae(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 ae(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(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ae(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?fe(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 ae(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 ae(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 ae(k.mint.programId),mint:new ae(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=Ie.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(Jn(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(ae.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as oi,TOKEN_PROGRAM_ID as jt,AccountLayout as pu}from"@solana/spl-token";var Qm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),jm=Buffer.from("amm_config","utf8"),Hm=Buffer.from("pool","utf8"),Zm=Buffer.from("pool_lp_mint","utf8"),$m=Buffer.from("pool_vault","utf8"),Jm=Buffer.from("observation","utf8");function ed(r){return ie([Qm],r)}function td(r,e){return ie([jm,id(e)],r)}function nd(r,e,t,n){return ie([Hm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function rd(r,e){return ie([Zm,e.toBuffer()],r)}function ru(r,e,t){return ie([$m,e.toBuffer(),t.toBuffer()],r)}function ii(r,e){return ie([Jm,e.toBuffer()],r)}function id(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=td(r,0).publicKey,i=ed(r).publicKey,o=nd(r,n,e,t).publicKey,s=rd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ii(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ar}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No,TOKEN_2022_PROGRAM_ID as ou,ASSOCIATED_TOKEN_PROGRAM_ID as od}from"@solana/spl-token";var sd=se("Raydium_Cpmm_ins"),ur={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 su(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,b,g,P,k){let T=L([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:No,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:od,isSigner:!1,isWritable:!1},{pubkey:gs,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:k},I),new ar({keys:h,programId:r,data:Buffer.from([...ur.initialize,...I])})}function au(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([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:No,isSigner:!1,isWritable:!1},{pubkey:ou,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 sd.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.deposit,...g])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=L([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:No,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:bs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.withdraw,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=L([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 ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseInput,...P])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,d,p,y,f){let b=L([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 ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseOutput,...P])})}import at from"bn.js";var mu=L([de(8),M("bump"),Ve("disableCreatePool"),Tt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),du=L([de(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 cr=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=du.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=mu.decode(u.data))}return D(N({},i),{baseReserve:new at(pu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new at(pu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}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=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,W,ee;let d=i.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),p=new at(new Y(c.mintA.address).toBuffer()).lte(new at(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===oi.toBase58(),k=i.useSOLBalance&&f.address===oi.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=iu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[su(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,fe(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((W=y.programId)!=null?W:jt),new Y((ee=f.programId)!=null?ee:jt),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(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:D(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===oi.toString(),g=t.mintB.address===oi.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)}),W=await c.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:O,bypassAssociatedCheck:l,checkCreateATAOwner:m}),{tokenAccount:V}=W,F=ke(W,["tokenAccount"]);P.addInstruction(F);let Q=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[au(new Y(t.programId),this.scope.ownerPubKey,new Y(Q.authority),new Y(t.id),V,h,S,new Y(Q.vault.A),new Y(Q.vault.B),k,T,new Y(t.lpMint.address),p,i?n:f,i?f:n)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:Q.lookupTableAccount?[Q.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 tt(new at(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:[uu(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:jt),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:jt),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=ke(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=ke(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?cu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.config.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:jt),new Y((O=t.mintB.programId)!=null?O:jt),m,d,ii(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):lu(new Y(t.programId),this.scope.ownerPubKey,new Y(k.authority),new Y(k.config.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:jt),new Y((F=t.mintA.programId)!=null?F:jt),d,m,ii(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 at(new E(t).mul(10**e[i?"mintA":"mintB"].decimals).toFixed(0)),s=Zr(e[i?"mintB":"mintA"]),[a,u]=[new at(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new at(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],c=new at(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=ze;o.isZero()||(d=ad(m,a,u,c)[i?"amountB":"amountA"]);let y=new tt(new at(1)).add(n).mul(d).quotient,f=new Ae(s,d),b=new Ae(s,y);return this.logDebug("anotherAmount:",f.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:f,maxAnotherAmount:b,liquidity:m}}};function ad(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new at(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new at(1))),{amountA:i,amountB:o}}var lr=class extends Te{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(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-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 It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),vn({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 It({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:[vn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as cd,Transaction as Mo,TransactionInstruction as ld}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Te{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(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=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.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!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(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:Xe.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(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Xe.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(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Xe.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 Nr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Mo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Mo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Mo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),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:ud,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 ld({keys:o,programId:e,data:a})}},ut=Xe;ut.CLAIMED_NUM=3,ut.POOL_LAYOUT=L([de(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(L([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),ut.OWNER_LAYOUT=L([de(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(L([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),ut.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cd(e)),ut.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ut.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import mr from"bn.js";import{TransactionInstruction as dd,SYSVAR_RENT_PUBKEY as pd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function md(r="accountFlags"){let e=new qr(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 _o=L([de(5),md("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"),de(7)]);function fd({programId:r,marketInfo:e}){let t=L([M("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),Tt("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:pd,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 dd({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(_o.span),space:_o.span,programId:t.programId}),un.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}),un.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}),un.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}),un.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}),fd({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 An=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new mr(100);function P(){let V=new mr(0);for(;;)try{return{vaultOwner:Vo.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new mr(25555)))throw Error("find vault owner error")}}let{vaultOwner:k,vaultSignerNonce:T}=P(),h=new mr(Math.round(10**e.decimals*n)),I=new mr(Math.round(n*10**t.decimals*i));if(h.eq(ze))throw Error("lot size is too small");if(I.eq(ze))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 Q=await F.versionBuild({txVersion:s});O.push(Q)}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 Vo(e.mint),quoteMin:new Vo(t.mint)}},txVersion:s})}};import{PublicKey as pr}from"@solana/web3.js";import{PublicKey as yd,TransactionInstruction as Fo,SYSVAR_CLOCK_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";var Eo=L([M("instruction"),qs("amount")]),dr=L([M("instruction")]);function HI({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new yd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:vo,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Ii,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(Eo.span);return Eo.encode({instruction:1,amount:Number(e)},i),new Fo({keys:n,programId:r,data:i})}function si({programId:r},e){let t=[{pubkey:vo,isSigner:!1,isWritable:!1},{pubkey:Ii,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(dr.span);return dr.encode({instruction:2},n),new Fo({keys:t,programId:r,data:n})}function Wo(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(dr.span);dr.encode({instruction:2},s);let a=[{pubkey:vo,isWritable:!1,isSigner:!1},{pubkey:bd,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 Fo({programId:e.programId,keys:a,data:s})}import ku from"bn.js";var gd={[Vn.IDO_PROGRAM_ID_V1.toString()]:1,[Vn.IDO_PROGRAM_ID_V2.toString()]:2,[Vn.IDO_PROGRAM_ID_V3.toString()]:3,[Vn.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=gd[t.programId];a||this.logAndCreateError("invalid version",a);let u=pe(t),[c,l]=[!new ku(e.coin).isZero(),!new ku(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?[si({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[si({programId:new pr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[si({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new pr(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 pr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Wo(D(N({},g),{side:"base"}))]:[],...l?[Wo(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as wd}from"@solana/web3.js";import{MintLayout as Ad,TOKEN_2022_PROGRAM_ID as Do,TOKEN_PROGRAM_ID as qo}from"@solana/spl-token";var fr=class extends Te{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,D(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,D(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?Do.toBase58():qo.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,D(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?Do.toBase58():qo.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,D(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Do.toBase58():qo.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,D(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new wd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ad.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 ai=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 pt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=se("Raydium"),this.farm=new Hn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Wn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new or({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new fr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new lr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new sr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new cr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new ut({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new An({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({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=kd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new vr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new ai(D(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(Wr);return this._owner.publicKey}setOwner(e){return this._owner=e?new pt(e):void 0,this}get connection(){if(!this._connection)throw new Error(vs);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(Wr),new Error(Wr)}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=D(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 Xo,TOKEN_2022_PROGRAM_ID as Uo}from"@solana/spl-token";import{PublicKey as ct,TransactionInstruction as zo,SystemProgram as hu}from"@solana/web3.js";import Go from"bn.js";function nB(r,e,t,n,i,o,s,a,u,c,l,m){let d=L([M("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1},{pubkey:new ct(t.programId),isSigner:!1,isWritable:!1},{pubkey:new ct(t.id),isSigner:!1,isWritable:!0},{pubkey:new ct(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=pe(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=pe(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 ct("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=pe(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 zo({keys:p,programId:r,data:y})}function rB(r,e,t,n,i,o,s,a,u,c){let l=L([M("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new ct(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=pe(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=pe(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 ct("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=pe(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 zo({keys:m,programId:r,data:d})}function Pu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=pe(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 ct("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=pe(e),u=s.mintA.address===t;return[{pubkey:new ct(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(Uo)||a.mintB.programId.equals(Uo)?[{pubkey:Uo,isSigner:!1,isWritable:!1},{pubkey:mn,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:st(new ct(String(r.programId)),new ct(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=pe(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 Pd(r,e,t,n,i,o,s,a,u,c,l,m,d,p){let y=L([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Xo,isSigner:!1,isWritable:!1}];f.push(...Pu(a,c,o,t,n,p[0])),f.push(...Pu(u,l,s,n,i,p[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},b),new zo({keys:f,programId:r,data:b})}async function iB({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=pe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await Ie.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 Go(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[$r({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 Go(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:[Pd(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 Go(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[d.lookupTableAccount,p.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var Yo=new Iu(1e6);function hd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var ui=class{static tradingFee(e,t){return hd(e,t,Yo)}static protocolFee(e,t){return Tu(e,t,Yo)}static fundFee(e,t){return Tu(e,t,Yo)}};import yr from"bn.js";function ci(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Td(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=ci(r,e);if(n.gt(Pn)){t=t.add(new yr(1));let i=r.div(t);n=ci(r,t),n.gt(Pn)&&(i=i.add(new yr(1)))}return[t,e]}var Pn=new yr(0),li=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Td(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 ci(e.mul(n),t).gt(Pn)&&s.gt(Pn)&&(s=s.add(new yr(1))),ci(e.mul(i),t).gt(Pn)&&a.gt(Pn)&&(a=a.add(new yr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=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=ui.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=li.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[Ei.toBase58()]:3},Ku={3:Ei};var Id=L([de(5),de(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"),de(7)]),Cu={3:Id};import{PublicKey as Ru}from"@solana/web3.js";var mi=se("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||mi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||mi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||mi.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=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return mi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var $B=r=>r;export{Sm as AMM_CONFIG_SEED,LP as AmmConfigLayout,Fa as BIT_PRECISION,sr as Clmm,Ie as ClmmInstrument,li as ConstantProductCurve,mu as CpmmConfigInfoLayout,ui as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,dm as DataElement,So as EXTENSION_TICKARRAY_BITMAP_SIZE,ua as FARM_LOCK_MINT,ca as FARM_LOCK_VAULT,bt as FARM_PROGRAM_TO_VERSION,ma as FARM_VERSION_TO_LEDGER_LAYOUT,la as FARM_VERSION_TO_STATE_LAYOUT,ni as FEE_RATE_DENOMINATOR,Yo as FEE_RATE_DENOMINATOR_VALUE,_m as FETCH_TICKARRAY_COUNT,Mm as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,qm as LIQUIDITY_VERSION_TO_SERUM_VERSION,YA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,va as LOG_B_2_X32,Wa as LOG_B_P_ERR_MARGIN_LOWER_X64,Da as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,_o as MARKET_STATE_LAYOUT_V2,Id as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,Qe as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,gn as MODEL_DATA_PUBKEY,Lu as Market,Z as MathUtil,Bo as MaxU64,Ea as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,Om as OPERATION_SEED,Co as ObservationInfoLayout,Fm as ObservationLayout,Ya as OperationLayout,Rm as POOL_REWARD_VAULT_SEED,Km as POOL_SEED,Nm as POOL_TICK_ARRAY_BITMAP_SEED,Cm as POOL_VAULT_SEED,Ma as POSITION_SEED,Ga as PoolInfoLayout,Ue as PoolUtils,Xa as PositionInfoLayout,Wm as PositionRewardInfoLayout,rr as PositionUtils,OP as ProtocolPositionLayout,ti as Q128,it as Q64,ai as Raydium,vm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,Pt as SOL_INFO,hA as SPL_MINT_LAYOUT,H as SqrtPriceMath,bn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Lm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,kk as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,nr as TickArrayBitmapExtensionUtils,tr as TickArrayLayout,Dm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,er as U64Resolution,hk as U64_IGNORE_RANGE,sa as Voter,zl as VoterDepositEntry,Xl as VoterLockup,oa as VoterRegistrar,Gl as VoterVotingMintConfig,me as ZERO,wo as addLiquidityLayout,Zi as associatedLedgerAccountLayout,lo as calFarmRewardAmount,hd as ceilDiv,dr as claimLayout,Nt as closeAccountInstruction,fa as createAssociatedLedgerAccountInstruction,Pa as createPoolFeeLayout,Ca as createPoolV4InstructionV2,zA as createPoolV4Layout,It as createWSolAccountInstructions,Ye as dwLayout,to as farmAddRewardLayout,aw as farmLedgerLayoutV3_1,qn as farmLedgerLayoutV3_2,uw as farmLedgerLayoutV5_1,ra as farmLedgerLayoutV5_2,ia as farmLedgerLayoutV6_1,pa as farmRewardInfoToConfig,Ji as farmRewardLayout,eo as farmRewardRestartLayout,Ul as farmRewardTimeInfoLayout,ta as farmStateV3Layout,na as farmStateV5Layout,Dn as farmStateV6Layout,Nw as fetchMultipleFarmInfoAndUpdate,uh as fetchMultipleInfo,yo as fixedSwapInLayout,bo as fixedSwapOutLayout,Tu as floorDiv,hm as formatLayout,De as generatePubKey,da as getAssociatedAuthority,Oo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Gn as getAssociatedLedgerPoolAccount,zm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,td as getCpmmPdaAmmConfigId,nd as getCpmmPdaPoolId,iu as getCreatePoolKeys,mo as getDepositEntryIndex,xa as getDxByDyBaseIn,Ia as getDyByDxBaseIn,jr as getFarmLedgerLayout,Yl as getFarmStateLayout,Ym as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,aP as getLiquidityFromAmounts,gk as getPdaAmmConfigId,st as getPdaExBitmapAccount,rd as getPdaLpMint,ei as getPdaMetadataKey,ii as getPdaObservationId,Jn as getPdaOperationAccount,xt as getPdaPersonalPositionAddress,ed as getPdaPoolAuthority,_a as getPdaPoolId,Va as getPdaPoolRewardVaulId,xo as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,be as getPdaTickArrayAddress,ru as getPdaVault,io as getRegistrarAddress,Ba as getStablePrice,co as getTokenOwnerRecordAddress,ao as getVoterAddress,uo as getVoterWeightRecordAddress,so as getVotingMintAuthority,oo as getVotingTokenMint,nm as governanceCreateTokenOwnerRecord,dk as i16ToBytes,Jr as i32ToBytes,go as initPoolLayout,ji as initTokenAccountInstruction,fd as initializeMarket,no as isValidFarmVersion,$n as isZero,Mw as judgeFarmType,To as leadingZeros,Na as leastSignificantBit,cm as liquidityStateV4Layout,lm as liquidityStateV5Layout,$r as makeAMMSwapInstruction,Ka as makeAddLiquidityInstruction,fo as makeAddNewRewardInstruction,si as makeClaimInstruction,Wo as makeClaimInstructionV4,su as makeCreateCpmmPoolInInstruction,ya as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ba as makeCreatorWithdrawFarmRewardInstruction,au as makeDepositCpmmInInstruction,ga as makeDepositInstructionV3,wa as makeDepositInstructionV5,Aa as makeDepositInstructionV6,Zw as makeDepositTokenInstruction,Jw as makeDepositWithdrawInstruction,lk as makeInitPoolInstructionV4,HI as makePurchaseInstruction,po as makeRestartRewardInstruction,Ra as makeSimulatePoolInfoInstruction,cu as makeSwapCpmmBaseInInInstruction,lu as makeSwapCpmmBaseOutInInstruction,xm as makeSwapFixedInInstruction,Bm as makeSwapFixedOutInstruction,iB as makeSwapInstruction,vn as makeTransferInstruction,uu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Qn as makeWithdrawInstructionV5,Yn as makeWithdrawInstructionV6,$w as makeWithdrawTokenInstruction,Pk as mockCreatePoolInfo,qa as mockV3CreatePoolInfo,pm as modelDataInfoLayout,Oa as mostSignificantBit,ea as parseTokenAccountResp,RA as parseTokenInfo,zt as poolTypeV6,Eo as purchaseLayout,Wl as realFarmStateV3Layout,Dl as realFarmStateV5Layout,ql as realFarmV6Layout,ho as removeLiquidityInstruction,Ao as removeLiquidityLayout,nB as route1Instruction,rB as route2Instruction,Pd as routeInstruction,ck as simulatePoolInfoInstruction,NA as solToWSolToken,qt as splAccountLayout,Zr as toToken,OA as toTokenAmount,LA as toTokenInfo,Io as trailingZeros,La as u16ToBytes,pk as u32ToBytes,$B as unionArr,Ql as updateFarmPoolInfo,ro as validateFarmRewards,im as voterStakeRegistryCreateDepositEntry,rm as voterStakeRegistryCreateVoter,Jl as voterStakeRegistryDeposit,em as voterStakeRegistryUpdateVoterWeightRecord,tm as voterStakeRegistryWithdraw,MA as wSolToSolToken,$i as withdrawRewardLayout};
1
+ var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var gr=Object.getOwnPropertySymbols;var jo=Object.prototype.hasOwnProperty,Ho=Object.prototype.propertyIsEnumerable;var Qo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))jo.call(e,t)&&Qo(r,t,e[t]);if(gr)for(var t of gr(e))Ho.call(e,t)&&Qo(r,t,e[t]);return r},W=(r,e)=>Nu(r,Mu(e));var ke=(r,e)=>{var t={};for(var n in r)jo.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&gr)for(var n of gr(r))e.indexOf(n)<0&&Ho.call(r,n)&&(t[n]=r[n]);return t};import{merge as kd}from"lodash";import ul from"axios";import{get as Zo,set as _u}from"lodash";import Jo from"dayjs";import Vu from"dayjs/plugin/utc";Jo.extend(Vu);var pi=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 Jo().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}},$o={},Eu={};function se(r){let e=Zo($o,r);if(!e){let t=Zo(Eu,r);e=new pi({name:r,logLevel:t}),_u($o,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Rr from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,fi="0123456789abcdef",Ar="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",yi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},rs,Rt,J=!0,hr="[DecimalError] ",Wt=hr+"Invalid argument: ",is=hr+"Precision limit exceeded",os=hr+"crypto unavailable",ss="[object Decimal]",Fe=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,as=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,dt=1e7,Q=7,Du=9007199254740991,qu=Ar.length-1,bi=kr.length-1,R={toStringTag:ss};R.absoluteValue=R.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};R.ceil=function(){return G(new this.constructor(this),this.e+1,2)};R.clampedTo=R.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(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};R.comparedTo=R.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};R.cosine=R.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=Uu(n,ds(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};R.cubeRoot=R.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(J=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=Fe((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=ge(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(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")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,G(n,r,m.rounding,e)};R.decimalPlaces=R.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Fe(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};R.dividedBy=R.div=function(r){return ge(this,new this.constructor(r))};R.dividedToIntegerBy=R.divToInt=function(r){var e=this,t=e.constructor;return G(ge(e,new t(r),0,1,1),t.precision,t.rounding)};R.equals=R.eq=function(r){return this.cmp(r)===0};R.floor=function(){return G(new this.constructor(this),this.e+1,3)};R.greaterThan=R.gt=function(r){return this.cmp(r)>0};R.greaterThanOrEqualTo=R.gte=function(r){var e=this.cmp(r);return e==1||e===0};R.hyperbolicCosine=R.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/Ir(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(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 G(o,s.precision=t,s.rounding=n,!0)};R.hyperbolicSine=R.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=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Ir(5,r)),i=ln(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,G(i,e,t,!0)};R.hyperbolicTangent=R.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,ge(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};R.inverseCosine=R.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()?mt(t,i,o):new t(0):new t(NaN):e.isZero()?mt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=mt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};R.inverseHyperbolicCosine=R.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,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};R.inverseHyperbolicSine=R.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,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};R.inverseHyperbolicTangent=R.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?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ge(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)};R.inverseSine=R.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=mt(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)))};R.inverseTangent=R.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=bi)return s=mt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=bi)return s=mt(l,m+4,p).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(J=!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)),J=!0,G(s,l.precision=m,l.rounding=p,!0)};R.isFinite=function(){return!!this.d};R.isInteger=R.isInt=function(){return!!this.d&&Fe(this.e/Q)>this.d.length-2};R.isNaN=function(){return!this.s};R.isNegative=R.isNeg=function(){return this.s<0};R.isPositive=R.isPos=function(){return this.s>0};R.isZero=function(){return!!this.d&&this.d[0]===0};R.lessThan=R.lt=function(r){return this.cmp(r)<0};R.lessThanOrEqualTo=R.lte=function(r){return this.cmp(r)<1};R.logarithm=R.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=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(J=!1,a=m+d,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),In(u.d,i=m,p))do if(a+=10,s=vt(c,a),n=e?Pr(l,a+10):vt(r,a),u=ge(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(In(u.d,i+=10,p));return J=!0,G(u,m,p)};R.minus=R.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?G(r,a,u):r}if(t=Fe(r.e/Q),l=Fe(d.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,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=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=dt-1;--c[i],c[n]+=dt}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Tr(c,t),J?G(r,a,u):r):new y(u===3?-0:0)};R.modulo=R.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]?G(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=ge(t,r.abs(),0,3,1),e.s*=r.s):e=ge(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};R.naturalExponential=R.exp=function(){return gi(this)};R.naturalLogarithm=R.ln=function(){return vt(this)};R.negated=R.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};R.plus=R.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(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=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?G(r,a,u):r;if(o=Fe(m.e/Q),n=Fe(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)/dt|0,c[i]%=dt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Tr(c,n),J?G(r,a,u):r};R.precision=R.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=us(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};R.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};R.sine=R.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=Xu(n,ds(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};R.squareRoot=R.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(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Fe((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(ge(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(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")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,G(n,u,l.rounding,r)};R.tangent=R.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=ge(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};R.times=R.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=Fe(l.e/Q)+Fe(r.e/Q),u=p.length,c=d.length,u<c&&(o=p,p=d,d=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]+d[n]*p[i-n-1]+e,o[i--]=a%dt|0,e=a/dt|0;o[i]=(o[i]+e)%dt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Tr(o,t),J?G(r,m.precision,m.rounding):r};R.toBinary=function(r,e){return Ai(this,2,r,e)};R.toDecimalPlaces=R.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(je(r,0,Dt),e===void 0?e=n.rounding:je(e,0,8),G(t,r+t.e+1,e))};R.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(je(r,0,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(je(r,0,Dt),e===void 0?e=o.rounding:je(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};R.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=us(y)-d.e-1,s=o%Q,e.d[0]=Ke(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(Wt+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*Q*2;m=ge(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=ge(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=ge(c,n,o,1).minus(d).abs().cmp(ge(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};R.toHexadecimal=R.toHex=function(r,e){return Ai(this,16,r,e)};R.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:je(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]?(J=!1,t=ge(t,r,0,e,1).times(r),J=!0,G(t)):(r.s=t.s,t=r),t};R.toNumber=function(){return+this};R.toOctal=function(r,e){return Ai(this,8,r,e)};R.toPower=R.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(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=Fe(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=cs(u,a,t,n),r.s<0?new u(1).div(i):G(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=Ke(+a,c),e=t==0||!isFinite(t)?Fe(c*(Math.log("0."+Me(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):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=gi(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),In(i.d,n,o)&&(e=n+10,i=G(gi(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,G(i,n,o))};R.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):(je(r,1,Dt),e===void 0?e=i.rounding:je(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};R.toSignificantDigits=R.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(je(r,1,Dt),e===void 0?e=n.rounding:je(e,0,8)),G(new n(t),r,e)};R.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};R.truncated=R.trunc=function(){return G(new this.constructor(this),this.e+1,1)};R.valueOf=R.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 Me(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+=Ft(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function je(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function In(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=Ke(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)==Ke(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)==Ke(10,e-3)-1,s}function wr(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]+=fi.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 Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Ir(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(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 ge=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,p,d,y,f,b,g,P,A,T,h,I,S,x,L,V,F,Z,D=n.constructor,j=n.s==i.s?1:-1,ee=n.d,oe=i.d;if(!ee||!ee[0]||!oe||!oe[0])return new D(!n.s||!i.s||(ee?oe&&ee[0]==oe[0]:!oe)?NaN:ee&&ee[0]==0||!oe?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=dt,d=Q,l=Fe(n.e/d)-Fe(i.e/d)),F=oe.length,L=ee.length,g=new D(j),P=g.d=[],m=0;oe[m]==(ee[m]||0);m++);if(oe[m]>(ee[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/d+2|0,m=0,F==1){for(p=0,oe=oe[0],I++;(m<L||p)&&I--;m++)S=p*u+(ee[m]||0),P[m]=S/oe|0,p=S%oe|0;y=p||m<L}else{for(p=u/(oe[0]+1)|0,p>1&&(oe=r(oe,p,u),ee=r(ee,p,u),F=oe.length,L=ee.length),x=F,A=ee.slice(0,F),T=A.length;T<F;)A[T++]=0;Z=oe.slice(),Z.unshift(0),V=oe[0],oe[1]>=u/2&&++V;do p=0,c=e(oe,A,F,T),c<0?(h=A[0],F!=T&&(h=h*u+(A[1]||0)),p=h/V|0,p>1?(p>=u&&(p=u-1),f=r(oe,p,u),b=f.length,T=A.length,c=e(f,A,b,T),c==1&&(p--,t(f,F<b?Z:oe,b,u))):(p==0&&(c=p=1),f=oe.slice()),b=f.length,b<T&&f.unshift(0),t(A,f,T,u),c==-1&&(T=A.length,c=e(oe,A,F,T),c<1&&(p++,t(A,F<T?Z:oe,T,u))),T=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[T++]=ee[x]||0:(A=[ee[x]],T=1);while((x++<L||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,rs=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=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[p=0],u=l/Ke(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/Q),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Ke(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/Ke(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Ke(10,Q-o),m[p]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(p==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]==dt&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=dt)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ms(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function Tr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Pr(r,e,t){if(e>qu)throw J=!0,t&&(r.precision=t),Error(is);return G(new r(Ar),e,1,!0)}function mt(r,e,t){if(e>bi)throw Error(is);return G(new r(kr),e,t,!0)}function us(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 Ft(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(J=!1;;){if(t%2&&(o=o.times(e),ts(o.d,s)&&(i=!0)),t=Fe(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ts(e.d,s)}return J=!0,o}function es(r){return r.d[r.d.length-1]&1}function ls(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 gi(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(ge(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&In(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return G(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=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?(J=!1,l=A):l=e,g.precision=l+=y,t=Me(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=Me(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Pr(g,l+2,A).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,P,J=!0):f;for(m=f,u=s=f=ge(f.minus(1),f.plus(1),l,1),p=G(f.times(f),l,1),i=3;;){if(s=G(s.times(p),l,1),c=u.plus(ge(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Pr(g,l+2,A).times(o+""))),u=ge(u,new g(d),l,1),e==null)if(In(u.d,l-y,P,a))g.precision=l+=y,c=s=f=ge(m.minus(1),m.plus(1),l,1),p=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function ms(r){return String(r.s*r.s/0)}function wi(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),J&&(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 Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),as.test(e))return wi(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+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=wr(e,t,dt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Tr(c,l),r.d=c,J=!1,s&&(r=ge(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):xn.pow(2,u))),J=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Ir(5,t)),e=ln(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 ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(J=!1,u=t.times(t),a=new r(n);;){if(s=ge(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ge(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 J=!0,s.d.length=m+1,s}function Ir(r,e){for(var t=r;--e;)t*=r;return t}function ds(r,e){var t,n=e.s<0,i=mt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=es(t)?n?2:3:n?4:1,e;Rt=es(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ai(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(je(t,1,Dt),n===void 0?n=d.rounding:je(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=ms(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(".",""),p=new d(1),p.e=l.length-s,p.d=wr(kt(p),10,i),p.e=p.d.length),m=wr(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 d(r),r.d=m,r.e=o,r=ge(r,p,t,n,0,i),m=r.d,o=r.e,c=rs),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+=fi.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=wr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=fi.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 ts(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Qu(r){return new this(r).acosh()}function ju(r,e){return new this(r).plus(e)}function Hu(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(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=mt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?mt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=mt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ge(r,e,o,1)),e=mt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ge(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(hr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=yi[t]),(n=r[t])!==void 0)if(Fe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=yi[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(os);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function ps(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,ns(o)){c.s=o.s,J?!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++;J?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 wi(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),as.test(o)?wi(c,o):Gu(c,o)}if(i.prototype=R,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=ic,i.clone=ps,i.isDecimal=ns,i.abs=zu,i.acos=Yu,i.acosh=Qu,i.add=ju,i.asin=Hu,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=kc,i.round=Pc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,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 ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(r=new this(r),r.e+1,3)}function lc(){var r,e,t=new this(0);for(J=!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 J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function ns(r){return r instanceof xn||r&&r.toStringTag===ss||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ls(this,arguments,"lt")}function bc(){return ls(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function kc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:je(r,1,Dt),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(os);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Ke(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 Pc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString;R[Symbol.toStringTag]="Decimal";var xn=R.constructor=ps(yi);Ar=new xn(Ar);kr=new xn(kr);var E=xn;import{PublicKey as xi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as fs,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var ki=[k({pubkey:Lc,isWritable:!1}),k({pubkey:fs.programId,isWritable:!1}),k({pubkey:Oc,isWritable:!1})];function Pi({publicKey:r,transformSol:e}){let t=hi(r.toString());if(t instanceof Pe)return e&&t.equals(Ce)?te:t;if(e&&t.toString()===Ce.toBase58())return te;if(typeof t=="string"){if(t===Pe.default.toBase58())return Pe.default;try{return new Pe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function hi(r){try{return new Pe(r)}catch{return r}}var mn=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ys=new Pe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new Pe("SysvarRent111111111111111111111111111111111"),Ti=new Pe("SysvarC1ock11111111111111111111111111111111"),dn=new Pe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xr=new Pe("Sysvar1nstructions1111111111111111111111111"),bs=fs.programId,Md=new Pe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_d=new Pe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vd=new Pe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ed=new Pe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fd=new Pe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vd=new Pe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Wd=new Pe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new Pe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qd=new Pe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ud=new Pe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gd=new Pe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new Pe("So11111111111111111111111111111111111111112"),Ce=Pe.default;function Ii(r){return Pi({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gs}from"@solana/spl-token";var Pt={chainId:101,address:Nc.default.toBase58(),programId:gs.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:gs.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 Bi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof xi&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new xi(Re.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?xi.default:Pi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Bi;he.WSOL=new Bi(W(N({},Re),{mint:Re.address}));import Sr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Bn=_c;var Br=se("module/fraction"),Si=Bn(Sr),Sn=Bn(Ec),Fc={[0]:Sn.ROUND_DOWN,[1]:Sn.ROUND_HALF_UP,[2]:Sn.ROUND_UP},vc={[0]:Sr.roundDown,[1]:Sr.roundHalfUp,[2]:Sr.roundUp},le=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Br.logWithError(`${e} is not an integer.`),e<=0&&Br.logWithError(`${e} is not positive.`),Sn.set({precision:e+1,rounding:Fc[n]});let i=new Sn(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)||Br.logWithError(`${e} is not an integer.`),e<0&&Br.logWithError(`${e} is negative.`),Si.DP=e,Si.RM=vc[n]||1,new Si(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=se("Raydium_price"),st=class extends le{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new le(Ki(n.decimals),Ki(i.decimals))}get raw(){return new le(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new st({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new st({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 Ci=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Kr=Ci;Kr.SOL=new Ci(Pt);import qc from"bn.js";var ws=new le(new qc(100)),nt=class extends le{toSignificant(e=5,t,n){return this.mul(ws).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ws).toFixed(e,t,n)}};var ze=new Ze(0),ks=new Ze(1),Wp=new Ze(2),Dp=new Ze(3),qp=new Ze(5),Ri=new Ze(10),Up=new Ze(100),Gp=new Ze(1e3),Xp=new Ze(1e4),As=9007199254740991;function X(r){let e=se("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=As||r<=-As)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ki(r){return Ri.pow(X(r))}function Cr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=se("Raydium_amount"),hs=Bn(Uc);function Xc(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")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var xe=class extends le{constructor(t,n,i=!0,o){let s=new Rr(0),a=Ri.pow(new Rr(t.decimals));if(i)s=X(n);else{let u=new Rr(0),c=new Rr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new xe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new xe(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 hs.DP=this.token.decimals,new hs(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ps(r){return typeof r=="object"&&r!==null&&![he,xe,zc,le,Yc,st,nt].some(e=>typeof e=="object"&&r instanceof e)}function pe(r){return typeof r=="string"?hi(r):Array.isArray(r)?r.map(e=>pe(e)):Ps(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,pe(t)])):r}import{PublicKey as Ln,sendAndConfirmTransaction as Mi,Transaction as On,TransactionMessage as Nn,VersionedTransaction as Mn}from"@solana/web3.js";import Jc from"axios";var _={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Is,ComputeBudgetProgram as Ts,Transaction as Lr,TransactionMessage as Qc,Keypair as xs,VersionedTransaction as Bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as jc}from"@solana/spl-token";var Lt=se("Raydium_txUtil"),Ss=1644;function Or(r){let e=[],t=[];return r.microLamports&&(e.push(Ts.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(Ts.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 Nr(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Lr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ss}catch{return!1}}async function Ks(r,e,t,n=!0){let i=new Is("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Lr;s.feePayer=i;for(let c of e)Nr([...s.instructions,c],[i])||(o.push(s),s=new Lr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Hc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Cs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=Is.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Hc(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(),d=c._serialize(m).toString("base64");o.push(d)}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&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Kn({instructions:r,payer:e,signers:t}){return Nr(r,[e,...t])}function Cn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=xs.generate().publicKey.toString()}){let o=new Qc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Bs(o).serialize()).toString("base64").length<Ss}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function Ht(r){let e=[];return r.forEach(t=>{t instanceof Lr&&(t.recentBlockhash||(t.recentBlockhash=jc.toBase58()),t.feePayer||(t.feePayer=xs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Bs&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Rs,AddressLookupTableAccount as Mr}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Nf,unpackMint as Mf}from"@solana/spl-token";var Li=se("Raydium_accountInfo_util");async function ht(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Oi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Oi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Li.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&Li.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Li.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Rn(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]}))}async function Ni({connection:r,address:e}){let t=await ht(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Rs(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Mr({key:s,state:Mr.deserialize(o.data)});n[s.toString()]=a,_r[s.toString()]=a}return n}var _r={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Mr({key:new Rs("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Mr.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 Vr=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 Jc.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}=Or(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!==Ln.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 On;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),Ht([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await Mi(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 d;let{sequentially:l,onTxUpdate:m}=c||{},p=await pn(this.connection);if((d=this.owner)!=null&&d.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=p,await Mi(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=p,a[g].length&&b.sign(...a[g]),b));Ht(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:g.map(A=>A.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 p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=ke(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},_r),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Ln(d));let c=await Ni({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Nn({payerKey:this.feePayer,recentBlockhash:i?Ln.default.toBase58():await pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Mn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var d;if(Ht([m]),(d=this.owner)!=null&&d.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 p;Ht(s);let{sequentially:l,onTxUpdate:m}=c||{};if((p=this.owner)!=null&&p.isKeyPair){let{lastValidBlockHeight:d,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:d,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let d=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!d[y])return;let g=await this.connection.sendTransaction(d[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:d[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let A=f.findIndex(T=>T.txId===g);A>-1&&(f[A].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:d}}else{let y=[];for(let f=0;f<d.length;f+=1){let b=await this.connection.sendTransaction(d[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:d}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=ke(c,["computeBudgetConfig"]),i=t?Or(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],p=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 Ln(f));if(u.length<12&&Kn({instructions:p,payer:this.feePayer,signers:y})||Kn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Kn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Kn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new On().add(...i.instructions,...u)):s.push(new On().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:p}=l||{},d=await pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=d,a[b].length&&f.sign(...a[b])}),Ht(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await Mi(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 A=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:A,status:"sent",signedTx:f[b]}),p==null||p([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),p==null||p([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:g.map(A=>A.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=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},_r),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Ln(g));let c=await Ni({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Or(t):{instructions:[],instructionTypes:[]},m=await pn(this.connection),p=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&Cn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Cn({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&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new Mn(h))}else{let h=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new Mn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>p[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&Cn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new Mn(A))}else{let A=new Nn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new Mn(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:A}=g||{};if(d.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),Ht(d),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return d.forEach((S,x)=>{y[x].find(L=>L.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:d}}if(this.signAllTransactions){let h=await this.signAllTransactions(d);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let L=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:L,status:"sent",signedTx:h[I]}),A==null||A([...S]),I++,this.connection.onSignature(L,V=>{let F=S.findIndex(Z=>Z.txId===L);F>-1&&(S[F].status=V.err?"error":"success"),A==null||A([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(L)};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 pt=class{constructor(e){this._owner=e}get publicKey(){return pt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return pt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return pt.isKeyPair(this._owner)}get isPublicKey(){return pt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!pt.isKeyPair(e)}};function Oi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Ls=r=>typeof r=="number";function Os(r,e,t){let n=Ls(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Ns(r,e,t){let n=Ls(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as Se}from"@solana/web3.js";var Ms=new Se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),_s=new Se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),_n=new Se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ny=new Se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ry=new Se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Vi=new Se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Vs=new Se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),iy=new Se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),oy=new Se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sy=new Se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),el=new Se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new Se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new Se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new Se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ay=new Se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),uy=new Se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),cy=new Se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ly=new Se("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),my=new Se("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),dy=new Se("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Vn={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ol}from"@solana/spl-token";function fe(r,e,t){return ie([r.toBuffer(),(t!=null?t:ol).toBuffer(),e.toBuffer()],new il("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ft from"bn.js";var En=1e4;function Ae(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 ft(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===En){let u=new ft(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Fn(r.mul(new ft(En)),new ft(En-o.transferFeeBasisPoints)),c=new ft(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Fn(l.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Fn(r.mul(new ft(o.transferFeeBasisPoints)),new ft(En)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Fn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new ft(0))?t.add(new ft(1)):t}var ve={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"},Fy=N({},ve);var Es="ray_tab_hash",Ei="ray_req_hash",sl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Es);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Es,r)),r},Er=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=ke(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ei)||"[]").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:sl()}));try{localStorage.setItem(Ei,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(Ei,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Er(W(N({},t),{logCount:r,removeLastLog:!0}))}};var Fr=se("Raydium_Api"),Fi=new Map;var vr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ul.create({baseURL:this.urlConfigs.BASE_HOST||ve.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Fr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Fr.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:p}=a;return n&&Er({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),Fr.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&Er({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),Fr.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||ve.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||ve.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||ve.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||ve.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||ve.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||ve.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||ve.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||ve.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||ve.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>Fi.has(s)?(n.push(Fi.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||ve.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Fi.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||ve.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||ve.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||ve.CHECK_AVAILABILITY)).data}};var Wr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Fs="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as ji,TOKEN_PROGRAM_ID as Xt,AccountLayout as yn,TOKEN_2022_PROGRAM_ID as El}from"@solana/spl-token";import{PublicKey as Qr,SystemProgram as Fl}from"@solana/web3.js";var vi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new Vr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(vi(e))}logInfo(...e){this.logger.info(vi(e))}logAndCreateError(...e){let t=vi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ll,createCloseAccountInstruction as Ol,createTransferInstruction as Nl,TOKEN_PROGRAM_ID as fn}from"@solana/spl-token";import{PublicKey as Ml,SystemProgram as _l}from"@solana/web3.js";import Vl from"bn.js";import{PublicKey as $s,Keypair as Sl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import Cl from"bn.js";import{PublicKey as kl}from"@solana/web3.js";import Us,{isBN as Gs}from"bn.js";import{bits as cl,BitStructure as bb,blob as ll,Blob as gb,cstr as wb,f32 as Ab,f32be as kb,f64 as Pb,f64be as hb,greedy as Tb,Layout as ml,ns64 as Ib,ns64be as xb,nu64 as dl,nu64be as Bb,offset as Sb,s16 as Kb,s16be as Cb,s24 as Rb,s24be as Lb,s32 as pl,s32be as Ob,s40 as Nb,s40be as Mb,s48 as _b,s48be as Vb,s8 as Eb,seq as fl,struct as Fb,Structure as yl,u16 as bl,u16be as vb,u24 as Wb,u24be as Db,u32 as gl,u32be as qb,u40 as Ub,u40be as Gb,u48 as Xb,u48be as zb,u8 as wl,UInt as Al,union as Yb,Union as Qb,unionLayoutDiscriminator as jb,utf8 as Hb}from"@solana/buffer-layout";var Dr=ml,vs=yl;var Wi=Al;var Ws=wl,Tt=bl;var Di=gl;var Ds=dl;var _e=pl;var qs=fl;var de=ll;var qi=cl;var $t=class extends Dr{constructor(t,n,i){super(t,i);this.blob=de(t),this.signed=n}decode(t,n=0){let i=new Us(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 Us(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},qr=class extends Dr{constructor(t){super(8,t);this._lower=qi(Di(),!1),this._upper=qi(Di(),!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 Wi(1,r)}function We(r){return new Wi(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function Xs(r){return new $t(1,!0,r)}function Gr(r){return new $t(8,!0,r)}function zs(r){return new $t(16,!0,r)}var Ur=class extends Dr{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 Ur(de(32),e=>new kl(e),e=>e.toBuffer(),r)}function Ve(r){return new Ur(Ws(),Pl,hl,r)}function Pl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hl(r){return r?1:0}var Ui=class extends vs{decode(e,t){return super.decode(e,t)}};function O(r,e,t){return new Ui(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:Gs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Gs(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 qs(r,i,t)}var qt=O([B("mint"),B("owner"),w("amount"),We("delegateOption"),B("delegate"),M("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),B("closeAuthority")]);function Tl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Gi(r,...e){if(!Tl(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 Xi(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 Ys(r,e){Gi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var zr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),yt=(r,e)=>r<<32-e|r>>>e;var mg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Il(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function zi(r){return typeof r=="string"&&(r=Il(r)),Gi(r),r}var Xr=class{clone(){return this._cloneInto()}},dg={}.toString;function Qs(r){let e=n=>r().update(zi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function xl(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 js=(r,e,t)=>r&e^~r&t,Hs=(r,e,t)=>r&e^r&t^e&t,Yr=class extends Xr{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=zr(this.buffer)}update(e){Xi(this);let{view:t,buffer:n,blockLen:i}=this;e=zi(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=zr(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){Xi(this),Ys(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;xl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=zr(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 Bl=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]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Yi=class extends Yr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[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)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Gt[m-15],d=Gt[m-2],y=yt(p,7)^yt(p,18)^p>>>3,f=yt(d,17)^yt(d,19)^d>>>10;Gt[m]=f+Gt[m-7]+y+Gt[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 p=yt(a,6)^yt(a,11)^yt(a,25),d=l+p+js(a,u,c)+Bl[m]+Gt[m]|0,f=(yt(n,2)^yt(n,13)^yt(n,22))+Hs(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+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(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Zs=Qs(()=>new Yi);var Cg=se("Raydium_Util");function Js({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:fe(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:$s.default,amount:new Cl(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Kl}){let t=Sl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Rl(r,t,e),seed:t}}function Rl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Zs(n);return new $s(i)}function Qi(r){let{mint:e,tokenAccount:t,owner:n,programId:i=fn}=r;return Ll(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=fn}=r;return Ol(e,t,i,n,o)}async function It(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new Vl(a)),c=De({fromPublicKey:i,programId:fn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[_l.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:fn}),Qi({mint:new Ml(Re.address),tokenAccount:c.publicKey,owner:o,programId:fn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function vn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=fn}){return Nl(r,e,t,BigInt(String(n)),i,o)}var Wn=class extends Te{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 fe(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:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:El},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Js({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=Xt,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&&(!i||i&&s.equals(u)))return 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 Qr(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new Qr(l)),p=(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||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=ji(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&yn.decode(P.data).mint.equals(n)&&yn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(_.CreateATA);if(n.equals(te)&&i.amount){let P=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...P.instructions||[]),d.endInstructions.push(...P.endInstructions||[]),d.instructionTypes.push(...P.instructionTypes||[]),d.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(d.instructions.push(vn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),d.instructionTypes.push(_.TransferAmount))}return u||(d.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(yn.span),A=Fl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:yn.span,programId:l});return d.instructions.push(A,Qi({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(_.CreateAccount),d.instructionTypes.push(_.InitAccount),u||(d.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=Xt,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 ji(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({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=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new Qr(te).equals(o)){let d=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=ji(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Xt)&&yn.decode(f.data).mint.equals(o)&&yn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Qr(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=ke(l,["tokenAccount"]);u=p,c.addInstruction(d)}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:p}=m,d=ke(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as om}from"@solana/spl-token";import{PublicKey as we,SystemProgram as sm}from"@solana/web3.js";import{PublicKey as sa}from"@solana/web3.js";var Hi=O([M("instruction")]),Zi=O([M("instruction")]),vl=O([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")]),Wl=O([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Dl=O([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),de(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),ql=O([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(vl,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),ea=new Proxy(Wl,{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)}}),ta=new Proxy(Dl,{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)}}),Dn=new Proxy(ql,{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)}}),Ul=O([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),$i=O([M("instruction"),w("nonce"),q(Ul,5,"rewardTimeInfo")]),Ji=O([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),eo=O([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),aw=O([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),qn=O([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),uw=O([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),na=O([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),ra=O([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=O([M("instruction"),w("amount")]),Gl=O([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Xs("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),ia=O([de(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(Gl,4,"votingMints"),Gr("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),Xl=O([Gr("startTime"),Gr("endTime"),M("kind"),q(M(),15,"reserved")]),zl=O([q(Xl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ve("isUsed"),Ve("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),oa=O([de(8),B("voterAuthority"),B("registrar"),q(zl,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var bw=se("Raydium_farm_config"),aa=new sa("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ua=new sa("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),ca={3:ea,5:ta,6:Dn},la={3:qn,5:na,6:ra},to=r=>[3,5,6].indexOf(r)!==-1,no=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={[Ms.toString()]:3,[_s.toString()]:5,[_n.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as jl,SYSVAR_CLOCK_PUBKEY as Xn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Hl,TOKEN_PROGRAM_ID as rt,ASSOCIATED_TOKEN_PROGRAM_ID as Zl}from"@solana/spl-token";import Hr from"bn.js";function ro(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function io(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function oo(r,e){return ie([e.toBuffer()],r)}function so(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function ao(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function uo(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Un=se("Raydium.farm.util");function Gn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([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})=>ie([e.toBuffer()],r);function da(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function co(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function jr(r){let e=la[r];return e||Un.logWithError("invalid version",r),e}function Yl(r){let e=ca[r];return e||Un.logWithError("invalid version",r),e}function Ql(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(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 $e(0)))continue;let o=$e.min(new $e(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 $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function Nw({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let p of e){let d=pe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:Je({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await Rn(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=Yl(d);(!b||!b.data||b.data.length!==P.span)&&Un.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Un.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=jr(d);b&&b.data&&(b.data.length!==P.span&&Un.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=Ql(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=W(N({},c[p].wrapped),{pendingRewards:b})}return c}function Mw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Os(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ns(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=ia.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=oa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var $l=se("Raydium_farm_instruction"),zn={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 pa(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||$l.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Hi.span);Hi.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:jl,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function fa(r){var n;let e=Buffer.alloc($i.span);$i.encode({instruction:0,nonce:new Hr(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...ki,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function ya(r){let e=Buffer.alloc(Zi.span);Zi.encode({instruction:5},e);let t=[k({pubkey:rt,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function Jl(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=O([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:rt,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:xr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...zn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function em(r,e,t,n){let i=O([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...zn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function tm(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([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:rt,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:p,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...zn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function nm(r,e,t,n,i,o){let s=O([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:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function rm(r,e,t,n,i,o,s,a){let u=O([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:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...zn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function im(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),We("periods"),Ve("allowClawback")]),d=[{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:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:rt,isSigner:!1,isWritable:!1},{pubkey:Zl,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...zn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:d,programId:r,data:f})}async function Zw({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=ro(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=qn.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new Hr(0)))throw Error("user do not has new stake amount");let y=io(e,a).publicKey,f=oo(e,a).publicKey,{publicKey:b,nonce:g}=so(n,c,s),P=fe(b,y,u).publicKey,{publicKey:A,nonce:T}=ao(n,c,s),h=uo(t,i,o,s).publicKey,I=[],S=fe(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(Hl(s,S,s,y)),await r.getAccountInfo(b)===null){let Z=nm(t,i,s,o,s,h);I.push(Z,rm(n,c,b,A,s,s,g,T))}let{index:V,isInit:F}=await lo(r,c,b,y);return F||I.push(im(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(Jl(n,c,b,P,S,s,l,a,y,f,e,V,d),em(n,c,b,A)),I}async function $w({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=ro(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=qn.decode(m.data);if(p.voteLockedBalance.eq(new Hr(0)))throw Error("user has vote locked balance = 0");let d=io(e,a).publicKey,y=oo(e,a).publicKey,{publicKey:f}=so(n,c,s),b=fe(f,d,u).publicKey,{publicKey:g}=ao(n,c,s),P=uo(t,i,o,s).publicKey,A=[],{index:T,isInit:h}=await lo(r,c,f,d);if(!h)throw Error("deposit entry index check error");return A.push(tm(n,c,f,s,P,g,b,fe(s,d,u).publicKey,l,a,d,y,e,T,p.voteLockedBalance)),A}function mo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(Ji.span);Ji.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[k({pubkey:rt,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function po({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(eo.span);eo.encode({instruction:4,isSet:new Hr(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...ki,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function Jw(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],p=Je({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:rt,isWritable:!1}),...c?[k({pubkey:Jt.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new re(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:Xn,isWritable:!1}),k({pubkey:rt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new re(t.rewardInfos[f].vault)})),y.push(k({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:d})}function Yn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[k({pubkey:rt,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:Xn,isWritable:!1}),k({pubkey:rt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:Xn,isWritable:!1}),k({pubkey:rt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function ba(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:Xn,isWritable:!1}),k({pubkey:rt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function ga(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:Xn,isWritable:!1}),k({pubkey:rt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[k({pubkey:rt,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}var Hn=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:co(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=_n,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new we(e.lpMint.address),lockInfo:{lockMint:aa,lockVault:ua},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Dn.span);u.addInstruction({instructions:[sm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Dn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=ma({programId:new we(a.programId),poolId:l.publicKey}),y=Gn({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(da(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(Ce)?new we(Re.address):T.mint;b.push({rewardMint:S,rewardVault:Gn({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:A}=fa({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[P],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}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=pe((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(Ce)?new we(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new we(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ce,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[mo({payer:this.scope.ownerPubKey,rewardVault:p,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=pe((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 p=m.mint.equals(Ce)?new we(Re.address):m.mint,d=a.rewardInfos.findIndex(A=>new we(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ce,{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=mo({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=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new we(Re.address):i.mint,m=Gn({programId:new we(n.programId),poolId:new we(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[po({payer:this.scope.ownerPubKey,userRewardTokenPub:p,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=pe((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(Ce)?new we(Re.address):l.mint,p=Gn({programId:new we(n.programId),poolId:new we(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=po({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,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:p}=n,d=bt[p];to(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new we(n.programId),new we(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let D of this.scope.account.tokenAccounts)if(a){let j=fe(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&j.equals(D.publicKey)&&(A[D.mint.toString()]=D.publicKey)}else A[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=A[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let D of m){let j=s&&D.mint.address===te.toString(),ee=A[D.mint.address];if(!ee){let{account:oe,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D.mint.programId,mint:new we(D.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=oe,lt&&P.addInstruction(lt)}A[D.mint.address]=ee,I.push(ee)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=jr(d).decode(x.data)),n.programId!==_n.toString()&&!S){let{instruction:D,instructionType:j}=pa({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[j]})}let L=no({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});L&&this.logAndCreateError(L);let V={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new we(D))},F=d===6?wa(V):d===5?ga(V):ba(V),Z={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[Z[d]]}).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:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=bt[n.programId];to(d)||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 L of this.scope.account.tokenAccounts)if(u){let V=fe(this.scope.ownerPubKey,L.mint).publicKey;L.publicKey&&V.equals(L.publicKey)&&(b[L.mint.toString()]=L.publicKey)}else b[L.mint.toString()]=L.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let L=Je({programId:new we(n.programId),poolId:new we(n.id),owner:this.scope.ownerPubKey,version:d}),V=await this.scope.connection.getAccountInfo(L);V||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:V}),jr(d).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:L,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new we(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=L,V&&f.addInstruction(V)}b[g.toString()]=A;let T=[];for(let L of p){let V=s&&L.mint.address===te.toString(),F=b[L.mint.address];if(!F){let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:L.mint.programId,mint:new we(L.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=Z,D&&f.addInstruction(D)}b[L.mint.address]=F,T.push(F)}let h=no({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(L=>new we(L))},S=d===6?Yn(I):d===5?Qn(I):jn(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=pe((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===Ce.toString()?new we(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:co(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:[om(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:p}=ya({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:[p]}).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=fe(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 d=(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,A=bt[f],T=b.address,h=n&&T===te.toString(),I=m[T];if(!I){let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new we(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=Z,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let Z of g){let D=n&&Z.mint.address===te.toString(),j=m[Z.mint.address];if(!j){let{account:ee,instructionParams:oe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Z.mint.programId,mint:new we(Z.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});j=ee,oe&&l.addInstruction(oe)}m[Z.mint.address]=j,S.push(j)}let x=d[P],L={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(Z=>new we(Z))},V=A===6?Yn(L):A===5?Qn(L):jn(L),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var hA=O([We("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),We("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as am}from"@solana/web3.js";import{MintLayout as Aa,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";var RA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new am(e));return!t||t.data.length!==Aa.span?void 0:Aa.decode(t.data)},LA=({mint:r,decimals:e,programId:t=um,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}},ka=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),OA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=ke(o,["amount","isRaw","name"]);return new xe(new he({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function NA(r){return r.address===Pt.address?Re:r}function MA(r){return r.address===Re.address?Pt:r}import{TOKEN_PROGRAM_ID as Zn,ASSOCIATED_TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as ye,TransactionInstruction as Mt,SystemProgram as ko,SYSVAR_RENT_PUBKEY as Im}from"@solana/web3.js";var fo=O([M("instruction"),w("amountIn"),w("minAmountOut")]),yo=O([M("instruction"),w("maxAmountIn"),w("amountOut")]),zA=O([M("instruction"),M("nonce")]),bo=O([M("instruction"),M("nonce"),w("startTime")]),cm=O([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")]),lm=O([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")]),go=O([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),wo=O([M("instruction"),w("amountIn")]),YA={4:cm,5:lm},Pa=O([w("fee")]);import{PublicKey as mm}from"@solana/web3.js";var gn=new mm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,dm=O([w("x"),w("y"),w("price")]),pm=O([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(dm,tn,"DataElement")]);function fm(r,e){return[0,tn-2]}function ym(r){return[0,tn-2]}function bm(r){return[0,tn-2]}function gm(r,e,t){let[n,i]=fm(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>=tn-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 Ao(r,e,t){let[n,i,o]=gm(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,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function en(r,e,t){return e*r.multiplier/t}function ha(r,e,t){return e*t/r.multiplier}function wm(r,e){let[t,n]=ym(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-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 Am(r,e){let[t,n]=bm(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-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 Ta(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=wm(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,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function km(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Am(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,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function Pm(r,e){let t=Ta(r,e,0,!1);return t[3]?t[0]:0}function Ia(r,e,t,n){let i=Ao(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,p]=Ta(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return ha(r,d,i)}}function xa(r,e,t,n){let i=Ao(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,p]=km(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return ha(r,d,i)}}function hm(r){let e=pm.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 Ba(r,e,t,n){let i=Pm(r,en(r,e,Ao(r,e,t)))/r.multiplier;return n?i:1/i}var bn=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(gn);e&&(this._layoutData=hm(e==null?void 0:e.data))}}};var Sa=se("Raydium_liquidity_instruction");function Ka(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(go.span);go.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:ks},a);let u=[k({pubkey:Zn,isWritable:!1}),k({pubkey:new ye(e.id)}),k({pubkey:new ye(t.authority),isWritable:!1}),k({pubkey:new ye(t.openOrders),isWritable:!1}),k({pubkey:new ye(t.targetOrders)}),k({pubkey:new ye(e.lpMint.address)}),k({pubkey:new ye(t.vault.A)}),k({pubkey:new ye(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:gn})),u.push(k({pubkey:new ye(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new ye(t.marketEventQueue),isWritable:!1})),new Mt({programId:new ye(e.programId),keys:u,data:a})}function Po(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=pe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(wo.span);wo.encode({instruction:4,amountIn:X(i)},a);let u=[k({pubkey:Zn,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return s===5?u.push(k({pubkey:gn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function Ca({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:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=O([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),L=[{pubkey:Zn,isSigner:!1,isWritable:!1},{pubkey:Tm,isSigner:!1,isWritable:!1},{pubkey:ko.programId,isSigner:!1,isWritable:!1},{pubkey:He,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:p,isSigner:!1,isWritable:!1},{pubkey:d,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:A,coinAmount:T,pcAmount:h},V),{instruction:new Mt({keys:L,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function ck(r){let e=O([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ye(r.id),isWritable:!1}),k({pubkey:new ye(r.authority),isWritable:!1}),k({pubkey:new ye(r.openOrders),isWritable:!1}),k({pubkey:new ye(r.vault.A),isWritable:!1}),k({pubkey:new ye(r.vault.B),isWritable:!1}),k({pubkey:new ye(r.mintLp.address),isWritable:!1}),k({pubkey:new ye(r.marketId),isWritable:!1}),k({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new ye(r.programId),keys:n,data:t})}function xm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=pe(r),s=Buffer.alloc(fo.span);fo.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[k({pubkey:Zn,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders})];return i===4&&a.push(k({pubkey:o.targetOrders})),a.push(k({pubkey:o.vault.A}),k({pubkey:o.vault.B})),i===5&&a.push(k({pubkey:gn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Bm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=pe(r),s=Buffer.alloc(yo.span);yo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[k({pubkey:ko.programId,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return i===5&&a.push(k({pubkey:gn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function Zr(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 xm(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Bm(W(N({},a),{maxAmountIn:i,amountOut:o}),t);Sa.logWithError("invalid params","params",r)}throw Sa.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function lk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(bo.span);bo.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=pe(r),o=[k({pubkey:Zn,isWritable:!1}),k({pubkey:ko.programId,isWritable:!1}),k({pubkey:Im,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Ra({poolKeys:r}){let e=O([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ye(r.id),isWritable:!1}),k({pubkey:new ye(r.authority),isWritable:!1}),k({pubkey:new ye(r.openOrders),isWritable:!1}),k({pubkey:new ye(r.vault.A),isWritable:!1}),k({pubkey:new ye(r.vault.B),isWritable:!1}),k({pubkey:new ye(r.mintLp.address),isWritable:!1}),k({pubkey:new ye(r.marketId),isWritable:!1}),k({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new ye(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ee,TOKEN_2022_PROGRAM_ID as Qt,ASSOCIATED_TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as gt,SystemProgram as wn,Keypair as Co}from"@solana/web3.js";import ja from"bn.js";import Em from"bn.js";function La(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function dk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function pk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function $r(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function ho(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function To(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function $n(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Oa(r,e){return $n(r,e)?null:ho(r,e)}function Na(r,e){return $n(r,e)?null:To(r,e)}var Sm=Buffer.from("amm_config","utf8"),Km=Buffer.from("pool","utf8"),Cm=Buffer.from("pool_vault","utf8"),Rm=Buffer.from("pool_reward_vault","utf8"),Ma=Buffer.from("position","utf8"),Lm=Buffer.from("tick_array","utf8"),Om=Buffer.from("operation","utf8"),Nm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function gk(r,e){return ie([Sm,La(e)],r)}function _a(r,e,t,n){return ie([Km,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Io(r,e,t){return ie([Cm,e.toBuffer(),t.toBuffer()],r)}function Va(r,e,t){return ie([Rm,e.toBuffer(),t.toBuffer()],r)}function be(r,e,t){return ie([Lm,e.toBuffer(),$r(t)],r)}function nn(r,e,t,n){return ie([Ma,e.toBuffer(),$r(t),$r(n)],r)}function xt(r,e){return ie([Ma,e.toBuffer()],r)}function Jr(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function Jn(r){return ie([Om],r)}function at(r,e){return ie([Nm,e.toBuffer()],r)}import Bt from"bn.js";var me=new Bt(0),it=new Bt(1),_t=new Bt(-1),ot=new Bt(1).shln(64),ei=new Bt(1).shln(128),xo=ot.sub(it),er=64,Ea=ei.subn(1),qe=-443636,Qe=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Fa=16,va="59543866431248",Wa="184467440737095516",Da="15793534762490258745",ti=new Bt(10).pow(new Bt(6)),Mm=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Mm||{}),kk={[500]:10,[3e3]:60,[1e4]:200},Pk={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},qa={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:[]},hk=new Bt("18446744073700000000");var _m=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_m/2));for(let d=0;d<l.length;d++){let{publicKey:y}=be(t,n,l[d]);u.push(y)}let m=(await ht(e,u)).map(d=>d!==null?tr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=W(N({},y),{address:u[d]}))}return p}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=U.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:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}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/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.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=Le-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<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=be(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.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 p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<Le;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=be(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(U.checkIsOutOfBoundary(e)){if(e>Qe)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Be from"bn.js";var Bo=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}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(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,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=Oa(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Na(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},nr=class{static getBitmapOffset(e,t){if(!ce.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(Qe<=t)throw Error(`extensionTickBoundary check error: ${Qe}, ${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:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.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=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=$n(512,u)?null:ho(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=$n(512,u)?null:To(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var rr=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(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 Ct(0),a=new Ct(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=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.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=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ot),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ot),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=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ot),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ot),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=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ot),p=c.rewardAmountOwed.add(m);o.push(p)}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=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ot),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(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 Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.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 Ct(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 Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.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,A;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=ue.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Ae(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ae(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ae(new Ct(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ae(new Ct(new E(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Ua}from"@solana/spl-token";var Ue=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:p,sqrtPriceX64:d,feeAmount:y}=on.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(...p),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:d,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}=be(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?nr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=be(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=be(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/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.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=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=nr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Qe)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],p=(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(p===void 0)throw Error("get new reward mint info error");let d=W(N({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Yt(p)});if(d.tokenMint.equals(Yt.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Be(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),P=$.mulDivFloor(f,d.emissionsPerSecondX64,ot),A=d.rewardTotalEmissioned.add(P);s.push(W(N({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ce.getArrayStartIndex(Qe,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Rn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.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=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=be(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await Rn(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=tr.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(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(xt(d,p).publicKey);let l=await ht(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=Xa.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:T}=ue.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:T,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>W(N({},x),{pendingReward:new Be(0)})),leverage:h,tokenFeeAmountA:new Be(0),tokenFeeAmountB:new Be(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),S=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=S}if(o){let p=Object.values(m),d=await ht(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=tr.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}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[A].toString()],I=T.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:L}=await rr.GetPositionFees(f,g,I,S),V=await rr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Be(0))?x:new Be(0),g.tokenFeeAmountB=L.gte(new Be(0))?L:new Be(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Be(0))?V[F]:new Be(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?St.add(new Be(1)):Kt.sub(new Be(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ae(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((V=p.fee)!=null?V:me),u),g=Ae(d,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new E(1).div(P),T=d.mul(new Be(Math.floor((1-s)*1e10))).div(new Be(1e10)),h=Ae(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(A).sub(I).abs(),x=I,L=new nt(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:h,expirationTime:Zt(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:L,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 he(W(N({},u),{mint:u.address,isToken2022:u.programId===Ua.toBase58()})),new he(W(N({},c),{mint:c.address,isToken2022:c.programId===Ua.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:T}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},p),{amount:new xe(l,p.amount),fee:p.fee===void 0?void 0:new xe(l,p.fee)}),I=W(N({},d),{amount:new xe(m,d.amount),fee:d.fee===void 0?void 0:new xe(m,d.fee)}),S=W(N({},y),{amount:new xe(m,y.amount),fee:y.fee===void 0?void 0:new xe(m,y.fee)}),x=new st({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),L=new st({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new xe(l,A);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:L,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=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.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,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}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[Ii(e.mintA.address).toString()],p=i[Ii(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)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:A}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(A.toString()).div(new E(10).pow(y)).mul(p.value)),S=new E(T.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(p.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,Z=e.rewardDefaultInfos.map(D=>{var oe,lt;let j=D.mint.decimals,ee=i[D.mint.address];return u<((oe=D.startTime)!=null?oe:0)||u>((lt=D.endTime)!=null?lt:0)||!D.perSecond||!ee||j===void 0?0:new E(ee.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:Z,apr:V+Z.reduce((D,j)=>D+j,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),p=H.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=Ae(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Be(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,p,f,!a):new Be(0);else if(l.lte(p)){let A=ue.getLiquidityFromTokenAmountA(l,p,f,!a),T=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?A:T}else b=t?new Be(0):ue.getLiquidityFromTokenAmountB(m,p,f);return Ue.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,A;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Ae(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ae(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Ae(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Ae(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=Ga.decode(i.data),s=at(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function aP({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,T,h,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[Ae(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Ae(p,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(it)),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(it)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ei).sub(t).mod(ei)}};function Ne(r,e){return So(r.mul(e),64,256)}function Vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function So(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 $.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.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(er);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,it,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 $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(er);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,it,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>Qe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=Ea.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=Vm(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Fa;){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 ne(va)),p=So(m.sub(new ne(Wa)),64,128).toNumber(),d=So(m.add(new ne(Da)),64,128).toNumber();return p==d?p:H.getSqrtPriceX64FromTick(d).lte(e)?d:p}},sn=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=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ue=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(er),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),it,e):$.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?$.mulDivCeil(n,t.sub(e),ot):$.mulDivFloor(n,t.sub(e),ot)}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?$.mulDivRoundingUp(a,it,xo):a.shrn(er)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.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 ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new E(u.toString()).mul(l).toFixed(0)),p=new ne(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ae(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Ae(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Ae(new ne(new E(d.amountA.toString()).mul(p).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),Ae(new ne(new E(d.amountB.toString()).mul(p).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:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(it):Kt.sub(it)),s){if(y.lt(St))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(Kt))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=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+ce.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new ne(0)},g=d,P=n[d],A=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=Ue.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}=be(e,t,g);x=F,P=n[g],S=U.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),h.tickNext<qe?h.tickNext=qe:h.tickNext>Qe&&(h.tickNext=Qe),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let L;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?L=y:L=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=on.swapStepCompute(b.sqrtPriceX64,L,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(_t)),b.liquidity=ue.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}++A}try{let{nextStartIndex:h,isExist:I}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==h&&(b.accounts.push(be(e,t,h).publicKey),d=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 ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(me);if(u){let l=$.mulDivFloor(i,ti.sub(new ne(o.toString())),ti);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new ne(o),ti.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=be(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.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)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,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*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Em(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*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=be(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=>U.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=ce.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=>U.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=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>Qe}static nextInitTick(e,t,n,i,o){if(ce.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<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){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=sn.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=sn.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 LP=O([de(8),M("bump"),Tt("index"),B(""),We("protocolFeeRate"),We("tradeFeeRate"),Tt("tickSpacing"),q(w(),8,"")]),Fm=O([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Ko=O([de(8),Ve("initialized"),B("poolId"),q(Fm,1e3,"observations"),q(z(),5,"")]),vm=O([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),Ga=O([de(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),Tt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),_e("tickCurrent"),Tt("observationIndex"),Tt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(vm,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")]),Wm=O([z("growthInsideLastX64"),w("rewardAmountOwed")]),Xa=O([de(8),M("bump"),B("nftMint"),B("poolId"),_e("tickLower"),_e("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Wm,3,"rewardInfos"),q(w(),8,"")]),OP=O([de(8),M("bump"),B("poolId"),_e("tickLowerIndex"),_e("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Dm=O([_e("tick"),zs("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),tr=O([de(8),B("poolId"),_e("startTickIndex"),q(Dm,Le,"ticks"),M("initializedTickCount"),q(M(),115,"")]),Ya=O([de(329),q(B(),100,"whitelistMints")]),za=O([de(8),B("poolId"),q(q(w(),8),Bo,"positiveTickArrayBitmap"),q(q(w(),8),Bo,"negativeTickArrayBitmap")]);var Ha=se("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]},Ie=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([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:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,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=De({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[wn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ko.span),space:Ko.span,programId:n})],{publicKey:f}=_a(n,a,p,d),{publicKey:b}=Io(n,f,p),{publicKey:g}=Io(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||Ee),d,g,new v(s.programId||Ee),at(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,p,d,y,f,b,g,P,A,T,h,I,S,x,L,V){let F=O([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),Z=[...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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Z],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:L==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...wt.openPosition,...j]);return new gt({keys:D,programId:e,data:ee})}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=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Co.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,d,f),{publicKey:P}=be(p,d,b),{publicKey:A}=fe(n.wallet,y,Ee),{publicKey:T}=Jr(y),{publicKey:h}=xt(p,y),{publicKey:I}=nn(p,d,i,o),S=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,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:A,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=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Co.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,d,f),{publicKey:P}=be(p,d,b),{publicKey:A}=fe(n.wallet,y,Ee),{publicKey:T}=Jr(y),{publicKey:h}=xt(p,y),{publicKey:I}=nn(p,d,i,o),S=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?at(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,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,p,d,y,f,b,g,P,A,T,h,I,S,x,L,V){let F=O([_e("tickLowerIndex"),_e("tickUpperIndex"),_e("tickArrayLowerStartIndex"),_e("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ve("withMetadata"),M("optionBaseFlag"),Ve("baseFlag")]),Z=[...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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Z],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new ja(0),amountMaxA:S==="MintA"?x:L,amountMaxB:S==="MintA"?L:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...wt.openPosition,...j]);return new gt({keys:D,programId:e,data:ee})}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,p=[];if(l)m=new v((await l(1))[0]);else{let x=Co.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,y,f),{publicKey:P}=be(d,y,b),{publicKey:A}=fe(n.wallet,m,Ee),{publicKey:T}=Jr(m),{publicKey:h}=xt(d,m),{publicKey:I}=nn(d,y,i,o),S=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?at(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:p,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=O([]),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:wn.programId,isSigner:!1,isWritable:!1},{pubkey:Ee,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}=fe(n.wallet,i.nftMint,Ee),{publicKey:a}=xt(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,p,d,y,f,b,g,P){let A=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("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:p,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(u,c,l),{publicKey:d}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?at(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(u,c,l),{publicKey:d}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Ee),{publicKey:f}=xt(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?at(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,p,d,y,f,b,g,P){let A=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),Ve("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:p,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:new ja(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,p,d,y,f,b,g,P,A){let T=O([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.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:p,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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:d,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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(c,l,m),{publicKey:y}=be(c,l,p),{publicKey:f}=fe(i.wallet,n.nftMint,u),{publicKey:b}=xt(c,n.nftMint),{publicKey:g}=nn(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 A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?at(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let P=O([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ve("isBaseInput")]),A=[...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:p,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:d,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,p]=[new v(t.vault.A),new v(t.vault.B)],[d,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:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,at(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,p){let d=O([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:wn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:p},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=Va(o,s,i.mint).publicKey,u=Jn(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,p){let d=O([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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,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(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:X(l),endTime:X(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 p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Ha.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Jn(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=O([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:Ee,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,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)&&Ha.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,p]=[new v(t.vault.A),new v(t.vault.B)],[d,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?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Xm}from"@solana/web3.js";import{PublicKey as Um}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),qm={4:3,5:3};var Gm=se("Raydium_liquidity_serum");function eu({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=Um.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Gm.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 ir from"bn.js";function Lo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function zm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ym({programId:r}){return ie([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=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=Ym({programId:a}),d=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=zm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=eu({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:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Xm.default,configId:Lo({programId:a})}}var Ro;async function uh({connection:r,poolKeysList:e,config:t}){Ro||(Ro=new bn({connection:r}),await Ro.initStableModelLayout());let n=e.map(s=>Ra({poolKeys:s}));return(await Ks(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Cs(s,"GetPoolData"),u=new ir(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),p=new ir(Ot(a,"pool_coin_amount")),d=new ir(Ot(a,"pool_pc_amount")),y=new ir(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new ir(f)}})}import Ge from"bn.js";var or=class extends Te{constructor(t){super(t);this.stableLayout=new bn({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 Ge(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ka(t[o?"mintB":"mintA"]),[u,c]=[new Ge(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ge(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ge(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 p=ze;s.isZero()||(p=m==="base"?Cr(s.mul(c),u):Cr(s.mul(u),c));let d=Cr(s.mul(l),new Ge(m==="base"?t.mintAmountA:t.mintAmountB).mul(new Ge(10).pow(new Ge(t[m==="base"?"mintA":"mintB"].decimals)))),f=new nt(new Ge(1)).add(i).mul(p).quotient,b=new xe(a,p),g=new xe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}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:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.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 et(n.lpMint.address)}),P=[d,y],A=[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(),A.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[L,V]=A,[F,Z]=T,D=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Et=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:L,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Et,oe=ke(Et,["tokenAccount"]);j.addInstruction(oe);let br=await l.handleTokenAccount({side:"in",amount:Z,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:lt}=br,hn=ke(br,["tokenAccount"]);j.addInstruction(hn);let Tn=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:mi}=Tn,di=ke(Tn,["tokenAccount"]);return j.addInstruction(di),j.addInstruction({instructions:[Ka({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:ee,quoteTokenAccount:lt,lpTokenAccount:mi,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:Z,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.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 et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=S,T=ke(S,["tokenAccount"]);b.addInstruction(T);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=ke(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Po({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,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=ni,checkCreateATAOwner:p=!0,getEphemeralSigners:d,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 ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||fe(this.scope.ownerPubKey,ee.accountInfo.mint,ni).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.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 Ge(0)),A=t.mintA.address===he.WSOL.mint.toString(),T=t.mintB.address===he.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ni,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});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:ni,mint:new et(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});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 ee=[];for(let Et of s.rewardInfos){let br=Et.mint.address===he.WSOL.mint.toString();if(b[Et.mint.address])ee.push(b[Et.mint.address]);else{let{account:Tn,instructionParams:Yo}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!br,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Tn||this.logAndCreateError("farm reward account not found:",Et.mint.address),Yo&&f.addInstruction(Yo),ee.push(Tn)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],lt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:ee},hn=bt[s.programId],mi=hn===6?Yn(lt):hn===5?Qn(lt):jn(lt),di={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[mi],instructionTypes:[di[hn]]})}let L=await this.getAmmPoolKeys(t.id),V=Po({poolInfo:t,poolKeys:L,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:L.lookupTableAccount?[L.lookupTableAccount]:[]});let[F,Z]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Ie.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:Z},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.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:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var Z;let b=c.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),g=c.useSOLBalance&&i.mint.equals(nu),P=c.useSOLBalance&&o.mint.equals(nu),A=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});A.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(A.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}),L={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}=Ca(W(N({},L),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:fe(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[V],instructionTypes:[F]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:L}})}async getCreatePoolFee({programId:t}){let n=Lo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Pa.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,p]=c,d=t.programId===Vs.toBase58(),y;if(d)y=new E(p.toString()).div(m.toString());else{let x=Ba(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 Ge(0),g=new Ge(0);if(!f.isZero())if(d){g=Fn(f.mul($a),Ja);let x=f.sub(g),L=m.add(x);b=p.mul(x).div(L)}else{g=f.mul(new Ge(2)).div(new Ge(1e4));let x=f.sub(g);l==="quote"?b=new Ge(Ia(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new Ge(xa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new Ge(new E(b.toString()).mul(1-s).toFixed(0)),A=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:A,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],p=await this.scope.account.getCreatedTokenAccount({mint:new et(l.address),programId:new et(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=ke(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=ke(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[Zr({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ae}from"@solana/web3.js";import At from"bn.js";var sr=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||ae.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new At(new ae(i.address).toBuffer()).gt(new At(new ae(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Ie.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:W(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,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:d,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:[]}},qa),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:p,computeBudgetConfig:d,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===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(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:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(L||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await Ie.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:p});return f.addInstruction(F),f.addCustomComputeBudget(d),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:p,getEphemeralSigners:d}){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===te.toBase58(),P=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(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});A&&(f=A),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(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),x=await Ie.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:d});return y.addInstruction(x),y.versionBuild({txVersion:p,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,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(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});A&&(y=A),p.addInstruction(T||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.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,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(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});A&&(y=A),p.addInstruction(T||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.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 p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,P&&p.addInstruction(P);let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,T&&p.addInstruction(T);let h=[];for(let L of t.rewardDefaultInfos){let V=i.useSOLBalance&&L.mint.address===te.toString(),F;if(L.mint.address===t.mintA.address)F=f;else if(L.mint.address===t.mintB.address)F=b;else{let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(L.mint.programId),mint:new ae(L.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=Z,D&&p.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 Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let L=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:L.instructions,endInstructionTypes:L.instructionTypes}),x=N(N({},x),L.address)}return p.addCustomComputeBudget(l),p.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=Ie.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()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.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===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new E(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ae(l.mint.programId),mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.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(te),{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 p=await this.getClmmPoolKeys(e.id),d=Ie.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.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===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(l.mint.programId),mint:new ae(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new 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});d&&u.addInstruction(d),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ae(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.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(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(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),p=Ie.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.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(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:d,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(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?St.add(new At(1)):Kt.sub(new At(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=P,A&&m.addInstruction(A)}let b;if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=P,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ae(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?fe(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(A=>!A.liquidity.isZero()||A.rewardInfos.find(T=>!T.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new ae(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,T&&l.addInstruction(T)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new ae(p.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=A,T&&l.addInstruction(T)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let T=n.useSOLBalance&&A.mint.address===te.toString(),h=c[A.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(A.mint.programId),mint:new ae(A.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[A.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let T=Ie.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,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(Jn(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(ae.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as ii,TOKEN_PROGRAM_ID as jt,AccountLayout as pu}from"@solana/spl-token";var Qm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),jm=Buffer.from("amm_config","utf8"),Hm=Buffer.from("pool","utf8"),Zm=Buffer.from("pool_lp_mint","utf8"),$m=Buffer.from("pool_vault","utf8"),Jm=Buffer.from("observation","utf8");function ed(r){return ie([Qm],r)}function td(r,e){return ie([jm,id(e)],r)}function nd(r,e,t,n){return ie([Hm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function rd(r,e){return ie([Zm,e.toBuffer()],r)}function ru(r,e,t){return ie([$m,e.toBuffer(),t.toBuffer()],r)}function ri(r,e){return ie([Jm,e.toBuffer()],r)}function id(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=td(r,0).publicKey,i=ed(r).publicKey,o=nd(r,n,e,t).publicKey,s=rd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ri(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ar}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oo,TOKEN_2022_PROGRAM_ID as ou,ASSOCIATED_TOKEN_PROGRAM_ID as od}from"@solana/spl-token";var sd=se("Raydium_cpmm"),ur={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 su(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let T=O([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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Oo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:od,isSigner:!1,isWritable:!1},{pubkey:bs,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new ar({keys:h,programId:r,data:Buffer.from([...ur.initialize,...I])})}function au(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([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:Oo,isSigner:!1,isWritable:!1},{pubkey:ou,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 sd.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.deposit,...g])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([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:Oo,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ys,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new ar({keys:b,programId:r,data:Buffer.from([...ur.withdraw,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([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:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseInput,...P])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([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:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ar({keys:g,programId:r,data:Buffer.from([...ur.swapBaseOutput,...P])})}import tt from"bn.js";var mu=O([de(8),M("bump"),Ve("disableCreatePool"),Tt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),du=O([de(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 cr=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=du.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=mu.decode(u.data))}return W(N({},i),{baseReserve:new tt(pu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new tt(pu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}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=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Z,D,j;let p=i.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),d=new tt(new Y(c.mintA.address).toBuffer()).lte(new tt(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===ii.toBase58(),A=i.useSOLBalance&&f.address===ii.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:p,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:L,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||L===void 0)throw Error("you don't has some token account");let F=iu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[su(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,L,fe(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:jt),new Y((j=f.programId)!=null?j:jt),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,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||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,epochInfo:await this.scope.fetchEpochInfo(),amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===ii.toString(),A=t.mintB.address===ii.toString(),T=this.createTxBuilder(),[h,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});T.addInstruction(x||{});let{account:L,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});T.addInstruction(V||{}),!S&&!L&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let F=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Z}=ee,D=ke(ee,["tokenAccount"]);T.addInstruction(D);let j=await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[au(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),Z,S,L,new Y(j.vault.A),new Y(j.vault.B),h,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:c})}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 nt(new tt(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,p=this.createTxBuilder(),[d,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=d.equals(te),b=y.equals(te),g,P,{account:A,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=A,T&&p.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&&p.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 p.addInstruction({instructions:[uu(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),d,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),p.addCustomComputeBudget(o),p.versionBuild({txVersion:s})}async swap(e){var T,h,x,L,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,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:jt),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:jt),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=ke(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=ke(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?cu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:jt),new Y((L=t.mintB.programId)!=null?L:jt),m,p,ri(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((V=t.mintB.programId)!=null?V:jt),new Y((F=t.mintA.programId)!=null?F:jt),p,m,ri(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,epochInfo:i,baseIn:o}){var P,A,T,h,I,S,x,L;let s=1-Number(n.toSignificant())/100,a=new tt(new E(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Ae(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new tt(0)),[l,m]=[new tt(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new tt(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new tt(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(T=(A=u.fee)==null?void 0:A.toString())!=null?T:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:ze,fee:void 0,expirationTime:void 0};c.isZero()||(f=Ae(ad(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new nt(new tt(1)).add(n),g=Ae(b.mul(f.amount.sub((h=f.amount)!=null?h:new tt(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(I=f.fee)==null?void 0:I.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(L=(x=g.fee)==null?void 0:x.toString())!=null?L:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function ad(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new tt(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new tt(1))),{amountA:i,amountB:o}}var lr=class extends Te{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(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));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 It({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),vn({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 It({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:[vn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as cd,Transaction as No,TransactionInstruction as ld}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Te{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(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=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.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),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(0))).filter(x=>!x).length!==3,I=o>A&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Xe.VERSION_PROJECT[m],openTime:A,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,L)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[L].debtAmount.add(P.tokenInfo[L].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(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Xe.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:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Xe.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 Nr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new No().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new No().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new No().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=O([]),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:ud,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 ld({keys:o,programId:e,data:a})}},ut=Xe;ut.CLAIMED_NUM=3,ut.POOL_LAYOUT=O([de(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(O([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),ut.OWNER_LAYOUT=O([de(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(O([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),ut.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cd(e)),ut.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ut.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import mr from"bn.js";import{TransactionInstruction as dd,SYSVAR_RENT_PUBKEY as pd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function md(r="accountFlags"){let e=new qr(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 Mo=O([de(5),md("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"),de(7)]);function fd({programId:r,marketInfo:e}){let t=O([M("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),Tt("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:pd,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 dd({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Mo.span),space:Mo.span,programId:t.programId}),un.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}),un.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}),un.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}),un.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}),fd({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 An=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new mr(100);function P(){let V=new mr(0);for(;;)try{return{vaultOwner:_o.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new mr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:T}=P(),h=new mr(Math.round(10**e.decimals*n)),I=new mr(Math.round(n*10**t.decimals*i));if(h.eq(ze))throw Error("lot size is too small");if(I.eq(ze))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:A,requestQueue:l,eventQueue:m,bids:p,asks:d,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 L=[];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 Z=await F.versionBuild({txVersion:s});L.push(Z)}return x.versionMultiBuild({extraPreBuildData:L,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new _o(e.mint),quoteMin:new _o(t.mint)}},txVersion:s})}};import{PublicKey as pr}from"@solana/web3.js";import{PublicKey as yd,TransactionInstruction as Eo,SYSVAR_CLOCK_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fo}from"@solana/spl-token";var Vo=O([M("instruction"),Ds("amount")]),dr=O([M("instruction")]);function ZI({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new yd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:Fo,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Ti,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(Vo.span);return Vo.encode({instruction:1,amount:Number(e)},i),new Eo({keys:n,programId:r,data:i})}function oi({programId:r},e){let t=[{pubkey:Fo,isSigner:!1,isWritable:!1},{pubkey:Ti,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(dr.span);return dr.encode({instruction:2},n),new Eo({keys:t,programId:r,data:n})}function vo(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(dr.span);dr.encode({instruction:2},s);let a=[{pubkey:Fo,isWritable:!1,isSigner:!1},{pubkey:bd,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 Eo({programId:e.programId,keys:a,data:s})}import ku from"bn.js";var gd={[Vn.IDO_PROGRAM_ID_V1.toString()]:1,[Vn.IDO_PROGRAM_ID_V2.toString()]:2,[Vn.IDO_PROGRAM_ID_V3.toString()]:3,[Vn.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=gd[t.programId];a||this.logAndCreateError("invalid version",a);let u=pe(t),[c,l]=[!new ku(e.coin).isZero(),!new ku(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=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});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{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(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[oi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[oi({programId:new pr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[oi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new pr(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:p,quoteTokenAccount:f,ledgerAccount:new pr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[vo(W(N({},g),{side:"base"}))]:[],...l?[vo(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as wd}from"@solana/web3.js";import{MintLayout as Ad,TOKEN_2022_PROGRAM_ID as Wo,TOKEN_PROGRAM_ID as Do}from"@solana/spl-token";var fr=class extends Te{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")?Wo.toBase58():Do.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")?Wo.toBase58():Do.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")?Wo.toBase58():Do.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 wd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ad.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 si=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 pt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=se("Raydium"),this.farm=new Hn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Wn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new or({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new fr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new lr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new sr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new cr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new ut({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new An({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({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=kd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new vr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new si(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(Wr);return this._owner.publicKey}setOwner(e){return this._owner=e?new pt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Fs);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(Wr),new Error(Wr)}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 Go,TOKEN_2022_PROGRAM_ID as qo}from"@solana/spl-token";import{PublicKey as ct,TransactionInstruction as Xo,SystemProgram as hu}from"@solana/web3.js";import Uo from"bn.js";function rB(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([M("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:new ct(t.programId),isSigner:!1,isWritable:!1},{pubkey:new ct(t.id),isSigner:!1,isWritable:!0},{pubkey:new ct(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=pe(t);d.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=pe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new ct("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=pe(t);d.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(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new Xo({keys:d,programId:r,data:y})}function iB(r,e,t,n,i,o,s,a,u,c){let l=O([M("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new ct(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new ct(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 d=pe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=pe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new ct("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=pe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Xo({keys:m,programId:r,data:p})}function Pu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=pe(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 ct("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=pe(e),u=s.mintA.address===t;return[{pubkey:new ct(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(qo)||a.mintB.programId.equals(qo)?[{pubkey:qo,isSigner:!1,isWritable:!1},{pubkey:mn,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:at(new ct(String(r.programId)),new ct(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=pe(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 Pd(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=O([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1}];f.push(...Pu(a,c,o,t,n,d[0])),f.push(...Pu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new Xo({keys:f,programId:r,data:b})}async function oB({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=pe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(it):Kt.sub(it);return await Ie.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 Uo(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[Zr({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 Uo(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],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Pd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Uo(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var zo=new Iu(1e6);function hd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var ai=class{static tradingFee(e,t){return hd(e,t,zo)}static protocolFee(e,t){return Tu(e,t,zo)}static fundFee(e,t){return Tu(e,t,zo)}};import yr from"bn.js";function ui(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Td(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=ui(r,e);if(n.gt(Pn)){t=t.add(new yr(1));let i=r.div(t);n=ui(r,t),n.gt(Pn)&&(i=i.add(new yr(1)))}return[t,e]}var Pn=new yr(0),ci=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Td(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 ui(e.mul(n),t).gt(Pn)&&s.gt(Pn)&&(s=s.add(new yr(1))),ui(e.mul(i),t).gt(Pn)&&a.gt(Pn)&&(a=a.add(new yr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=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=ai.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=ci.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[Vi.toBase58()]:3},Ku={3:Vi};var Id=O([de(5),de(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"),de(7)]),Cu={3:Id};import{PublicKey as Ru}from"@solana/web3.js";var li=se("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||li.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||li.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||li.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=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return li.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var JB=r=>r;export{Sm as AMM_CONFIG_SEED,LP as AmmConfigLayout,Fa as BIT_PRECISION,sr as Clmm,Ie as ClmmInstrument,ci as ConstantProductCurve,mu as CpmmConfigInfoLayout,ai as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,dm as DataElement,Bo as EXTENSION_TICKARRAY_BITMAP_SIZE,aa as FARM_LOCK_MINT,ua as FARM_LOCK_VAULT,bt as FARM_PROGRAM_TO_VERSION,la as FARM_VERSION_TO_LEDGER_LAYOUT,ca as FARM_VERSION_TO_STATE_LAYOUT,ti as FEE_RATE_DENOMINATOR,zo as FEE_RATE_DENOMINATOR_VALUE,_m as FETCH_TICKARRAY_COUNT,Mm as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,qm as LIQUIDITY_VERSION_TO_SERUM_VERSION,YA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,va as LOG_B_2_X32,Wa as LOG_B_P_ERR_MARGIN_LOWER_X64,Da as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,Mo as MARKET_STATE_LAYOUT_V2,Id as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,Qe as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,gn as MODEL_DATA_PUBKEY,Lu as Market,$ as MathUtil,xo as MaxU64,Ea as MaxUint128,_t as NEGATIVE_ONE,it as ONE,Om as OPERATION_SEED,Ko as ObservationInfoLayout,Fm as ObservationLayout,Ya as OperationLayout,Rm as POOL_REWARD_VAULT_SEED,Km as POOL_SEED,Nm as POOL_TICK_ARRAY_BITMAP_SEED,Cm as POOL_VAULT_SEED,Ma as POSITION_SEED,Ga as PoolInfoLayout,Ue as PoolUtils,Xa as PositionInfoLayout,Wm as PositionRewardInfoLayout,rr as PositionUtils,OP as ProtocolPositionLayout,ei as Q128,ot as Q64,si as Raydium,vm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,Pt as SOL_INFO,hA as SPL_MINT_LAYOUT,H as SqrtPriceMath,bn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Lm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,kk as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,nr as TickArrayBitmapExtensionUtils,tr as TickArrayLayout,Dm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,er as U64Resolution,hk as U64_IGNORE_RANGE,oa as Voter,zl as VoterDepositEntry,Xl as VoterLockup,ia as VoterRegistrar,Gl as VoterVotingMintConfig,me as ZERO,go as addLiquidityLayout,Hi as associatedLedgerAccountLayout,co as calFarmRewardAmount,hd as ceilDiv,dr as claimLayout,Nt as closeAccountInstruction,pa as createAssociatedLedgerAccountInstruction,Pa as createPoolFeeLayout,Ca as createPoolV4InstructionV2,zA as createPoolV4Layout,It as createWSolAccountInstructions,Ye as dwLayout,eo as farmAddRewardLayout,aw as farmLedgerLayoutV3_1,qn as farmLedgerLayoutV3_2,uw as farmLedgerLayoutV5_1,na as farmLedgerLayoutV5_2,ra as farmLedgerLayoutV6_1,da as farmRewardInfoToConfig,$i as farmRewardLayout,Ji as farmRewardRestartLayout,Ul as farmRewardTimeInfoLayout,ea as farmStateV3Layout,ta as farmStateV5Layout,Dn as farmStateV6Layout,Nw as fetchMultipleFarmInfoAndUpdate,uh as fetchMultipleInfo,fo as fixedSwapInLayout,yo as fixedSwapOutLayout,Tu as floorDiv,hm as formatLayout,De as generatePubKey,ma as getAssociatedAuthority,Lo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Gn as getAssociatedLedgerPoolAccount,zm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,td as getCpmmPdaAmmConfigId,nd as getCpmmPdaPoolId,iu as getCreatePoolKeys,lo as getDepositEntryIndex,xa as getDxByDyBaseIn,Ia as getDyByDxBaseIn,jr as getFarmLedgerLayout,Yl as getFarmStateLayout,Ym as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,aP as getLiquidityFromAmounts,gk as getPdaAmmConfigId,at as getPdaExBitmapAccount,rd as getPdaLpMint,Jr as getPdaMetadataKey,ri as getPdaObservationId,Jn as getPdaOperationAccount,xt as getPdaPersonalPositionAddress,ed as getPdaPoolAuthority,_a as getPdaPoolId,Va as getPdaPoolRewardVaulId,Io as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,be as getPdaTickArrayAddress,ru as getPdaVault,ro as getRegistrarAddress,Ba as getStablePrice,uo as getTokenOwnerRecordAddress,so as getVoterAddress,ao as getVoterWeightRecordAddress,oo as getVotingMintAuthority,io as getVotingTokenMint,nm as governanceCreateTokenOwnerRecord,dk as i16ToBytes,$r as i32ToBytes,bo as initPoolLayout,Qi as initTokenAccountInstruction,fd as initializeMarket,to as isValidFarmVersion,$n as isZero,Mw as judgeFarmType,ho as leadingZeros,Na as leastSignificantBit,cm as liquidityStateV4Layout,lm as liquidityStateV5Layout,Zr as makeAMMSwapInstruction,Ka as makeAddLiquidityInstruction,po as makeAddNewRewardInstruction,oi as makeClaimInstruction,vo as makeClaimInstructionV4,su as makeCreateCpmmPoolInInstruction,fa as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ya as makeCreatorWithdrawFarmRewardInstruction,au as makeDepositCpmmInInstruction,ba as makeDepositInstructionV3,ga as makeDepositInstructionV5,wa as makeDepositInstructionV6,Zw as makeDepositTokenInstruction,Jw as makeDepositWithdrawInstruction,lk as makeInitPoolInstructionV4,ZI as makePurchaseInstruction,mo as makeRestartRewardInstruction,Ra as makeSimulatePoolInfoInstruction,cu as makeSwapCpmmBaseInInInstruction,lu as makeSwapCpmmBaseOutInInstruction,xm as makeSwapFixedInInstruction,Bm as makeSwapFixedOutInstruction,oB as makeSwapInstruction,vn as makeTransferInstruction,uu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Qn as makeWithdrawInstructionV5,Yn as makeWithdrawInstructionV6,$w as makeWithdrawTokenInstruction,Pk as mockCreatePoolInfo,qa as mockV3CreatePoolInfo,pm as modelDataInfoLayout,Oa as mostSignificantBit,Js as parseTokenAccountResp,RA as parseTokenInfo,zt as poolTypeV6,Vo as purchaseLayout,Wl as realFarmStateV3Layout,Dl as realFarmStateV5Layout,ql as realFarmV6Layout,Po as removeLiquidityInstruction,wo as removeLiquidityLayout,rB as route1Instruction,iB as route2Instruction,Pd as routeInstruction,ck as simulatePoolInfoInstruction,NA as solToWSolToken,qt as splAccountLayout,ka as toToken,OA as toTokenAmount,LA as toTokenInfo,To as trailingZeros,La as u16ToBytes,pk as u32ToBytes,JB as unionArr,Ql as updateFarmPoolInfo,no as validateFarmRewards,im as voterStakeRegistryCreateDepositEntry,rm as voterStakeRegistryCreateVoter,Jl as voterStakeRegistryDeposit,em as voterStakeRegistryUpdateVoterWeightRecord,tm as voterStakeRegistryWithdraw,MA as wSolToSolToken,Zi as withdrawRewardLayout};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map