@raydium-io/raydium-sdk-v2 0.0.44-alpha → 0.0.46-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 (90) 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 +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/type.d.ts +1 -1
  41. package/lib/raydium/farm/config.d.ts +1 -1
  42. package/lib/raydium/farm/farm.d.ts +3 -3
  43. package/lib/raydium/farm/index.d.ts +1 -1
  44. package/lib/raydium/farm/instruction.d.ts +1 -1
  45. package/lib/raydium/farm/layout.d.ts +1 -1
  46. package/lib/raydium/farm/type.d.ts +1 -1
  47. package/lib/raydium/farm/util.d.ts +1 -1
  48. package/lib/raydium/ido/ido.d.ts +3 -3
  49. package/lib/raydium/ido/index.d.ts +3 -3
  50. package/lib/raydium/ido/instruction.d.ts +1 -1
  51. package/lib/raydium/ido/type.d.ts +1 -1
  52. package/lib/raydium/index.d.ts +3 -3
  53. package/lib/raydium/index.js +1 -1
  54. package/lib/raydium/index.js.map +1 -1
  55. package/lib/raydium/index.mjs +1 -1
  56. package/lib/raydium/index.mjs.map +1 -1
  57. package/lib/raydium/liquidity/index.d.ts +1 -1
  58. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  59. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  60. package/lib/raydium/liquidity/liquidity.js +1 -1
  61. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  62. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  63. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  64. package/lib/raydium/liquidity/type.d.ts +1 -1
  65. package/lib/raydium/liquidity/utils.d.ts +1 -1
  66. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  67. package/lib/raydium/marketV2/index.d.ts +3 -3
  68. package/lib/raydium/moduleBase.d.ts +3 -3
  69. package/lib/raydium/raydium.d.ts +3 -3
  70. package/lib/raydium/raydium.js +1 -1
  71. package/lib/raydium/raydium.js.map +1 -1
  72. package/lib/raydium/raydium.mjs +1 -1
  73. package/lib/raydium/raydium.mjs.map +1 -1
  74. package/lib/raydium/token/constant.d.ts +1 -1
  75. package/lib/raydium/token/index.d.ts +1 -1
  76. package/lib/raydium/token/token.d.ts +3 -3
  77. package/lib/raydium/token/type.d.ts +1 -1
  78. package/lib/raydium/token/utils.d.ts +1 -1
  79. package/lib/raydium/tradeV2/index.d.ts +2 -2
  80. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  81. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  82. package/lib/raydium/tradeV2/type.d.ts +2 -2
  83. package/lib/raydium/type.d.ts +1 -1
  84. package/lib/raydium/utils1216/index.d.ts +3 -3
  85. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  86. package/lib/{raydium-6435918d.d.ts → raydium-506bacbc.d.ts} +2 -2
  87. package/lib/{type-291f7eb1.d.ts → type-389634c9.d.ts} +1 -1
  88. package/lib/{type-515cebdd.d.ts → type-9fe71e3c.d.ts} +3 -3
  89. package/package.json +1 -1
  90. package/src/raydium/liquidity/liquidity.ts +2 -2
@@ -1,3 +1,3 @@
1
- var Oa=Object.defineProperty,Na=Object.defineProperties;var Ma=Object.getOwnPropertyDescriptors;var rr=Object.getOwnPropertySymbols;var po=Object.prototype.hasOwnProperty,fo=Object.prototype.propertyIsEnumerable;var mo=(i,e,t)=>e in i?Oa(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,L=(i,e)=>{for(var t in e||(e={}))po.call(e,t)&&mo(i,t,e[t]);if(rr)for(var t of rr(e))fo.call(e,t)&&mo(i,t,e[t]);return i},W=(i,e)=>Na(i,Ma(e));var Ae=(i,e)=>{var t={};for(var n in i)po.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&rr)for(var n of rr(i))e.indexOf(n)<0&&fo.call(i,n)&&(t[n]=i[n]);return t};import{merge as pm}from"lodash";import dc from"axios";import{get as yo,set as _a}from"lodash";import go from"dayjs";import Ea from"dayjs/plugin/utc";go.extend(Ea);var $r=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 go().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}},bo={},Va={};function oe(i){let e=yo(bo,i);if(!e){let t=yo(Va,i);e=new $r({name:i,logLevel:t}),_a(bo,i,e)}return e}import{PublicKey as Yu}from"@solana/web3.js";import Hu from"bn.js";import Gu from"big.js";import br from"bn.js";import Ye from"bn.js";var tn=9e15,Ot=1e9,Jr="0123456789abcdef",or="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",sr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ei={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-tn,maxE:tn,crypto:!1},Po,It,$=!0,ur="[DecimalError] ",Rt=ur+"Invalid argument: ",ko=ur+"Precision limit exceeded",To=ur+"crypto unavailable",Io="[object Decimal]",_e=Math.floor,Be=Math.pow,Fa=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,va=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Da=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,xo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ot=1e7,H=7,Wa=9007199254740991,qa=or.length-1,ti=sr.length-1,C={toStringTag:Io};C.absoluteValue=C.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),G(i)};C.ceil=function(){return G(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Rt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};C.comparedTo=C.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};C.cosine=C.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Ua(n,Lo(n,t)),n.precision=i,n.rounding=e,G(It==2||It==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Le(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Be(t,1/3),i=_e((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=pe(c.plus(l).times(a),c.plus(u),s+2,1),Le(a.d).slice(0,s)===(t=Le(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(G(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,G(n,i,m.rounding,e)};C.decimalPlaces=C.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-_e(this.e/H))*H,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(i){return pe(this,new this.constructor(i))};C.dividedToIntegerBy=C.divToInt=function(i){var e=this,t=e.constructor;return G(pe(e,new t(i),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(i){return this.cmp(i)===0};C.floor=function(){return G(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(i){return this.cmp(i)>0};C.greaterThanOrEqualTo=C.gte=function(i){var e=this.cmp(i);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/lr(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=nn(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=nn(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/lr(5,i)),r=nn(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(r,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,pe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?it(t,r,o):new t(0):new t(NaN):e.isZero()?it(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=it(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?G(new o(r),i,e,!0):(o.precision=t=n-r.e,r=pe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=it(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};C.inverseTangent=C.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=ti)return s=it(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=ti)return s=it(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/H+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),$=!0,G(s,l.precision=m,l.rounding=d,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&_e(this.e/H)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(i){return this.cmp(i)<0};C.lessThanOrEqualTo=C.lte=function(i){return this.cmp(i)<1};C.logarithm=C.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if($=!1,a=m+p,s=Lt(c,a),n=e?ar(l,a+10):Lt(i,a),u=pe(s,n,a,1),gn(u.d,r=m,d))do if(a+=10,s=Lt(c,a),n=e?ar(l,a+10):Lt(i,a),u=pe(s,n,a,1),!o){+Le(u.d).slice(r+1,r+15)+1==1e14&&(u=G(u,m+1,0));break}while(gn(u.d,r+=10,d));return $=!0,G(u,m,d)};C.minus=C.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return $?G(i,a,u):i}if(t=_e(i.e/H),l=_e(p.e/H),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/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=ot-1;--c[r],c[n]+=ot}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=cr(c,t),$?G(i,a,u):i):new y(u===3?-0:0)};C.modulo=C.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=pe(t,i.abs(),0,3,1),e.s*=i.s):e=pe(t,i,0,n.modulo,1),e=e.times(i),$=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return ni(this)};C.naturalLogarithm=C.ln=function(){return Lt(this)};C.negated=C.neg=function(){var i=new this.constructor(this);return i.s=-i.s,G(i)};C.plus=C.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),$?G(i,a,u):i;if(o=_e(m.e/H),n=_e(i.e/H),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/ot|0,c[r]%=ot;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=cr(c,n),$?G(i,a,u):i};C.precision=C.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Rt+i);return t.d?(e=Bo(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var i=this,e=i.constructor;return G(new e(i),i.e+1,e.rounding)};C.sine=C.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Xa(n,Lo(n,t)),n.precision=i,n.rounding=e,G(It>2?t.neg():t,i,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Le(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=_e((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(pe(s,o,t+2,1)).times(.5),Le(o.d).slice(0,t)===(e=Le(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),i=!n.times(n).eq(s));break}return $=!0,G(n,u,l.rounding,i)};C.tangent=C.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=pe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,G(It==2||It==4?t.neg():t,i,e,!0)):new n(NaN)};C.times=C.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=_e(l.e/H)+_e(i.e/H),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%ot|0,e=a/ot|0;o[r]=(o[r]+e)%ot|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=cr(o,t),$?G(i,m.precision,m.rounding):i};C.toBinary=function(i,e){return ii(this,2,i,e)};C.toDecimalPlaces=C.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(ze(i,0,Ot),e===void 0?e=n.rounding:ze(e,0,8),G(t,i+t.e+1,e))};C.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,!0):(ze(i,0,Ot),e===void 0?e=r.rounding:ze(e,0,8),n=G(new r(n),i+1,e),t=ft(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=ft(r):(ze(i,0,Ot),e===void 0?e=o.rounding:ze(e,0,8),n=G(new o(r),i+r.e+1,e),t=ft(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};C.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Bo(y)-p.e-1,s=o%H,e.d[0]=Be(10,s<0?H+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(Rt+a);i=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Le(y)),l=f.precision,f.precision=o=y.length*H*2;m=pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=pe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=pe(c,n,o,1).minus(p).abs().cmp(pe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};C.toHexadecimal=C.toHex=function(i,e){return ii(this,16,i,e)};C.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:ze(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?($=!1,t=pe(t,i,0,e,1).times(i),$=!0,G(t)):(i.s=t.s,t=i),t};C.toNumber=function(){return+this};C.toOctal=function(i,e){return ii(this,8,i,e)};C.toPower=C.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(Be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return G(a,n,o);if(e=_e(i.e/H),e>=i.d.length-1&&(t=c<0?-c:c)<=Wa)return r=So(u,a,t,n),i.s<0?new u(1).div(r):G(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Be(+a,c),e=t==0||!isFinite(t)?_e(c*(Math.log("0."+Le(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),r=ni(i.times(Lt(a,n+t)),n),r.d&&(r=G(r,n+5,1),gn(r.d,n,o)&&(e=n+10,r=G(ni(i.times(Lt(a,e+t)),e),e+5,1),+Le(r.d).slice(n+1,n+15)+1==1e14&&(r=G(r,n+1,0)))),r.s=s,$=!0,u.rounding=o,G(r,n,o))};C.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(ze(i,1,Ot),e===void 0?e=r.rounding:ze(e,0,8),n=G(new r(n),i,e),t=ft(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(ze(i,1,Ot),e===void 0?e=n.rounding:ze(e,0,8)),G(new n(t),i,e)};C.toString=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return G(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Le(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=H-n.length,t&&(o+=Ct(t)),o+=n;s=i[e],n=s+"",t=H-n.length,t&&(o+=Ct(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function ze(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Rt+i)}function gn(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=H,r=0):(r=Math.ceil((e+1)/H),e%=H),o=Be(10,H-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Be(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Be(10,e-3)-1,s}function ir(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Jr.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Ua(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/lr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=nn(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var pe=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,P,k,I,B,x,S,N,E,Q,v=n.constructor,j=n.s==r.s?1:-1,ee=n.d,re=r.d;if(!ee||!ee[0]||!re||!re[0])return new v(!n.s||!r.s||(ee?re&&ee[0]==re[0]:!re)?NaN:ee&&ee[0]==0||!re?j*0:j/0);for(u?(p=1,l=n.e-r.e):(u=ot,p=H,l=_e(n.e/p)-_e(r.e/p)),E=re.length,S=ee.length,g=new v(j),h=g.d=[],m=0;re[m]==(ee[m]||0);m++);if(re[m]>(ee[m]||0)&&l--,o==null?(I=o=v.precision,s=v.rounding):a?I=o+(n.e-r.e)+1:I=o,I<0)h.push(1),y=!0;else{if(I=I/p+2|0,m=0,E==1){for(d=0,re=re[0],I++;(m<S||d)&&I--;m++)B=d*u+(ee[m]||0),h[m]=B/re|0,d=B%re|0;y=d||m<S}else{for(d=u/(re[0]+1)|0,d>1&&(re=i(re,d,u),ee=i(ee,d,u),E=re.length,S=ee.length),x=E,A=ee.slice(0,E),P=A.length;P<E;)A[P++]=0;Q=re.slice(),Q.unshift(0),N=re[0],re[1]>=u/2&&++N;do d=0,c=e(re,A,E,P),c<0?(k=A[0],E!=P&&(k=k*u+(A[1]||0)),d=k/N|0,d>1?(d>=u&&(d=u-1),f=i(re,d,u),b=f.length,P=A.length,c=e(f,A,b,P),c==1&&(d--,t(f,E<b?Q:re,b,u))):(d==0&&(c=d=1),f=re.slice()),b=f.length,b<P&&f.unshift(0),t(A,f,P,u),c==-1&&(P=A.length,c=e(re,A,E,P),c<1&&(d++,t(A,E<P?Q:re,P,u))),P=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[P++]=ee[x]||0:(A=[ee[x]],P=1);while((x++<S||A[0]!==void 0)&&I--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,Po=y;else{for(m=1,d=h[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(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=H,s=e,l=m[d=0],u=l/Be(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/H),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=H,s=o-H+r,u=s<0?0:l/Be(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Be(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Be(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Be(10,(H-e%H)%H),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Be(10,H-o),m[d]=s>0?(l/Be(10,r-s)%Be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==ot&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ot)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function ft(i,e,t){if(!i.isFinite())return Co(i);var n,r=i.e,o=Le(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ct(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Ct(-r-1)+o,t&&(n=t-s)>0&&(o+=Ct(n))):r>=s?(o+=Ct(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Ct(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Ct(n))),o}function cr(i,e){var t=i[0];for(e*=H;t>=10;t/=10)e++;return e}function ar(i,e,t){if(e>qa)throw $=!0,t&&(i.precision=t),Error(ko);return G(new i(or),e,1,!0)}function it(i,e,t){if(e>ti)throw Error(ko);return G(new i(sr),e,t,!0)}function Bo(i){var e=i.length-1,t=e*H+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Ct(i){for(var e="";i--;)e+="0";return e}function So(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/H+4);for($=!1;;){if(t%2&&(o=o.times(e),Ao(o.d,s)&&(r=!0)),t=_e(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ao(e.d,s)}return $=!0,o}function wo(i){return i.d[i.d.length-1]&1}function Ko(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ni(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=G(o.times(i),u,1),t=t.times(++l),a=s.plus(pe(o,t,u,1)),Le(a.d).slice(0,u)===Le(s.d).slice(0,u)){for(r=m;r--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&gn(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 Lt(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,b=f.d,g=f.constructor,h=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?($=!1,l=A):l=e,g.precision=l+=y,t=Le(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(i),t=Le(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=ar(g,l+2,A).times(o+""),f=Lt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,h,$=!0):f;for(m=f,u=s=f=pe(f.minus(1),f.plus(1),l,1),d=G(f.times(f),l,1),r=3;;){if(s=G(s.times(d),l,1),c=u.plus(pe(s,new g(r),l,1)),Le(c.d).slice(0,l)===Le(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(ar(g,l+2,A).times(o+""))),u=pe(u,new g(p),l,1),e==null)if(gn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=pe(m.minus(1),m.plus(1),l,1),d=G(f.times(f),l,1),r=a=1;else return G(u,g.precision=A,h,$=!0);else return g.precision=A,u;u=c,r+=2}}function Co(i){return String(i.s*i.s/0)}function ri(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%H,t<0&&(n+=H),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=H;n<r;)i.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),$&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Ga(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),xo.test(e))return ri(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(va.test(e))t=16,e=e.toLowerCase();else if(Fa.test(e))t=2;else if(Da.test(e))t=8;else throw Error(Rt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=So(n,new n(t),o,o*2)),c=ir(e,t,ot),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=cr(c,l),i.d=c,$=!1,s&&(i=pe(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?Be(2,u):wn.pow(2,u))),$=!0,i)}function Xa(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:nn(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/lr(5,t)),e=nn(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function nn(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/H);for($=!1,u=t.times(t),a=new i(n);;){if(s=pe(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=pe(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function lr(i,e){for(var t=i;--e;)t*=i;return t}function Lo(i,e){var t,n=e.s<0,r=it(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return It=n?4:1,e;if(t=e.divToInt(r),t.isZero())It=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return It=wo(t)?n?2:3:n?4:1,e;It=wo(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ii(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(ze(t,1,Ot),n===void 0?n=p.rounding:ze(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Co(i);else{for(l=ft(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=ir(ft(d),10,r),d.e=d.d.length),m=ir(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=pe(i,d,t,n,0,r),m=i.d,o=i.e,c=Po),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Jr.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=ir(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Jr.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Ao(i,e){if(i.length>e)return i.length=e,!0}function za(i){return new this(i).abs()}function Ya(i){return new this(i).acos()}function Ha(i){return new this(i).acosh()}function ja(i,e){return new this(i).plus(e)}function Qa(i){return new this(i).asin()}function Za(i){return new this(i).asinh()}function $a(i){return new this(i).atan()}function Ja(i){return new this(i).atanh()}function eu(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=it(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?it(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=it(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(pe(i,e,o,1)),e=it(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(pe(i,e,o,1)),t}function tu(i){return new this(i).cbrt()}function nu(i){return G(i=new this(i),i.e+1,2)}function ru(i,e,t){return new this(i).clamp(e,t)}function iu(i){if(!i||typeof i!="object")throw Error(ur+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Ot,"rounding",0,8,"toExpNeg",-tn,0,"toExpPos",0,tn,"maxE",0,tn,"minE",-tn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(_e(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Rt+t+": "+n);if(t="crypto",r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(To);else this[t]=!1;else throw Error(Rt+t+": "+n);return this}function ou(i){return new this(i).cos()}function su(i){return new this(i).cosh()}function Ro(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,ho(o)){c.s=o.s,$?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ri(c,o.toString())}else if(u!=="string")throw Error(Rt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),xo.test(o)?ri(c,o):Ga(c,o)}if(r.prototype=C,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=iu,r.clone=Ro,r.isDecimal=ho,r.abs=za,r.acos=Ya,r.acosh=Ha,r.add=ja,r.asin=Qa,r.asinh=Za,r.atan=$a,r.atanh=Ja,r.atan2=eu,r.cbrt=tu,r.ceil=nu,r.clamp=ru,r.cos=ou,r.cosh=su,r.div=au,r.exp=uu,r.floor=cu,r.hypot=lu,r.ln=mu,r.log=du,r.log10=fu,r.log2=pu,r.max=yu,r.min=bu,r.mod=gu,r.mul=wu,r.pow=Au,r.random=hu,r.round=Pu,r.sign=ku,r.sin=Tu,r.sinh=Iu,r.sqrt=xu,r.sub=Bu,r.sum=Su,r.tan=Ku,r.tanh=Cu,r.trunc=Lu,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function au(i,e){return new this(i).div(e)}function uu(i){return new this(i).exp()}function cu(i){return G(i=new this(i),i.e+1,3)}function lu(){var i,e,t=new this(0);for($=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function ho(i){return i instanceof wn||i&&i.toStringTag===Io||!1}function mu(i){return new this(i).ln()}function du(i,e){return new this(i).log(e)}function pu(i){return new this(i).log(2)}function fu(i){return new this(i).log(10)}function yu(){return Ko(this,arguments,"lt")}function bu(){return Ko(this,arguments,"gt")}function gu(i,e){return new this(i).mod(e)}function wu(i,e){return new this(i).mul(e)}function Au(i,e){return new this(i).pow(e)}function hu(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:ze(i,1,Ot),n=Math.ceil(i/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(To);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=H,n&&i&&(r=Be(10,H-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function Pu(i){return G(i=new this(i),i.e+1,this.rounding)}function ku(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Tu(i){return new this(i).sin()}function Iu(i){return new this(i).sinh()}function xu(i){return new this(i).sqrt()}function Bu(i,e){return new this(i).sub(e)}function Su(){var i=0,e=arguments,t=new this(e[i]);for($=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return $=!0,G(t,this.precision,this.rounding)}function Ku(i){return new this(i).tan()}function Cu(i){return new this(i).tanh()}function Lu(i){return G(i=new this(i),i.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var wn=C.constructor=Ro(ei);or=new wn(or);sr=new wn(sr);var V=wn;import{PublicKey as ui}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ru}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as Oo,SYSVAR_RENT_PUBKEY as Ou}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var oi=[T({pubkey:Ru,isWritable:!1}),T({pubkey:Oo.programId,isWritable:!1}),T({pubkey:Ou,isWritable:!1})];function si({publicKey:i,transformSol:e}){let t=ai(i.toString());if(t instanceof ge)return e&&t.equals(Se)?te:t;if(e&&t.toString()===Se.toBase58())return te;if(typeof t=="string"){if(t===ge.default.toBase58())return ge.default;try{return new ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(i){try{return new ge(i)}catch{return i}}var mr=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),No=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new ge("SysvarRent111111111111111111111111111111111"),Mo=new ge("SysvarC1ock11111111111111111111111111111111"),rn=new ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Nu=new ge("Sysvar1nstructions1111111111111111111111111"),_o=Oo.programId,Tm=new ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Im=new ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),xm=new ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Bm=new ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Sm=new ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Km=new ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Cm=new ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Lm=new ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Rm=new ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Om=new ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Nm=new ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ge("So11111111111111111111111111111111111111112"),Se=ge.default;function on(i){return si({publicKey:i,transformSol:!0})}import{PublicKey as Mu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";var Nt={chainId:101,address:Mu.default.toBase58(),programId:Eo.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:Eo.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 ci=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Se.toBase58()||e instanceof ui&&Se.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new ui(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?ui.default:si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=ci;he.WSOL=new ci(W(L({},Re),{mint:Re.address}));import pr from"big.js";import Vu from"bn.js";import Fu from"decimal.js-light";import _u from"toformat";var Eu=_u,An=Eu;var dr=oe("module/fraction"),li=An(pr),hn=An(Fu),vu={[0]:hn.ROUND_DOWN,[1]:hn.ROUND_HALF_UP,[2]:hn.ROUND_UP},Du={[0]:pr.roundDown,[1]:pr.roundHalfUp,[2]:pr.roundUp},me=class{constructor(e,t=new Vu(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||dr.logWithError(`${e} is not an integer.`),e<=0&&dr.logWithError(`${e} is not positive.`),hn.set({precision:e+1,rounding:vu[n]});let r=new hn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||dr.logWithError(`${e} is not an integer.`),e<0&&dr.logWithError(`${e} is negative.`),li.DP=e,li.RM=Du[n]||1,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qu=oe("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new me(mi(n.decimals),mi(r.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qu.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var di=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},fr=di;fr.SOL=new di(Nt);import Uu from"bn.js";var Vo=new me(new Uu(100)),je=class extends me{toSignificant(e=5,t,n){return this.mul(Vo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Vo).toFixed(e,t,n)}};var qe=new Ye(0),vo=new Ye(1),Cd=new Ye(2),Ld=new Ye(3),Rd=new Ye(5),pi=new Ye(10),Od=new Ye(100),Nd=new Ye(1e3),Md=new Ye(1e4),Fo=9007199254740991;function Y(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof Ye)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ye(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Fo||i<=-Fo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ye(String(i))):typeof i=="bigint"?new Ye(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ye(0))}function mi(i){return pi.pow(Y(i))}function yr(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Xu=oe("Raydium_amount"),Wo=An(Gu);function zu(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Xu.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends me{constructor(t,n,r=!0,o){let s=new br(0),a=pi.pow(new br(t.decimals));if(r)s=Y(n);else{let u=new br(0),c=new br(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zu(n.toString(),t.decimals);u=Y(l),c=Y(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=oe(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 ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Wo.DP=this.token.decimals,new Wo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Do(i){return typeof i=="object"&&i!==null&&![he,ke,Yu,me,Hu,Je,je].some(e=>typeof e=="object"&&i instanceof e)}function Ue(i){return typeof i=="string"?ai(i):Array.isArray(i)?i.map(e=>Ue(e)):Do(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Ue(t)])):i}import{PublicKey as Tn,sendAndConfirmTransaction as Pr,Transaction as In,TransactionMessage as xn,VersionedTransaction as Bn}from"@solana/web3.js";import ec 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 ju,ComputeBudgetProgram as qo,Transaction as Go,TransactionMessage as Qu,Keypair as Xo,VersionedTransaction as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zu}from"@solana/spl-token";var Uo=oe("Raydium_txUtil"),Yo=1644;function gr(i){let e=[],t=[];return i.microLamports&&(e.push(qo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(_.SetComputeUnitPrice)),i.units&&(e.push(qo.setComputeUnitLimit({units:i.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function sn(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function fi(i,e){i.length<1&&Uo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Uo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Go;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Yo}catch{return!1}}function ue(i,e){let[t,n]=ju.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Pn({instructions:i,payer:e,signers:t}){return fi(i,[e,...t])}function kn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xo.generate().publicKey.toString()}){let o=new Qu({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zo(o).serialize()).toString("base64").length<Yo}catch{return!1}}var $u=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function Gt(i){let e=[];return i.forEach(t=>{t instanceof Go&&(t.recentBlockhash||(t.recentBlockhash=Zu.toBase58()),t.feePayer||(t.feePayer=Xo.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zo&&(n=$u(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Ho,AddressLookupTableAccount as Ar}from"@solana/web3.js";import{PublicKey as Ju}from"@solana/web3.js";import{getTransferFeeConfig as Pp,unpackMint as kp}from"@solana/spl-token";var yi=oe("Raydium_accountInfo_util");async function yt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=L({batchRequest:!1},t),o=bi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=bi(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&yi.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"&&yi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Ju(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&yi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function wr(i,e,t){let n=await yt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>W(L({},r),{accountInfo:n[o]}))}async function gi({connection:i,address:e}){let t=await yt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Ho(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Ar({key:s,state:Ar.deserialize(o.data)});n[s.toString()]=a,hr[s.toString()]=a}return n}var hr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Ar({key:new Ho("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Ar.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 kr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}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 ec.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}=gr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Tn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(L({},t||{})):this.build(t)}build(e){let t=new In;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await sn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),Gt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Pr(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await sn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Pr(this.connection,b,a[g].find(h=>h.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,A)=>(h.recentBlockhash=y,a[A].length&&h.sign(...a[A]),h));Gt(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],P=async()=>{if(!g[h])return;let k=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:k,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(k,I=>{let B=A.findIndex(x=>x.txId===k);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:A.map(k=>k.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let P=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});h.push(P)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=Ae(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=L(L({},this.cluster==="devnet"?{}:hr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Tn(p));let c=await gi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new xn({payerKey:this.feePayer,recentBlockhash:r?Tn.default.toBase58():await sn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Bn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),Gt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),Gt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,h)=>{a[h].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let h=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],h=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,P=>{let k=g.findIndex(I=>I.txId===A);k>-1&&(g[k].status=P.err?"error":"success"),m==null||m([...g]),P.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ae(c,["computeBudgetConfig"]),r=t?gr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(L({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Tn(f));if(u.length<12&&Pn({instructions:d,payer:this.feePayer,signers:y})||Pn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new In().add(...r.instructions,...u)):s.push(new In().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);Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new In().add(...r.instructions,...u)):s.push(new In().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 b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await sn(this.connection);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),Gt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await Pr(this.connection,h,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,h)=>await Pr(this.connection,g,a[h].find(A=>A.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let h=0,A=[],P=async()=>{if(!g[h])return;let k=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:k,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(k,I=>{let B=A.findIndex(x=>x.txId===k);B>-1&&(A[B].status=I.err?"error":"success"),d==null||d([...A]),I.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:A.map(k=>k.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let P=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});h.push(P)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=b,o=Ae(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=L(L({},this.cluster==="devnet"?{}:hr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let g of a)s[g]===void 0&&u.push(new Tn(g));let c=await gi({connection:this.connection,address:u});for(let[g,h]of Object.entries(c))s[g]=h;let l=t?gr(t):{instructions:[],instructionTypes:[]},m=await sn(this.connection),d=this.signers.reduce((g,h)=>W(L({},g),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let h=[...f,g],A=t?[...l.instructions,...h]:h;if(f.length<12&&kn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||kn({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let P={};for(let k of[...new Set(a)])s[k]!==void 0&&(P[k]=s[k]);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Bn(k))}else{let k=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Bn(k))}y.push(Array.from(new Set(f.map(k=>k.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(k=>d[k]).filter(k=>k!==void 0)),f=[g]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Bn(A))}else{let A=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Bn(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:h,onTxUpdate:A,recentBlockHash:P,skipPreflight:k=!0}=g||{};if(p.map(async(B,x)=>{y[x].length&&B.sign(y[x]),P&&(B.message.recentBlockhash=P)}),Gt(p),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();if(p.forEach((S,N)=>{y[N].find(E=>E.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),h){let S=[];for(let N of p){let E=await this.connection.sendTransaction(N,{skipPreflight:k}),{lastValidBlockHeight:Q,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:Q,signature:E},"confirmed"),S.push(E)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>{let N=await this.connection.sendTransaction(S,{skipPreflight:k});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let x=0,S=[],N=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:k});S.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...S]),x++,this.connection.onSignature(E,Q=>{let v=S.findIndex(j=>j.txId===E);v>-1&&(S[v].status=Q.err?"error":"success"),A==null||A([...S]),Q.err||N()},"processed"),this.connection.getSignatureStatus(E)};return N(),{txIds:[],signedTxs:B}}else{let x=[];for(let S=0;S<B.length;S+=1){let N=await this.connection.sendTransaction(B[S],{skipPreflight:k});x.push(N)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var at=class{constructor(e){this._owner=e}get publicKey(){return at.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return at.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return at.isKeyPair(this._owner)}get isPublicKey(){return at.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!at.isKeyPair(e)}};function bi(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ce}from"@solana/web3.js";var jo=new ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qo=new ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Sn=new ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Gp=new ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Xp=new ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),zp=new ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zo=new ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Yp=new ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Hp=new ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),jp=new ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Qp=new ce("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tc=new ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nc=new ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),rc=new ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ic=new ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Zp=new ce("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),$p=new ce("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Jp=new ce("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),oc=new ce("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),sc=new ce("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ac=new ce("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Kn={IDO_PROGRAM_ID_V1:tc,IDO_PROGRAM_ID_V2:nc,IDO_PROGRAM_ID_V3:rc,IDO_PROGRAM_ID_V4:ic};var ef={SERUM_MARKET:ce.default,OPENBOOK_MARKET:new ce("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ce.default,FarmV3:new ce("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ce("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ce("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ce("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ce("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ce("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ce("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:oc,CREATE_CPMM_POOL_AUTH:sc,CREATE_CPMM_POOL_FEE_ACC:ac,FEE_DESTINATION_ID:new ce("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as uc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cc}from"@solana/spl-token";function we(i,e,t){return ue([i.toBuffer(),(t!=null?t:cc).toBuffer(),e.toBuffer()],new uc("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ut from"bn.js";var Cn=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=W(L({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new ut(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Cn){let u=new ut(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Ln(i.mul(new ut(Cn)),new ut(Cn-o.transferFeeBasisPoints)),c=new ut(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Ln(l.mul(new ut(o.transferFeeBasisPoints)),new ut(Cn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ln(i.mul(new ut(o.transferFeeBasisPoints)),new ut(Cn)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Xt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Ln(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ut(0))?t.add(new ut(1)):t}var Oe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Sf=L({},Oe);var $o="ray_tab_hash",wi="ray_req_hash",lc=()=>{if(typeof window===void 0)return"";let i=sessionStorage.getItem($o);return i||(i=`ray-${Date.now()}`,sessionStorage.setItem($o,i)),i},Ir=async n=>{var r=n,{logCount:i=1e3,removeLastLog:e}=r,t=Ae(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(wi)||"[]").slice(0,i-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(L({},t),{time:Date.now(),session:lc()}));try{localStorage.setItem(wi,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(wi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Ir(W(L({},t),{logCount:i,removeLastLog:!0}))}};var xr=oe("Raydium_Api"),Ai=new Map;var Br=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=r||1e3,this.api=dc.create({baseURL:this.urlConfigs.BASE_HOST||Oe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return xr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(xr.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&&Ir({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),xr.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&&Ir({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),xr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Oe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Oe.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(r=>r.numSlots);return n.reduce((r,o)=>r+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Oe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Oe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Oe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Oe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Oe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Oe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Oe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>Ai.has(s)?(n.push(Ai.get(s)),!1):!0),o=[];return r.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Oe.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Ai.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&on(t).toBase58(),n&&n!=="undefined"?on(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Oe.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Oe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Oe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Oe.CHECK_AVAILABILITY)).data}};var Sr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Jo="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as Et,AccountLayout as cn,TOKEN_2022_PROGRAM_ID as Wc}from"@solana/spl-token";import{PublicKey as _r,SystemProgram as qc}from"@solana/web3.js";var hi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new kr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(hi(e))}logInfo(...e){this.logger.info(hi(e))}logAndCreateError(...e){let t=hi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as _c,createCloseAccountInstruction as Ec,createTransferInstruction as Vc,TOKEN_PROGRAM_ID as un}from"@solana/spl-token";import{PublicKey as Fc,SystemProgram as vc}from"@solana/web3.js";import Dc from"bn.js";import{PublicKey as ps,Keypair as Rc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oc}from"@solana/spl-token";import Nc from"bn.js";import{PublicKey as Ic}from"@solana/web3.js";import is,{isBN as os}from"bn.js";import{bits as pc,BitStructure as ay,blob as fc,Blob as uy,cstr as cy,f32 as ly,f32be as my,f64 as dy,f64be as py,greedy as fy,Layout as yc,ns64 as yy,ns64be as by,nu64 as bc,nu64be as gy,offset as wy,s16 as Ay,s16be as hy,s24 as Py,s24be as ky,s32 as gc,s32be as Ty,s40 as Iy,s40be as xy,s48 as By,s48be as Sy,s8 as Ky,seq as wc,struct as Cy,Structure as Ac,u16 as hc,u16be as Ly,u24 as Ry,u24be as Oy,u32 as Pc,u32be as Ny,u40 as My,u40be as _y,u48 as Ey,u48be as Vy,u8 as kc,UInt as Tc,union as Fy,Union as vy,unionLayoutDiscriminator as Dy,utf8 as Wy}from"@solana/buffer-layout";var Kr=yc,es=Ac;var Pi=Tc;var ts=kc,bt=hc;var ki=Pc;var ns=bc;var Ne=gc;var rs=wc;var be=fc;var Ti=pc;var zt=class extends Kr{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new is(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new is(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},Cr=class extends Kr{constructor(t){super(8,t);this._lower=Ti(ki(),!1),this._upper=Ti(ki(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return L(L({},r),o)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function F(i){return new Pi(1,i)}function Ge(i){return new Pi(4,i)}function w(i){return new zt(8,!1,i)}function X(i){return new zt(16,!1,i)}function ss(i){return new zt(1,!0,i)}function Rr(i){return new zt(8,!0,i)}function as(i){return new zt(16,!0,i)}var Lr=class extends Kr{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(i){return new Lr(be(32),e=>new Ic(e),e=>e.toBuffer(),i)}function Ee(i){return new Lr(ts(),xc,Bc,i)}function xc(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Bc(i){return i?1:0}var Ii=class extends es{decode(e,t){return super.decode(e,t)}};function M(i,e,t){return new Ii(i,e,t)}function q(i,e,t){let n,r=typeof e=="number"?e:os(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=os(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 rs(i,r,t)}var an=M([K("mint"),K("owner"),w("amount"),Ge("delegateOption"),K("delegate"),F("state"),Ge("isNativeOption"),w("isNative"),w("delegatedAmount"),Ge("closeAuthorityOption"),K("closeAuthority")]);function Sc(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function xi(i,...e){if(!Sc(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Bi(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function us(i,e){xi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Nr=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ct=(i,e)=>i<<32-e|i>>>e;var nb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Kc(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Si(i){return typeof i=="string"&&(i=Kc(i)),xi(i),i}var Or=class{clone(){return this._cloneInto()}},rb={}.toString;function cs(i){let e=n=>i().update(Si(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Cc(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var ls=(i,e,t)=>i&e^~i&t,ms=(i,e,t)=>i&e^i&t^e&t,Mr=class extends Or{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Nr(this.buffer)}update(e){Bi(this);let{view:t,buffer:n,blockLen:r}=this;e=Si(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Nr(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Bi(this),us(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Cc(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Nr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Lc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_t=new Uint32Array(64),Ki=class extends Mr{constructor(){super(64,32,8,!1),this.A=Mt[0]|0,this.B=Mt[1]|0,this.C=Mt[2]|0,this.D=Mt[3]|0,this.E=Mt[4]|0,this.F=Mt[5]|0,this.G=Mt[6]|0,this.H=Mt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)_t[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=_t[m-15],p=_t[m-2],y=ct(d,7)^ct(d,18)^d>>>3,f=ct(p,17)^ct(p,19)^p>>>10;_t[m]=f+_t[m-7]+y+_t[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ct(a,6)^ct(a,11)^ct(a,25),p=l+d+ls(a,u,c)+Lc[m]+_t[m]|0,f=(ct(n,2)^ct(n,13)^ct(n,22))+ms(n,r,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){_t.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ds=cs(()=>new Ki);var hb=oe("Raydium_Util");function fs({owner:i,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:o,account:s}of t.value){let a=an.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:we(i,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),r.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ps.default,amount:new Nc(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Ve({fromPublicKey:i,programId:e=Oc}){let t=Rc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Mc(i,t,e),seed:t}}function Mc(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=ds(n);return new ps(r)}function Ci(i){let{mint:e,tokenAccount:t,owner:n,programId:r=un}=i;return _c(t,e,n,r)}function xt(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=un}=i;return Ec(e,t,r,n,o)}async function gt(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(an.span,n),u=Y(t).add(new Dc(a)),c=Ve({fromPublicKey:r,programId:un});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[vc.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:an.span,programId:un}),Ci({mint:new Fc(Re.address),tokenAccount:c.publicKey,owner:o,programId:un})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[xt({tokenAccount:c.publicKey,payer:r,owner:o})]}}function Rn({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=un}){return Vc(i,e,t,BigInt(String(n)),r,o)}var On=class extends Pe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}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 we(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 r=L(L({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Et},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Wc},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=fs({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=Et,associatedOnly:r=!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&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new _r(t.tokenProgram||Et),m=this.getAssociatedTokenAccount(n,new _r(l)),d=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,h)=>g.accountInfo.amount.lt(h.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=Li(s,m,s,n,l);if(c){let h=await this.scope.connection.getAccountInfo(m);if(h===null)(y=p.instructions)==null||y.push(g),p.instructionTypes.push(_.CreateATA);else if(!(h.owner.equals(l)&&cn.decode(h.data).mint.equals(n)&&cn.decode(h.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(te)&&r.amount){let h=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...h.instructions||[]),p.endInstructions.push(...h.endInstructions||[]),p.instructionTypes.push(...h.instructionTypes||[]),p.endInstructionTypes.push(...h.endInstructionTypes||[]),r.amount&&(p.instructions.push(Rn({source:h.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:Et})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(xt({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:p}}else if(n.equals(te)){let g=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(b=r.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=Ve({fromPublicKey:s,programId:l}),h=await this.scope.connection.getMinimumBalanceForRentExemption(cn.span),A=qc.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:h,space:cn.span,programId:l});return p.instructions.push(A,Ci({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(xt({owner:s,payer:r.payer||s,tokenAccount:g.publicKey,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Et,autoUnwrapWSOLToSOL:r}){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 Li(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return r&&te.toBase58()===t.toBase58()&&(a.endInstructions=[xt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:o,programId:s=Et,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new _r(te).equals(o)){let p=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return L({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Et)&&cn.decode(f.data).mint.equals(o)&&cn.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:r=Et,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new _r(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ae(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ae(m,["tokenAccount"]);u=d,c.addInstruction(p)}return L({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as ol}from"@solana/spl-token";import{PublicKey as fe,SystemProgram as sl}from"@solana/web3.js";import{PublicKey as gs}from"@solana/web3.js";var Ri=M([F("instruction")]),Oi=M([F("instruction")]),Uc=M([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),X("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Gc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),X("perShareReward"),w("lastSlot"),w("perSlotReward")]),Xc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),X("perShareRewardA"),w("perSlotRewardA"),F("option"),K("rewardVaultB"),be(7),w("totalRewardB"),X("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),zc=M([w(),w("state"),w("nonce"),w("validRewardTokenNum"),X("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(Uc,5,"rewardInfos"),K("creator"),K(),q(w(),32,"padding")]),Yc=new Proxy(Gc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(L({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Hc=new Proxy(Xc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(L({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Er=new Proxy(zc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(L({},r),{version:6,rewardInfos:r.rewardInfos.map(o=>{var s;return W(L({},o),{rewardType:((s=Object.entries(Vt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),jc=M([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ni=M([F("instruction"),w("nonce"),q(jc,5,"rewardTimeInfo")]),Mi=M([F("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),_i=M([F("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),$b=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Ei=M([w("state"),K("id"),K("owner"),w("deposited"),q(X(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),Jb=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ys=M([w("state"),K("id"),K("owner"),w("deposited"),q(X(),2,"rewardDebts"),q(w(),17)]),bs=M([w(),w("state"),K("id"),K("owner"),w("deposited"),q(X(),5,"rewardDebts"),q(w(),16)]),Qe=M([F("instruction"),w("amount")]),Qc=M([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ss("digitShift"),q(F(),7,"reserved1"),q(w(),7,"reserved2")]),Zc=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(F(),32,"reserved1"),q(Qc,4,"votingMints"),Rr("timeOffset"),F("bump"),q(F(),7,"reserved2"),q(w(),11,"reserved3")]),$c=M([Rr("startTime"),Rr("endTime"),F("kind"),q(F(),15,"reserved")]),Jc=M([q($c,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),F("votingMintConfigIdx"),q(F(),29,"reserved")]),el=M([be(8),K("voterAuthority"),K("registrar"),q(Jc,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),q(F(),94,"reserved")]);var ag=oe("Raydium_farm_config"),ws=new gs("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),As=new gs("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var hs={3:Ei,5:ys,6:bs},Vi=i=>[3,5,6].indexOf(i)!==-1,Fi=i=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=i,r=`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: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=o[e])==null?void 0:s.call(o)},Vt={"Standard SPL":0,"Option tokens":1},lt={[jo.toString()]:3,[Qo.toString()]:5,[Sn.toString()]:6};import{PublicKey as le,SystemProgram as Ts,SYSVAR_RENT_PUBKEY as rl,SYSVAR_CLOCK_PUBKEY as Vr,TransactionInstruction as mt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Fg,TOKEN_PROGRAM_ID as Ft,ASSOCIATED_TOKEN_PROGRAM_ID as vg}from"@solana/spl-token";import Is from"bn.js";import tl from"bn.js";var nl=oe("Raydium.farm.util");function Nn({programId:i,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function wt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Ps=({programId:i,poolId:e})=>ue([e.toBuffer()],i);function ks(i){return{isSet:new tl(1),rewardPerSecond:Y(i.perSecond),rewardOpenTime:Y(i.openTime),rewardEndTime:Y(i.endTime),rewardType:Y(Vt[i.rewardType])}}function vi(i){return Y(i.endTime).sub(Y(i.openTime)).mul(Y(i.perSecond))}function Di(i){let e=hs[i];return e||nl.logWithError("invalid version",i),e}var il=oe("Raydium_farm_instruction"),$g={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 xs(i){let{version:e,id:t,ledger:n,programId:r,owner:o}=i,s={3:9,5:10}[e];s||il.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ri.span);Ri.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:rl,isWritable:!1})];return{instruction:new mt({programId:r,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function Bs(i){var n;let e=Buffer.alloc(Ni.span);Ni.encode({instruction:0,nonce:new Is(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...oi,T({pubkey:i.farmId}),T({pubkey:i.farmAuthority,isWritable:!1}),T({pubkey:i.lpVault}),T({pubkey:i.lpMint,isWritable:!1}),T({pubkey:i.lockVault}),T({pubkey:i.lockMint,isWritable:!1}),T({pubkey:(n=i.lockUserAccount)!=null?n:Se}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(T({pubkey:r.rewardMint,isWritable:!1}),T({pubkey:r.rewardVault}),T({pubkey:r.userRewardToken}));return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function Ss(i){let e=Buffer.alloc(Oi.span);Oi.encode({instruction:5},e);let t=[T({pubkey:Ft,isWritable:!1}),T({pubkey:i.id}),T({pubkey:i.authority,isWritable:!1}),T({pubkey:i.lpVault,isWritable:!1}),T({pubkey:i.rewardVault}),T({pubkey:i.userRewardToken}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function Wi({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let o=Buffer.alloc(Mi.span);Mi.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},o);let s=[T({pubkey:Ft,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:n.programId,keys:s,data:o})}function qi({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let o=Buffer.alloc(_i.span);_i.encode({instruction:4,isSet:new Is(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(Vt[r.rewardType])},o);let s=[...oi,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:r.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:t.programId,keys:s,data:o})}function Mn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=wt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:2,amount:Y(s)},l);let m=[T({pubkey:Ft,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}function _n(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:12,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function En(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ks(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:10,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Cs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ls(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=wt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:1,amount:Y(s)},l);let m=[T({pubkey:Ft,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}var Vn=class extends Pe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Se)){let n=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:vi(W(L({},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:r=Sn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new fe(e.lpMint.address),lockInfo:{lockMint:ws,lockVault:As},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ve({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Er.span);u.addInstruction({instructions:[sl.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Er.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ps({programId:new fe(a.programId),poolId:l.publicKey}),y=Nn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let P of a.rewardInfos){P.openTime>=P.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",P.openTime.toString()),isNaN(Vt[P.rewardType])&&this.logAndCreateError("rewardType error",P.rewardType),Number(P.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",P.perSecond),f.push(ks(P));let{rewardPubKey:k,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:P,payer:c});I&&u.addInstruction(I),k||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=P.mint.equals(Se)?new fe(Re.address):P.mint;b.push({rewardMint:B,rewardVault:Nn({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:k})}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:h,instructionType:A}=Bs({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:[h],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((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(Se)?new fe(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new fe(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:Se,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:[Wi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((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(Se)?new fe(Re.address):m.mint,p=a.rewardInfos.findIndex(A=>new fe(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Se,{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 h=Wi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Se)?new fe(Re.address):r.mint,m=Nn({programId:new fe(n.programId),poolId:new fe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[qi({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Se)?new fe(Re.address):l.mint,d=Nn({programId:new fe(n.programId),poolId:new fe(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=qi({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(L({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,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=lt[d];Vi(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new fe(n.programId),new fe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=wt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=we(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let P=b.lpMint,k=A[P.address];k||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let v of m){let j=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:re,instructionParams:rt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new fe(v.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=re,rt&&h.addInstruction(rt)}A[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=Di(p).decode(x.data)),n.programId!==Sn.toString()&&!B){let{instruction:v,instructionType:j}=xs({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[v],instructionTypes:[j]})}let S=Fi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});S&&this.logAndCreateError(S);let N={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:k,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new fe(v))},E=p===6?Ls(N):p===5?Cs(N):Ks(N),Q={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return h.addInstruction({instructions:[E],instructionTypes:[Q[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,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=lt[n.programId];Vi(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 S of this.scope.account.tokenAccounts)if(u){let N=we(this.scope.ownerPubKey,S.mint).publicKey;S.publicKey&&N.equals(S.publicKey)&&(b[S.mint.toString()]=S.publicKey)}else b[S.mint.toString()]=S.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let S=wt({programId:new fe(n.programId),poolId:new fe(n.id),owner:this.scope.ownerPubKey,version:p}),N=await this.scope.connection.getAccountInfo(S);N||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:N}),Di(p).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new fe(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=S,N&&f.addInstruction(N)}b[g.toString()]=A;let P=[];for(let S of d){let N=s&&S.mint.address===te.toString(),E=b[S.mint.address];if(!E){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.mint.programId,mint:new fe(S.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,v&&f.addInstruction(v)}b[S.mint.address]=E,P.push(E)}let k=Fi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:P});k&&this.logAndCreateError(k);let I={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:P,userAuxiliaryLedgers:l==null?void 0:l.map(S=>new fe(S))},B=p===6?Mn(I):p===5?_n(I):En(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Se.toString()?new fe(Re.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Se,c=this.createTxBuilder(),l;if(t.equals(Se)){let y=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:vi(W(L({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[ol(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ss({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.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:r,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=we(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>W(L({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=lt[f],P=b.address,k=n&&P===te.toString(),I=m[P];if(!I){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new fe(P),notUseTokenAccount:k,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:k?!1:o,checkCreateATAOwner:s});I=Q,v&&l.addInstruction(v)}m[P.toString()]=I;let B=[];for(let Q of g){let v=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new fe(Q.mint.address),notUseTokenAccount:v,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,re&&l.addInstruction(re)}m[Q.mint.address]=j,B.push(j)}let x=p[h],S={amount:qe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new fe(Q))},N=A===6?Mn(S):A===5?_n(S):En(S),E={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as He}from"@solana/web3.js";import{NATIVE_MINT as ma,TOKEN_PROGRAM_ID as Xr}from"@solana/spl-token";var Pw=M([Ge("mintAuthorityOption"),K("mintAuthority"),w("supply"),F("decimals"),F("isInitialized"),Ge("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as xw}from"@solana/web3.js";import{MintLayout as Sw,TOKEN_PROGRAM_ID as Cw}from"@solana/spl-token";var Rs=i=>new he({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});import{TOKEN_PROGRAM_ID as Fr,ASSOCIATED_TOKEN_PROGRAM_ID as hl}from"@solana/spl-token";import{PublicKey as At,TransactionInstruction as mn,SystemProgram as vs,SYSVAR_RENT_PUBKEY as Jw}from"@solana/web3.js";var Ui=M([F("instruction"),w("amountIn"),w("minAmountOut")]),Gi=M([F("instruction"),w("maxAmountIn"),w("amountOut")]),Uw=M([F("instruction"),F("nonce")]),al=M([F("instruction"),F("nonce"),w("startTime")]),Gw=M([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"),X("swapBaseInAmount"),X("swapQuoteOutAmount"),w("swapBase2QuoteFee"),X("swapQuoteInAmount"),X("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),q(w(),3,"padding")]),Xw=M([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"),X("swapBaseInAmount"),X("swapQuoteOutAmount"),X("swapQuoteInAmount"),X("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(w(),64,"padding")]),Xi=M([F("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),zi=M([F("instruction"),w("amountIn")]);var Os=M([w("fee")]);import{PublicKey as ul}from"@solana/web3.js";var ln=new ul("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ht=5e4,cl=M([w("x"),w("y"),w("price")]),ll=M([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(cl,Ht,"DataElement")]);function ml(i,e){return[0,Ht-2]}function dl(i){return[0,Ht-2]}function pl(i){return[0,Ht-2]}function fl(i,e,t){let[n,r]=ml(e,t),o=n,s=r,a=0,u=e*i.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Ht-2)return[a,a,!1];let c=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.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 Yi(i,e,t){let[n,r,o]=fl(i,e,t);if(!o)return 0;if(n===r){let s=i.DataElement[n].x;return e*i.multiplier/s}else{let s=i.DataElement[n].x,a=i.DataElement[n].y,u=i.DataElement[r].x,c=i.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*i.multiplier*l/p}}function Yt(i,e,t){return e*i.multiplier/t}function Ns(i,e,t){return e*t/i.multiplier}function yl(i,e){let[t,n]=dl(e),r=t,o=n,s=0,a=e;for(;r<o;){if(s=Math.floor((o+r)/2),s<=0||s>Ht-2)return[s,s,!1];let u=i.DataElement[s].x,c=i.DataElement[s-1].x,l=i.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];r=s+1}}return[s,s,!1]}function bl(i,e){let[t,n]=pl(e),r=t,o=n,s=0,a=e;for(;r<=o;){if(s=Math.floor((o+r)/2),s<=0||s>=Ht-2)return[s,s,!1];let u=i.DataElement[s].y,c=i.DataElement[s-1].y,l=i.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)r=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 Ms(i,e,t,n){let r=n?e+t:e-t,[o,s,a]=yl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].y,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-(r-u)*i.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*i.multiplier/l),[y,f,!1,a]}}}function gl(i,e,t,n){let r=n?e-t:e+t,[o,s,a]=bl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].x,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-r)/i.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/i.multiplier),[y,f,!1,a]}}}function wl(i,e){let t=Ms(i,e,0,!1);return t[3]?t[0]:0}function _s(i,e,t,n){let r=Yi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!0,[c,l,m,d]=Ms(i,o,a,u);if(!d)return 0;if(m)return n*i.multiplier/c;{let p=s-l;return Ns(i,p,r)}}function Es(i,e,t,n){let r=Yi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!1,[c,l,m,d]=gl(i,s,a,u);if(!d)return 0;if(m)return n*c/i.multiplier;{let p=o-l;return Ns(i,p,r)}}function Al(i){let e=ll.decode(i);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 Vs(i,e,t,n){let r=wl(i,Yt(i,e,Yi(i,e,t)))/i.multiplier;return n?r:1/r}var Fn=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(ln);e&&(this._layoutData=Al(e==null?void 0:e.data))}}};var Fs=oe("Raydium_liquidity_instruction");function Ds(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:o,fixedSide:s}=i,a=Buffer.alloc(Xi.span);Xi.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(o),fixedSide:s==="base"?qe:vo},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:new At(e.id)}),T({pubkey:new At(t.authority),isWritable:!1}),T({pubkey:new At(t.openOrders),isWritable:!1}),T({pubkey:new At(t.targetOrders)}),T({pubkey:new At(e.lpMint.address)}),T({pubkey:new At(t.vault.A)}),T({pubkey:new At(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:ln})),u.push(T({pubkey:new At(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new At(t.marketEventQueue),isWritable:!1})),new mn({programId:new At(e.programId),keys:u,data:a})}function Hi(i){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=i,o=Ue(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(zi.span);zi.encode({instruction:4,amountIn:Y(r)},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:ln})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new mn({programId:o.programId,keys:u,data:a})}return new mn({programId:o.programId,keys:[]})}function Ws({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,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:h,openTime:A,coinAmount:P,pcAmount:k,ammConfigId:I,feeDestinationId:B}){let x=M([F("instruction"),F("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),S=[{pubkey:Fr,isSigner:!1,isWritable:!1},{pubkey:hl,isSigner:!1,isWritable:!1},{pubkey:vs.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:B,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}],N=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:h,openTime:A,coinAmount:P,pcAmount:k},N),{instruction:new mn({keys:S,programId:i,data:N}),instructionType:_.AmmV4CreatePool}}function Pl({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Ue(i),s=Buffer.alloc(Ui.span);Ui.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new mn({programId:o.programId,keys:a,data:s})}function kl({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Ue(i),s=Buffer.alloc(Gi.span);Gi.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[T({pubkey:vs.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:o.programId,keys:a,data:s})}function qs(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pl(W(L({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return kl(W(L({},a),{maxAmountIn:r,amountOut:o}),t);Fs.logWithError("invalid params","params",i)}throw Fs.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Me,TOKEN_2022_PROGRAM_ID as qt,ASSOCIATED_TOKEN_PROGRAM_ID as ra}from"@solana/spl-token";import{PublicKey as D,TransactionInstruction as dt,SystemProgram as dn,Keypair as no}from"@solana/web3.js";import ia from"bn.js";import Rl from"bn.js";function vr(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function ji(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Qi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function vn(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Us(i,e){return vn(i,e)?null:ji(i,e)}function Gs(i,e){return vn(i,e)?null:Qi(i,e)}var pA=Buffer.from("amm_config","utf8"),Tl=Buffer.from("pool","utf8"),Il=Buffer.from("pool_vault","utf8"),xl=Buffer.from("pool_reward_vault","utf8"),Xs=Buffer.from("position","utf8"),Bl=Buffer.from("tick_array","utf8"),Sl=Buffer.from("operation","utf8"),Kl=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zs(i,e,t,n){return ue([Tl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Zi(i,e,t){return ue([Il,e.toBuffer(),t.toBuffer()],i)}function Ys(i,e,t){return ue([xl,e.toBuffer(),t.toBuffer()],i)}function de(i,e,t){return ue([Bl,e.toBuffer(),vr(t)],i)}function jt(i,e,t,n){return ue([Xs,e.toBuffer(),vr(t),vr(n)],i)}function et(i,e){return ue([Xs,e.toBuffer()],i)}function Dr(i){return ue([Buffer.from("metadata","utf8"),rn.toBuffer(),i.toBuffer()],rn)}function Dn(i){return ue([Sl],i)}function ht(i,e){return ue([Kl,e.toBuffer()],i)}import Pt from"bn.js";var xe=new Pt(0),kt=new Pt(1),Bt=new Pt(-1),Ze=new Pt(1).shln(64),Wr=new Pt(1).shln(128),$i=Ze.sub(kt),Wn=64,Hs=Wr.subn(1),Fe=-443636,Xe=-Fe,vt=new Pt("4295048016"),Dt=new Pt("79226673521066979257578248091"),js=16,Qs="59543866431248",Zs="184467440737095516",$s="15793534762490258745",qr=new Pt(10).pow(new Pt(6));var Js={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:[]},bA=new Pt("18446744073700000000");var Cl=15,se=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(r,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Cl/2));for(let p=0;p<l.length;p++){let{publicKey:y}=de(t,n,l[p]);u.push(y)}let m=(await yt(e,u)).map(p=>p!==null?qn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(L({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=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,r,o){let s=Math.floor(e/se.tickCount(t)),a=n?U.searchLowBitFromStart(r,o,s-1,1,t):U.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ke-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<Ke;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=U.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ke;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=de(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>Xe)return!1;let n=U.getTickArrayStartIndexByTick(Fe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ke*e}};import ne from"bn.js";import{PublicKey as Wt}from"@solana/web3.js";import Te from"bn.js";var Ji=14,St=class{static maxTickInTickarrayBitmap(e){return e*Ke*Qt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!se.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-se.tickCount(n):t+se.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ke,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Us(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=Gs(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-se.tickCount(n)}}}},Un=class{static getBitmapOffset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=St.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;if(Xe<=t)throw Error(`extensionTickBoundary check error: ${Xe}, ${t}`);if(n<=Fe)throw Error(`extensionTickBoundary check error: ${n}, ${Fe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=se.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=St.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=U.mergeTickArrayBitmap(e).shln(Qt-1-a),c=vn(512,u)?null:ji(512,u);if(c!==null){let l=t-c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=vn(512,u)?null:Qi(512,u);if(c!==null){let l=t+c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-se.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%St.maxTickInTickarrayBitmap(t),r=Math.floor(n/se.tickCount(t));return e<0&&n!=0&&(r=Qt-r),r}};import Tt from"bn.js";var Gn=class{static getfeeGrowthInside(e,t,n){let r=new Tt(0),o=new Tt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Tt(0),a=new Tt(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,r),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ze),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ze),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ze),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ze),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,Ze),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,Ze),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Tt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Tt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Tt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Tt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,h,A;let a=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),u=J.getSqrtPriceX64FromTick(t.tickLower),c=J.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=ae.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),ye(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[ye(new Tt(new V(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ye(new Tt(new V(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ea}from"@solana/spl-token";var ve=class{static getOutputAmountAndRemainAccounts(e,t,n,r,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}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...d),{expectedAmountOut:m.mul(Bt),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=de(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Bt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ve.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Un.checkTickArrayIsInit(se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(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/se.tickCount(e.tickSpacing)),r=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=se.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=St.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Un.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Fe||t>Xe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(L({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Wt(d)});if(p.tokenMint.equals(Wt.default))continue;if(n<=p.openTime.toNumber()||r.eq(xe)){s.push(p);continue}let y=new Te(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=Z.mulDivFloor(f,p.emissionsPerSecondX64,Ze),A=p.rewardTotalEmissioned.add(h);s.push(W(L({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;return t>Xe&&(t=se.getArrayStartIndex(Xe,e)+se.tickCount(e)),n<Fe&&(n=se.getArrayStartIndex(Fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/se.tickCount(t)*Qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await wr(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=ta.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=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}=de(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await wr(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=qn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(L({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(et(p,d).publicKey);let l=await yt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=Gr.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}),h=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:P}=ae.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),k=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>W(L({},x),{pendingReward:new Te(0)})),leverage:k,tokenFeeAmountA:new Te(0),tokenFeeAmountB:new Te(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=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}`]=B}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=qn.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,P=y[m[h].toString()],k=y[m[A].toString()],I=P.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=k.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:S}=await Gn.GetPositionFees(f,g,I,B),N=await Gn.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Te(0))?x:new Te(0),g.tokenFeeAmountB=S.gte(new Te(0))?S:new Te(0);for(let E=0;E<N.length;E++)g.rewardInfos[E].pendingReward=N[E].gte(new Te(0))?N[E]:new Te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new V(0)}){var N;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 V(0))?u=c?vt.add(new Te(1)):Dt.sub(new Te(1)):u=J.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,r,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=ve.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((N=d.fee)!=null?N:xe),u),g=ye(p,m,r,!1),h=J.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new V(1).div(h),P=p.mul(new Te(Math.floor((1-s)*1e10))).div(new Te(1e10)),k=ye(P,m,r,!1),I=c?e.currentPrice:new V(1).div(e.currentPrice),B=new V(A).sub(I).abs(),x=I,S=new je(new V(B).mul(10**15).toFixed(0),new V(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:k,expirationTime:Xt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:S,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(L({},u),{mint:u.address,isToken2022:u.programId===ea.toBase58()})),new he(W(L({},c),{mint:c.address,isToken2022:c.programId===ea.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:h,fee:A,remainingAccounts:P}=await ve.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Wt(u.address),amountIn:n,slippage:o,epochInfo:s}),k=W(L({},d),{amount:new ke(l,d.amount),fee:d.fee===void 0?void 0:new ke(l,d.fee)}),I=W(L({},p),{amount:new ke(m,p.amount),fee:p.fee===void 0?void 0:new ke(m,p.fee)}),B=W(L({},y),{amount:new ke(m,y.amount),fee:y.fee===void 0?void 0:new ke(m,y.fee)}),x=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:b.mul(new V(10**(20+m.decimals))).toFixed(0)}),S=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:g.mul(new V(10**(20+m.decimals))).toFixed(0)}),N=new ke(l,A);return{realAmountIn:k,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:S,priceImpact:h,fee:N,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){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:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[on(e.mintA.address).toString()],d=r[on(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=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),b=J.getSqrtPriceX64FromTick(s),g=J.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:k}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(d.value)),B=new V(P.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(k.toString()).div(new V(10).pow(y)).mul(d.value)),x=B.div(I.add(B)).div(B),N=new V(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,Q=e.rewardDefaultInfos.map(v=>{var re,rt;let j=v.mint.decimals,ee=r[v.mint.address];return u<((re=v.startTime)!=null?re:0)||u>((rt=v.endTime)!=null?rt:0)||!v.perSecond||!ee||j===void 0?0:new V(ee.value).mul(new V(v.perSecond).mul(E)).div(new V(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((v,j)=>v+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=J.getSqrtPriceX64FromTick(n),d=J.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Te(new V(y.amount.sub((h=y.fee)!=null?h:xe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ae.getLiquidityFromTokenAmountA(m,d,f,!a):new Te(0);else if(l.lte(d)){let A=ae.getLiquidityFromTokenAmountA(l,d,f,!a),P=ae.getLiquidityFromTokenAmountB(m,l,f);b=t?A:P}else b=t?new Te(0):ae.getLiquidityFromTokenAmountB(m,d,f);return ve.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,h,A;let u=J.getSqrtPriceX64FromTick(n),c=J.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ae.getAmountsFromLiquidity(J.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),ye(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[ye(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ye(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new Wt(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=Ur.decode(r.data),s=ht(e,new Wt(n.id)).publicKey,a=await ve.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(L({},o),{id:new Wt(n.id),programId:new Wt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(L({},n.config),{id:new Wt(n.config.id),fundOwner:""}),currentPrice:new V(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var Z=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(xe)||(o=o.add(kt)),o}static mulDivFloor(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).add(n.sub(kt)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Wr).sub(t).mod(Wr)}};function Ce(i,e){return eo(i.mul(e),64,256)}function Ll(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function eo(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var J=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(xe))return e;let o=t.shln(Wn);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,kt,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,r){let o=n.shln(Wn);if(r)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,kt,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<Fe||e>Xe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ce(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ce(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ce(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ce(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ce(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ce(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ce(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ce(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ce(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ce(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ce(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ce(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ce(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ce(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ce(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ce(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ce(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ce(n,new ne("37481735321082"))),e>0&&(n=Hs.div(n)),n}static getTickFromPrice(e,t,n){return J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Dt)||e.lt(vt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),r=Ll(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<js;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new ne(Qs)),d=eo(m.sub(new ne(Zs)),64,128).toNumber(),p=eo(m.add(new ne($s)),64,128).toNumber();return d==p?d:J.getSqrtPriceX64FromTick(p).lte(e)?p:d}},$t=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=$t.getTickWithPriceAndTickspacing(e,t,n,r),s=J.getSqrtPriceX64FromTick(o);return J.sqrtPriceX64ToPrice(s,n,r)}},ae=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Wn),s=t.sub(e);return r?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),kt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");return r?Z.mulDivCeil(n,t.sub(e),Ze):Z.mulDivFloor(n,t.sub(e),Ze)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?Z.mulDivRoundingUp(a,kt,$i):a.shrn(Wn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,$i,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ae.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ae.getLiquidityFromTokenAmountA(e,n,r,!1),a=ae.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ae.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ae.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ne(0)};if(e.lt(n)){let s=ae.getTokenAmountAFromLiquidity(e,n,r,o),a=ae.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ae.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=ae.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new ne(new V(u.toString()).mul(l).toFixed(0)),d=new ne(new V(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,P,k;let c=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=J.getSqrtPriceX64FromTick(t),m=J.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ae.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[ye(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ye(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[ye(new ne(new V(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),ye(new ne(new V(p.amountB.toString()).mul(d).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Xt(y.expirationTime,f.expirationTime)}}},Zt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y){if(d.eq(xe))throw new Error("amountSpecified must not be 0");if(y||(y=s?vt.add(kt):Dt.sub(kt)),s){if(y.lt(vt))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(Dt))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(xe),b={amountSpecifiedRemaining:d,amountCalculated:xe,sqrtPriceX64:m,tick:c>p?Math.min(p+se.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,h=n[p],A=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(xe)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let k={};k.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(h,b.tick,l,s,P),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=ve.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:E}=de(e,t,g);x=E,h=n[g],B=U.firstInitializedTick(h,s)}k.tickNext=B.tick,k.initialized=B.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),k.tickNext<Fe?k.tickNext=Fe:k.tickNext>Xe&&(k.tickNext=Xe),k.sqrtPriceNextX64=J.getSqrtPriceX64FromTick(k.tickNext);let S;if(s&&k.sqrtPriceNextX64.lt(y)||!s&&k.sqrtPriceNextX64.gt(y)?S=y:S=k.sqrtPriceNextX64,[b.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=Zt.swapStepCompute(b.sqrtPriceX64,S,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(k.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(k.amountIn.add(k.feeAmount)),b.amountCalculated=b.amountCalculated.sub(k.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(k.amountOut),b.amountCalculated=b.amountCalculated.add(k.amountIn.add(k.feeAmount))),b.sqrtPriceX64.eq(k.sqrtPriceNextX64)){if(k.initialized){let N=B.liquidityNet;s&&(N=N.mul(Bt)),b.liquidity=ae.addDelta(b.liquidity,N)}P=k.tickNext!=b.tick&&!s&&h.startTickIndex===k.tickNext,b.tick=s?k.tickNext-1:k.tickNext}else if(b.sqrtPriceX64!=k.sqrtPriceStartX64){let N=J.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=N!=b.tick&&!s&&h.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:k,isExist:I}=se.nextInitializedTickArray(b.tick,l,s,r,o);I&&p!==k&&(b.accounts.push(de(e,t,k).publicKey),p=k)}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,r,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=r.gte(xe);if(u){let l=Z.mulDivFloor(r,qr.sub(new ne(o.toString())),qr);s.amountIn=a?ae.getTokenAmountAFromLiquidity(t,e,n,!0):ae.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ae.getTokenAmountBFromLiquidity(t,e,n,!1):ae.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Bt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromOutput(e,n,r.mul(Bt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ae.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ae.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ae.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ae.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Bt))&&(s.amountOut=r.mul(Bt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),qr.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ke=60,Qt=512,U=class{static getTickArrayAddressByTick(e,t,n,r){let o=U.getTickArrayStartIndexByTick(n,r),{publicKey:s}=de(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),r=Math.floor((e-n)/t);if(r<0||r>=Ke)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=se.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*se.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ke,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ke,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ke:e+t*Ke}static mergeTickArrayBitmap(e){let t=new Rl(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ke));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,Qt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Fe||e>Xe}static nextInitTick(e,t,n,r,o){if(se.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ke;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new V(1).div(a)}}};var Ih=M([be(8),F("bump"),bt("index"),K(""),Ge("protocolFeeRate"),Ge("tradeFeeRate"),bt("tickSpacing"),q(w(),8,"")]),Ol=M([Ge("blockTimestamp"),X("sqrtPriceX64"),X("cumulativeTimePriceX64"),q(X(),1,"")]),to=M([be(8),Ee("initialized"),K("poolId"),q(Ol,1e3,"observations"),q(X(),5,"")]),Nl=M([F("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),X("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),X("rewardGrowthGlobalX64")]),Ur=M([be(8),F("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),bt("tickSpacing"),X("liquidity"),X("sqrtPriceX64"),Ne("tickCurrent"),bt("observationIndex"),bt("observationUpdateDuration"),X("feeGrowthGlobalX64A"),X("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),X("swapInAmountTokenA"),X("swapOutAmountTokenB"),X("swapInAmountTokenB"),X("swapOutAmountTokenA"),F("status"),q(F(),7,""),q(Nl,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")]),Ml=M([X("growthInsideLastX64"),w("rewardAmountOwed")]),Gr=M([be(8),F("bump"),K("nftMint"),K("poolId"),Ne("tickLower"),Ne("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Ml,3,"rewardInfos"),q(w(),8,"")]),xh=M([be(8),F("bump"),K("poolId"),Ne("tickLowerIndex"),Ne("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(X(),3,"rewardGrowthInside"),q(w(),8,"")]),_l=M([Ne("tick"),as("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),q(X(),3,"rewardGrowthsOutsideX64"),q(Ge(),13,"")]),qn=M([be(8),K("poolId"),Ne("startTickIndex"),q(_l,Ke,"ticks"),F("initializedTickCount"),q(F(),115,"")]),na=M([be(329),q(K(),100,"whitelistMints")]),ta=M([be(8),K("poolId"),q(q(w(),8),Ji,"positiveTickArrayBitmap"),q(q(w(),8),Ji,"negativeTickArrayBitmap")]);var oa=oe("Raydium_Clmm"),pt={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,r,o,s,a,u,c,l,m,d,p,y){let f=M([X("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...pt.createPool,...g]);return new dt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ve({fromPublicKey:r,programId:n}),[d,p]=[new D(o.address),new D(s.address)],y=[dn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(to.span),space:to.span,programId:n})],{publicKey:f}=zs(n,a,d,p),{publicKey:b}=Zi(n,f,d),{publicKey:g}=Zi(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new D(o.programId||Me),p,g,new D(s.programId||Me),ht(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,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,P,k,I,B,x,S,N){let E=M([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),X("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ra,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:k,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:S==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let x=no.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:P}=Dr(y),{publicKey:k}=et(d,y),{publicKey:I}=jt(d,p,r,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,P,I,g,h,k,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:P,personalPosition:k,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let x=no.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:P}=Dr(y),{publicKey:k}=et(d,y),{publicKey:I}=jt(d,p,r,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,P,I,g,h,k,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,c,s,a,u,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ht(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:P,personalPosition:k,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,P,k,I,B,x,S,N){let E=M([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),X("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ra,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:k,liquidity:new ia(0),amountMaxA:B==="MintA"?x:S,amountMaxB:B==="MintA"?S:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new D((await l(1))[0]);else{let x=no.generate();d.push(x),m=x.publicKey}let[p,y]=[new D(e.programId),new D(e.id)],f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(p,y,f),{publicKey:h}=de(p,y,b),{publicKey:A}=we(n.wallet,m,Me),{publicKey:P}=Dr(m),{publicKey:k}=et(p,m),{publicKey:I}=jt(p,y,r,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,P,I,g,h,k,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(t.mintA.address),new D(t.mintB.address),r,o,f,b,s,a,u,c,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ht(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:P,personalPosition:k,protocolPosition:I},instructions:[B],signers:d,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=M([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...pt.closePosition,...u]);return new dt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new D(e.programId),{publicKey:s}=we(n.wallet,r.nftMint,Me),{publicKey:a}=et(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([X("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...pt.increaseLiquidity,...I]);return new dt({keys:k,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ht(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:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ht(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([X("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(A.span);A.encode({liquidity:new ia(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...pt.increaseLiquidity,...I]);return new dt({keys:k,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let P=M([X("liquidity"),w("amountMinA"),w("amountMinB")]),k=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:mr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],B=Buffer.alloc(P.span);P.encode({liquidity:b,amountMinA:g,amountMinB:h},B);let x=Buffer.from([...pt.decreaseLiquidity,...B]);return new dt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new D(e.programId),new D(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=de(c,l,m),{publicKey:y}=de(c,l,d),{publicKey:f}=we(r.wallet,n.nftMint,u),{publicKey:b}=et(c,n.nftMint),{publicKey:g}=jt(c,l,n.tickLower,n.tickUpper),h=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)h.push({poolRewardVault:new D(t.rewardInfos[P].vault),ownerRewardVault:r.rewardAccounts[P],rewardMint:new D(e.rewardDefaultInfos[P].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),h,o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ht(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g){let h=M([w("amount"),w("otherAmountThreshold"),X("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:mr,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],k=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},k);let I=Buffer.from([...pt.swap,...k]);return new dt({keys:P,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(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,ht(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([w("openTime"),w("endTime"),X("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...pt.initReward,...f]);return new dt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a=Ys(o,s,r.mint).publicKey,u=Dn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new D(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([F("rewardIndex"),X("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:r,isSigner:!1,isWritable:!0},{pubkey:Me,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:Y(l),endTime:Y(m)},f);let b=Buffer.from([...pt.setRewardEmissions,...f]);return new dt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new D(t.rewardInfos[d].vault),c=new D(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&oa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Dn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new D(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=M([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:mr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...pt.collectReward,...l]);return new dt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new D(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&oa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(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 Fl}from"@solana/web3.js";import{PublicKey as El}from"@solana/web3.js";import sa from"bn.js";var aa=new sa(25),ua=new sa(1e4);var Vl=oe("Raydium_liquidity_serum");function ca({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));r=El.createProgramAddressSync(o,i)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:r,nonce:n}}throw Vl.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}import sP from"bn.js";function ro({programId:i}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Jt({name:i,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function vl({programId:i,marketId:e}){let{publicKey:t}=ue([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Dl({programId:i}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function la({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=Jt({name:"amm_associated_seed",programId:a,marketId:t}),l=Jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Dl({programId:a}),p=Jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=vl({programId:a,marketId:t}),g=Jt({name:"target_associated_seed",programId:a,marketId:t}),h=Jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=ca({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:i,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Fl.default,configId:ro({programId:a})}}import $e from"bn.js";var Xn=class extends Pe{constructor(t){super(t);this.stableLayout=new Fn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:o}){let s=new $e(new V(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Rs(t[o?"mintB":"mintA"]),[u,c]=[new $e(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new $e(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new $e(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=qe;s.isZero()||(d=m==="base"?yr(s.mul(c),u):yr(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=yr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new je(new $e(1)).add(r).mul(d).quotient,b=new ke(a,d),g=new ke(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:r,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:",r,"amountInB:",o),(r.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[r.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 He(n.lpMint.address)}),h=[p,y],A=[f,b],P=[r.raw,o.raw],k=r.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(k)||this.logAndCreateError("invalid fixedSide","fixedSide",s),k==="quote"?(h.reverse(),A.reverse(),P.reverse(),I=s==="a"?"quote":"base"):k==="base"&&(I=s==="a"?"base":"quote");let[B,x]=h,[S,N]=A,[E,Q]=P,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Kt=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:S,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Kt,re=Ae(Kt,["tokenAccount"]);j.addInstruction(re);let nr=await l.handleTokenAccount({side:"in",amount:Q,mint:x.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rt}=nr,yn=Ae(nr,["tokenAccount"]);j.addInstruction(yn);let bn=await l.handleTokenAccount({side:"out",amount:0,mint:new He(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Qr}=bn,Zr=Ae(bn,["tokenAccount"]);return j.addInstruction(Zr),j.addInstruction({instructions:[Ds({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:rt,lpTokenAccount:Qr,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:Q,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.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:r,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new He(n.mintA.address),new He(n.mintB.address),new He(n.lpMint.address)];this.logDebug("amountIn:",r),r.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",r.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:h}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=B,P=Ae(B,["tokenAccount"]);b.addInstruction(P);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:k}=x,I=Ae(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Hi({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:k,owner:this.scope.ownerPubKey},amountIn:r})],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:r,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Xr,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 ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||we(this.scope.ownerPubKey,ee.accountInfo.mint,Xr).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 h=r.add(a!=null?a:new $e(0)),A=t.mintA.address===he.WSOL.mint.toString(),P=t.mintB.address===he.WSOL.mint.toString(),{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new He(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),k===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new He(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=k,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Kt of s.rewardInfos){let nr=Kt.mint.address===he.WSOL.mint.toString();if(b[Kt.mint.address])ee.push(b[Kt.mint.address]);else{let{account:bn,instructionParams:lo}=await this.scope.account.getOrCreateTokenAccount({mint:new He(Kt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!nr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});bn||this.logAndCreateError("farm reward account not found:",Kt.mint.address),lo&&f.addInstruction(lo),ee.push(bn)}}let re=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],rt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:re,lpAccount:g,rewardAccounts:ee},yn=lt[s.programId],Qr=yn===6?Mn(rt):yn===5?_n(rt):En(rt),Zr={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[Qr],instructionTypes:[Zr[yn]]})}let S=await this.getAmmPoolKeys(t.id),N=Hi({poolInfo:t,poolKeys:S,userKeys:{lpTokenAccount:g,baseTokenAccount:k,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:h});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:S.lookupTableAccount?[S.lookupTableAccount]:[]});let[E,Q]=t.mintA.address===n.mintA.address?[k,B]:[B,k],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Ie.openPositionFromBaseInstructions(W(L({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,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&&r.mint.equals(ma),h=c.useSOLBalance&&o.mint.equals(ma),A=this.createTxBuilder(),{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:r.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(k||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),P===void 0||I===void 0)throw Error("you don't has some token account");let x=la({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:o.mint,baseDecimals:r.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),S={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:N,instructionType:E}=Ws(W(L({},S),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:I,userLpVault:we(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:S}})}async getCreatePoolFee({programId:t}){let n=ro({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Os.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:o,slippage:s}){if(r!==t.mintA.address&&r!==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=r==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Zo.toBase58(),y;if(p)y=new V(d.toString()).div(m.toString());else{let x=Vs(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new V(1e6).div(x*1e6):y=new V(x*1e6).div(1e6)}let f=n,b=new $e(0),g=new $e(0);if(!f.isZero())if(p){g=Ln(f.mul(aa),ua);let x=f.sub(g),S=m.add(x);b=d.mul(x).div(S)}else{g=f.mul(new $e(2)).div(new $e(1e4));let x=f.sub(g);l==="quote"?b=new $e(_s(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new $e(Es(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let h=new $e(new V(b.toString()).mul(1-s).toFixed(0)),A=b,P=h,k=new V(b.toString()).div(new V(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(k=new V(b.toString()).div(f.sub(g).toString()));let I=y.sub(k).div(y).mul(100);return{amountOut:A,minAmountOut:P,currentPrice:y,executionPrice:k,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:r,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 He(l.address),programId:new He(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new He(m.address),programId:new He(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new He(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=P,f=Ae(P,["tokenAccount"]);c.addInstruction(f);let k=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new He(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=k,g=Ae(k,["tokenAccount"]);c.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[qs({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:r,fixedSide:s})],instructionTypes:[A===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ie}from"@solana/web3.js";import tt from"bn.js";var zn=class extends Pe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new tt(new ie(r.address).toBuffer()).gt(new tt(new ie(o.address).toBuffer()))?[o,r,new V(1).div(a)]:[r,o,a],b=J.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:W(L({},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:L({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:[]}},Js),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,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,h=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[P,k]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(S||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),E=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:W(L({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(E),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:E.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,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===te.toBase58(),h=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(P||{});let{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});k&&(b=k),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,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:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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),d.addInstruction(P||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:r,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:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(P||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,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:r,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=r.useSOLBalance&&t.mintA.address===te.toString(),y=r.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(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,h&&d.addInstruction(h);let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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,P&&d.addInstruction(P);let k=[];for(let S of t.rewardDefaultInfos){let N=r.useSOLBalance&&S.mint.address===te.toString(),E;if(S.mint.address===t.mintA.address)E=f;else if(S.mint.address===t.mintB.address)E=b;else{let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(S.mint.programId),mint:new ie(S.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,v&&d.addInstruction(v)}k.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:k},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=L({},B.address);if(r.closePosition){let S=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:S.instructions,endInstructionTypes:S.instructionTypes}),x=L(L({},x),S.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 r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!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:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,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 ie(n.mint.programId),mint:new ie(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:r=!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(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new V(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,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 ie(l.mint.programId),mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=L(L({},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:r=!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 tt(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,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:r=!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:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new V(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,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 ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=L(L({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!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(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,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:r=!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:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,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=L(L({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===te.toBase58(),p=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new V(0))?y=t.toString()===e.mintA.address?vt.add(new tt(1)):Dt.sub(new tt(1)):y=J.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(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=h,A&&m.addInstruction(A)}let b;if(!b){let{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(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=h,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 ie(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?we(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(P=>!P.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===te.toString(),y=n.useSOLBalance&&d.mintB.address===te.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=A,P&&l.addInstruction(P)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:o});b=A,P&&l.addInstruction(P)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let P=n.useSOLBalance&&A.mint.address===te.toString(),k=c[A.mint.address];if(!k){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:r});k=I,B&&l.addInstruction(B)}c[A.mint.address]=k,g.push(k)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let P=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new tt(0),amountMinA:new tt(0),amountMinB:new tt(0)});l.addInstruction(P)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Dn(e).publicKey);return t?na.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new tt(1))).map(s=>et(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=Gr.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new ie(e)),n=Ur.decode(t.data),r=J.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return W(L({},n),{currentPrice:r})}};import{PublicKey as z}from"@solana/web3.js";import{NATIVE_MINT as Yr,TOKEN_PROGRAM_ID as Ut,AccountLayout as ka}from"@solana/spl-token";var Wl=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ql=Buffer.from("amm_config","utf8"),Ul=Buffer.from("pool","utf8"),Gl=Buffer.from("pool_lp_mint","utf8"),Xl=Buffer.from("pool_vault","utf8"),zl=Buffer.from("observation","utf8");function Yl(i){return ue([Wl],i)}function Hl(i,e){return ue([ql,Zl(e)],i)}function jl(i,e,t,n){return ue([Ul,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Ql(i,e){return ue([Gl,e.toBuffer()],i)}function da(i,e,t){return ue([Xl,e.toBuffer(),t.toBuffer()],i)}function zr(i,e){return ue([zl,e.toBuffer()],i)}function Zl(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function pa({programId:i,mintA:e,mintB:t}){let n=Hl(i,0).publicKey,r=Yl(i).publicKey,o=jl(i,n,e,t).publicKey,s=Ql(i,o).publicKey,a=da(i,o,e).publicKey,u=da(i,o,t).publicKey,c=zr(i,o).publicKey;return{poolId:o,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as io,TOKEN_2022_PROGRAM_ID as fa,ASSOCIATED_TOKEN_PROGRAM_ID as $l}from"@solana/spl-token";var Jl=oe("Raydium_cpmm"),Hn={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 ya(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let P=M([w("amountMaxA"),w("amountMaxB"),w("openTime")]),k=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!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:io,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:$l,isSigner:!1,isWritable:!1},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],I=Buffer.alloc(P.span);return P.encode({amountMaxA:g,amountMaxB:h,openTime:A},I),new Yn({keys:k,programId:i,data:Buffer.from([...Hn.initialize,...I])})}function ba(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:io,isSigner:!1,isWritable:!1},{pubkey:fa,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 Jl.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Yn({keys:b,programId:i,data:Buffer.from([...Hn.deposit,...g])})}function ga(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:io,isSigner:!1,isWritable:!1},{pubkey:fa,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Yn({keys:b,programId:i,data:Buffer.from([...Hn.withdraw,...g])})}function wa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Yn({keys:g,programId:i,data:Buffer.from([...Hn.swapBaseInput,...h])})}function Aa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Yn({keys:g,programId:i,data:Buffer.from([...Hn.swapBaseOutput,...h])})}import De from"bn.js";var ha=M([be(8),F("bump"),Ee("disableCreatePool"),bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),q(w(),16)]),Pa=M([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),F("bump"),F("status"),F("lpDecimals"),F("mintDecimalA"),F("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var jn=class extends Pe{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 z(e));if(!n)throw new Error(`pool not found: ${e}`);let r=Pa.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([r.vaultA,r.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${r.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${r.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(r.configId);u&&(a=ha.decode(u.data))}return W(L({},r),{baseReserve:new De(ka.decode(o.data).amount.toString()).sub(r.protocolFeesMintA).sub(r.fundFeesMintA),quoteReserve:new De(ka.decode(s.data).amount.toString()).sub(r.protocolFeesMintB).sub(r.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ae(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,v,j;let d=r.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),p=new De(new z(c.mintA.address).toBuffer()).lte(new De(new z(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],h=r.useSOLBalance&&y.address===Yr.toBase58(),A=r.useSOLBalance&&f.address===Yr.toBase58(),[P,k]=[new z(y.address),new z(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:P,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new z(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(N||{}),B===void 0||S===void 0)throw Error("you don't has some token account");let E=pa({programId:e,mintA:P,mintB:k});return I.addInstruction({instructions:[ya(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,P,k,E.lpMint,B,S,we(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new z((v=y.programId)!=null?v:Ut),new z((j=f.programId)!=null?j:Ut),E.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(L({},E),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:r,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:d}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(L({},t),{mintAmountA:new V(p.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new V(p.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===Yr.toString(),A=t.mintB.address===Yr.toString(),P=this.createTxBuilder(),[k,I]=[new z(t.mintA.address),new z(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(r?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:r?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:d});P.addInstruction(x||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(r?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:r?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});P.addInstruction(N||{}),!B&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new z(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new z(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Q}=ee,v=Ae(ee,["tokenAccount"]);P.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[ba(new z(t.programId),this.scope.ownerPubKey,new z(j.authority),new z(t.id),Q,B,S,new z(j.vault.A),new z(j.vault.B),k,I,new z(t.lpMint.address),y,r?f.amount:g,r?g:f.amount)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),P.addCustomComputeBudget(a),P.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,v;let{poolInfo:t,lpAmount:n,slippage:r,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new je(new De(1)).sub(r),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[ye(c,t.mintA.extensions.feeConfig,m,!0),ye(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new z(t.mintA.address),new z(t.mintB.address)],h=b.equals(te),A=g.equals(te),P,k,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});P=I,B&&f.addInstruction(B);let{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});k=x,S&&f.addInstruction(S),(!P||!k)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new z(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[ga(new z(t.programId),this.scope.ownerPubKey,new z(E.authority),new z(t.id),N,P,k,new z(E.vault.A),new z(E.vault.B),b,g,new z(t.lpMint.address),n,c.sub((Q=d.fee)!=null?Q:new De(0)),l.sub((v=p.fee)!=null?v:new De(0)))],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var P,k,x,S,N,E;let{poolInfo:t,baseIn:n,swapResult:r,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new z(t.mintA.address),new z(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new z((P=t.mintA.programId)!=null?P:Ut),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new z((k=t.mintB.programId)!=null?k:Ut),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?r.sourceAmountSwapped:r.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Ae(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?r.destinationAmountSwapped:r.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,h=Ae(B,["tokenAccount"]);l.addInstruction(h),!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?wa(new z(t.programId),this.scope.ownerPubKey,new z(A.authority),new z(A.config.id),new z(t.id),f,g,new z(A.vault.A),new z(A.vault.B),new z((x=t.mintA.programId)!=null?x:Ut),new z((S=t.mintB.programId)!=null?S:Ut),m,d,zr(new z(t.programId),new z(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped):Aa(new z(t.programId),this.scope.ownerPubKey,new z(A.authority),new z(A.config.id),new z(t.id),g,f,new z(A.vault.B),new z(A.vault.A),new z((N=t.mintB.programId)!=null?N:Ut),new z((E=t.mintA.programId)!=null?E:Ut),d,m,zr(new z(t.programId),new z(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:r,baseIn:o}){var h,A,P,k,I,B,x,S;let s=1-Number(n.toSignificant())/100,a=new De(new V(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=ye(a,e[o?"mintA":"mintB"].extensions.feeConfig,r,!1),c=a.sub((h=u.fee)!=null?h:new De(0)),[l,m]=[new De(new V(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new De(new V(e.mintAmountB).mul(10**e.mintB.decimals).toString())],d=new De(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(P=(A=u.fee)==null?void 0:A.toString())!=null?P:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let y=c.mul(d).div(p==="base"?l:m),f={amount:qe,fee:void 0,expirationTime:void 0};c.isZero()||(f=ye(em(y,l,m,d)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,r,!0));let b=new je(new De(1)).add(n),g=ye(b.mul(f.amount.sub((k=f.fee)!=null?k:new De(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,r,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(S=(x=g.fee)==null?void 0:x.toString())!=null?S:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function em(i,e,t,n){let r=i.mul(e).div(n);!r.isZero()&&!i.mul(e).mod(n).isZero()&&(r=r.add(new De(1)));let o=i.mul(t).div(n);return!o.isZero()&&!i.mul(t).mod(n).isZero()&&(o=o.add(new De(1))),{amountA:r,amountB:o}}var Qn=class extends Pe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((r,o)=>o.version-r.version),e[0].version!==e[1].version))return e[0];let n=e.filter(r=>r.version===e[0].version);return n.sort((r,o)=>this.comparePoolSize(r,o,t)),n[0]}static comparePoolSize(e,t,n){let r=n[e.id],o=n[t.id];return r===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?r.baseReserve.sub(o.baseReserve).gte(qe)?-1:1:r.baseReserve.sub(o.quoteReserve).gte(qe)?-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,r=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=Y(t);for(let u=0;u<r.length;u++)a.gte(r[u].amount)?(o.addInstruction({instructions:[xt({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(r[u].amount)):(o.addInstruction({instructions:[xt({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Rn({destination:s.addresses.newAccount,source:r[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),r=this.createTxBuilder(),o=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),n.length&&r.addInstruction({instructions:[Rn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[xt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),r.build()}};import{TOKEN_PROGRAM_ID as tm}from"@solana/spl-token";import{PublicKey as nm,Transaction as oo,TransactionInstruction as rm}from"@solana/web3.js";import Ta from"bn.js";var We=class extends Pe{static getPdaPoolId(e,t){return ue([We.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([We.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ta(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>We.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<We.VERSION_PROJECT.length;l++)a.push(...s.map(m=>We.getPdaOwnerId(t,m,r,l).publicKey));let u=await yt(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!==We.POOL_LAYOUT.span||b.data.length!==We.OWNER_LAYOUT.span)continue;let g=We.POOL_LAYOUT.decode(f.data),h=We.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),P=g.endTime.toNumber(),k=h.tokenInfo.map(x=>x.debtAmount.gt(new Ta(0))).filter(x=>!x).length!==3,I=o>A&&o<P&&g.status===1,B=k&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:We.VERSION_PROJECT[m],openTime:A,endTime:P,canClaim:B,canClaimErrorType:k?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,S)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:h.tokenInfo[S].debtAmount.add(h.tokenInfo[S].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=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:r,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:[We.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,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(),r=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:r,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:[We.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return fi(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new oo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new oo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new oo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=M([]),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:tm,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new rm({keys:o,programId:e,data:a})}},nt=We;nt.CLAIMED_NUM=3,nt.POOL_LAYOUT=M([be(8),F("bump"),F("status"),w("openTime"),w("endTime"),K("ammId"),q(M([F("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),nt.OWNER_LAYOUT=M([be(8),F("bump"),F("version"),K("poolId"),K("owner"),w("lpAmount"),q(M([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),nt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new nm(e)),nt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},nt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Zn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ka}from"@solana/spl-token";import $n from"bn.js";import{TransactionInstruction as om,SYSVAR_RENT_PUBKEY as sm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{createInitializeAccountInstruction as xa}from"@solana/spl-token";import{SystemProgram as en,Transaction as Ba}from"@solana/web3.js";function im(i="accountFlags"){let e=new Cr(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var so=M([be(5),im("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function am({programId:i,marketInfo:e}){let t=M([F("version"),Ge("instruction"),w("baseLotSize"),w("quoteLotSize"),bt("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:sm,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}:[]),r=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},r),new om({keys:n,programId:i,data:r})}async function Sa({connection:i,wallet:e,marketInfo:t}){let n=new Ba,r=await i.getMinimumBalanceForRentExemption(165);n.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:Ia}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:Ia}),xa(t.baseVault.publicKey,t.baseMint,t.vaultOwner),xa(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Ba;return o.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(so.span),space:so.span,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),am({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 pn=class extends Pe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ve({fromPublicKey:u,programId:o}),l=Ve({fromPublicKey:u,programId:o}),m=Ve({fromPublicKey:u,programId:o}),d=Ve({fromPublicKey:u,programId:o}),p=Ve({fromPublicKey:u,programId:o}),y=Ve({fromPublicKey:u,programId:Ka}),f=Ve({fromPublicKey:u,programId:Ka}),b=0,g=new $n(100);function h(){let S=new $n(0);for(;;)try{return{vaultOwner:Zn.createProgramAddressSync([c.publicKey.toBuffer(),S.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:S}}catch{if(S.iaddn(1),S.gt(new $n(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:P}=h(),k=new $n(Math.round(10**e.decimals*n)),I=new $n(Math.round(n*10**t.decimals*r));if(k.eq(qe))throw Error("lot size is too small");if(I.eq(qe))throw Error("tick size or lot size is too small");let B=await Sa({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:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:P,baseLotSize:k,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let S of B.slice(1,B.length))x.addInstruction({instructions:S.transaction.instructions,signers:S.signer,instructionTypes:S.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Zn(e.mint),quoteMin:new Zn(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Zn(e.mint),quoteMin:new Zn(t.mint)}})}};import{PublicKey as er}from"@solana/web3.js";import{PublicKey as YT,TransactionInstruction as Ca,SYSVAR_CLOCK_PUBKEY as cm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as La}from"@solana/spl-token";var um=M([F("instruction"),ns("amount")]),Jn=M([F("instruction")]);function Hr({programId:i},e){let t=[{pubkey:La,isSigner:!1,isWritable:!1},{pubkey:Mo,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,o])=>({pubkey:o,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(Jn.span);return Jn.encode({instruction:2},n),new Ca({keys:t,programId:i,data:n})}function ao(i){let{poolConfig:e,userKeys:t,side:n}=i,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Jn.span);Jn.encode({instruction:2},s);let a=[{pubkey:La,isWritable:!1,isSigner:!1},{pubkey:cm,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:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ca({programId:e.programId,keys:a,data:s})}import Ra from"bn.js";var lm={[Kn.IDO_PROGRAM_ID_V1.toString()]:1,[Kn.IDO_PROGRAM_ID_V2.toString()]:2,[Kn.IDO_PROGRAM_ID_V3.toString()]:3,[Kn.IDO_PROGRAM_ID_V4.toString()]:4},fn=class extends Pe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:o}){let s=this.createTxBuilder(),a=lm[t.programId];a||this.logAndCreateError("invalid version",a);let u=Ue(t),[c,l]=[!new Ra(e.coin).isZero(),!new Ra(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{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:r});!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(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:r});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?[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new er(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Hr({programId:new er(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new er(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new er(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 er(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[ao(W(L({},g),{side:"base"}))]:[],...l?[ao(W(L({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as mm}from"@solana/web3.js";import{MintLayout as dm,TOKEN_2022_PROGRAM_ID as uo,TOKEN_PROGRAM_ID as co}from"@solana/spl-token";var tr=class extends Pe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Nt.address,Nt),this._mintGroup.official.add(Nt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,W(L({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,W(L({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?uo.toBase58():co.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(L({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?uo.toBase58():co.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(L({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?uo.toBase58():co.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Nt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(L({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new mm(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=dm.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 jr=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new at(r):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=oe("Raydium"),this.farm=new Vn({scope:this,moduleName:"Raydium_Farm"}),this.account=new On({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Xn({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new tr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Qn({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new zn({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new jn({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new nt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new fn({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){var l;let t=pm({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Br({cluster:n,timeout:r,urlConfigs:a,logCount:o,logRequests:s}),c=new jr(W(L({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Sr);return this._owner.publicKey}setOwner(e){return this._owner=e?new at(e):void 0,this}get connection(){if(!this._connection)throw new Error(Jo);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(Sr),new Error(Sr)}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 r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(L({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),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{}}}};export{jr as Raydium};
1
+ var Oa=Object.defineProperty,Na=Object.defineProperties;var Ma=Object.getOwnPropertyDescriptors;var rr=Object.getOwnPropertySymbols;var po=Object.prototype.hasOwnProperty,fo=Object.prototype.propertyIsEnumerable;var mo=(i,e,t)=>e in i?Oa(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,L=(i,e)=>{for(var t in e||(e={}))po.call(e,t)&&mo(i,t,e[t]);if(rr)for(var t of rr(e))fo.call(e,t)&&mo(i,t,e[t]);return i},W=(i,e)=>Na(i,Ma(e));var Ae=(i,e)=>{var t={};for(var n in i)po.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&rr)for(var n of rr(i))e.indexOf(n)<0&&fo.call(i,n)&&(t[n]=i[n]);return t};import{merge as pm}from"lodash";import dc from"axios";import{get as yo,set as _a}from"lodash";import go from"dayjs";import Ea from"dayjs/plugin/utc";go.extend(Ea);var $r=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 go().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}},bo={},Va={};function oe(i){let e=yo(bo,i);if(!e){let t=yo(Va,i);e=new $r({name:i,logLevel:t}),_a(bo,i,e)}return e}import{PublicKey as Yu}from"@solana/web3.js";import Hu from"bn.js";import Gu from"big.js";import br from"bn.js";import Ye from"bn.js";var tn=9e15,Ot=1e9,Jr="0123456789abcdef",or="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",sr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ei={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-tn,maxE:tn,crypto:!1},Po,It,$=!0,ur="[DecimalError] ",Rt=ur+"Invalid argument: ",ko=ur+"Precision limit exceeded",To=ur+"crypto unavailable",Io="[object Decimal]",_e=Math.floor,Be=Math.pow,Fa=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,va=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Da=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,xo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ot=1e7,H=7,Wa=9007199254740991,qa=or.length-1,ti=sr.length-1,C={toStringTag:Io};C.absoluteValue=C.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),G(i)};C.ceil=function(){return G(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Rt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};C.comparedTo=C.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};C.cosine=C.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Ua(n,Lo(n,t)),n.precision=i,n.rounding=e,G(It==2||It==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Le(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Be(t,1/3),i=_e((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=pe(c.plus(l).times(a),c.plus(u),s+2,1),Le(a.d).slice(0,s)===(t=Le(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(G(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,G(n,i,m.rounding,e)};C.decimalPlaces=C.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-_e(this.e/H))*H,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(i){return pe(this,new this.constructor(i))};C.dividedToIntegerBy=C.divToInt=function(i){var e=this,t=e.constructor;return G(pe(e,new t(i),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(i){return this.cmp(i)===0};C.floor=function(){return G(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(i){return this.cmp(i)>0};C.greaterThanOrEqualTo=C.gte=function(i){var e=this.cmp(i);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/lr(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=nn(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=nn(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/lr(5,i)),r=nn(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(r,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,pe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?it(t,r,o):new t(0):new t(NaN):e.isZero()?it(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=it(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?G(new o(r),i,e,!0):(o.precision=t=n-r.e,r=pe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=it(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};C.inverseTangent=C.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=ti)return s=it(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=ti)return s=it(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/H+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),$=!0,G(s,l.precision=m,l.rounding=d,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&_e(this.e/H)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(i){return this.cmp(i)<0};C.lessThanOrEqualTo=C.lte=function(i){return this.cmp(i)<1};C.logarithm=C.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if($=!1,a=m+p,s=Lt(c,a),n=e?ar(l,a+10):Lt(i,a),u=pe(s,n,a,1),gn(u.d,r=m,d))do if(a+=10,s=Lt(c,a),n=e?ar(l,a+10):Lt(i,a),u=pe(s,n,a,1),!o){+Le(u.d).slice(r+1,r+15)+1==1e14&&(u=G(u,m+1,0));break}while(gn(u.d,r+=10,d));return $=!0,G(u,m,d)};C.minus=C.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return $?G(i,a,u):i}if(t=_e(i.e/H),l=_e(p.e/H),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/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=ot-1;--c[r],c[n]+=ot}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=cr(c,t),$?G(i,a,u):i):new y(u===3?-0:0)};C.modulo=C.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=pe(t,i.abs(),0,3,1),e.s*=i.s):e=pe(t,i,0,n.modulo,1),e=e.times(i),$=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return ni(this)};C.naturalLogarithm=C.ln=function(){return Lt(this)};C.negated=C.neg=function(){var i=new this.constructor(this);return i.s=-i.s,G(i)};C.plus=C.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),$?G(i,a,u):i;if(o=_e(m.e/H),n=_e(i.e/H),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/ot|0,c[r]%=ot;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=cr(c,n),$?G(i,a,u):i};C.precision=C.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Rt+i);return t.d?(e=Bo(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var i=this,e=i.constructor;return G(new e(i),i.e+1,e.rounding)};C.sine=C.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Xa(n,Lo(n,t)),n.precision=i,n.rounding=e,G(It>2?t.neg():t,i,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Le(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=_e((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(pe(s,o,t+2,1)).times(.5),Le(o.d).slice(0,t)===(e=Le(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),i=!n.times(n).eq(s));break}return $=!0,G(n,u,l.rounding,i)};C.tangent=C.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=pe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,G(It==2||It==4?t.neg():t,i,e,!0)):new n(NaN)};C.times=C.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=_e(l.e/H)+_e(i.e/H),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%ot|0,e=a/ot|0;o[r]=(o[r]+e)%ot|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=cr(o,t),$?G(i,m.precision,m.rounding):i};C.toBinary=function(i,e){return ii(this,2,i,e)};C.toDecimalPlaces=C.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(ze(i,0,Ot),e===void 0?e=n.rounding:ze(e,0,8),G(t,i+t.e+1,e))};C.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,!0):(ze(i,0,Ot),e===void 0?e=r.rounding:ze(e,0,8),n=G(new r(n),i+1,e),t=ft(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=ft(r):(ze(i,0,Ot),e===void 0?e=o.rounding:ze(e,0,8),n=G(new o(r),i+r.e+1,e),t=ft(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};C.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Bo(y)-p.e-1,s=o%H,e.d[0]=Be(10,s<0?H+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(Rt+a);i=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Le(y)),l=f.precision,f.precision=o=y.length*H*2;m=pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=pe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=pe(c,n,o,1).minus(p).abs().cmp(pe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};C.toHexadecimal=C.toHex=function(i,e){return ii(this,16,i,e)};C.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:ze(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?($=!1,t=pe(t,i,0,e,1).times(i),$=!0,G(t)):(i.s=t.s,t=i),t};C.toNumber=function(){return+this};C.toOctal=function(i,e){return ii(this,8,i,e)};C.toPower=C.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(Be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return G(a,n,o);if(e=_e(i.e/H),e>=i.d.length-1&&(t=c<0?-c:c)<=Wa)return r=So(u,a,t,n),i.s<0?new u(1).div(r):G(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Be(+a,c),e=t==0||!isFinite(t)?_e(c*(Math.log("0."+Le(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),r=ni(i.times(Lt(a,n+t)),n),r.d&&(r=G(r,n+5,1),gn(r.d,n,o)&&(e=n+10,r=G(ni(i.times(Lt(a,e+t)),e),e+5,1),+Le(r.d).slice(n+1,n+15)+1==1e14&&(r=G(r,n+1,0)))),r.s=s,$=!0,u.rounding=o,G(r,n,o))};C.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(ze(i,1,Ot),e===void 0?e=r.rounding:ze(e,0,8),n=G(new r(n),i,e),t=ft(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(ze(i,1,Ot),e===void 0?e=n.rounding:ze(e,0,8)),G(new n(t),i,e)};C.toString=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return G(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Le(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=H-n.length,t&&(o+=Ct(t)),o+=n;s=i[e],n=s+"",t=H-n.length,t&&(o+=Ct(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function ze(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Rt+i)}function gn(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=H,r=0):(r=Math.ceil((e+1)/H),e%=H),o=Be(10,H-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Be(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Be(10,e-3)-1,s}function ir(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Jr.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Ua(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/lr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=nn(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var pe=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,P,k,I,B,x,S,N,E,Q,v=n.constructor,j=n.s==r.s?1:-1,ee=n.d,re=r.d;if(!ee||!ee[0]||!re||!re[0])return new v(!n.s||!r.s||(ee?re&&ee[0]==re[0]:!re)?NaN:ee&&ee[0]==0||!re?j*0:j/0);for(u?(p=1,l=n.e-r.e):(u=ot,p=H,l=_e(n.e/p)-_e(r.e/p)),E=re.length,S=ee.length,g=new v(j),h=g.d=[],m=0;re[m]==(ee[m]||0);m++);if(re[m]>(ee[m]||0)&&l--,o==null?(I=o=v.precision,s=v.rounding):a?I=o+(n.e-r.e)+1:I=o,I<0)h.push(1),y=!0;else{if(I=I/p+2|0,m=0,E==1){for(d=0,re=re[0],I++;(m<S||d)&&I--;m++)B=d*u+(ee[m]||0),h[m]=B/re|0,d=B%re|0;y=d||m<S}else{for(d=u/(re[0]+1)|0,d>1&&(re=i(re,d,u),ee=i(ee,d,u),E=re.length,S=ee.length),x=E,A=ee.slice(0,E),P=A.length;P<E;)A[P++]=0;Q=re.slice(),Q.unshift(0),N=re[0],re[1]>=u/2&&++N;do d=0,c=e(re,A,E,P),c<0?(k=A[0],E!=P&&(k=k*u+(A[1]||0)),d=k/N|0,d>1?(d>=u&&(d=u-1),f=i(re,d,u),b=f.length,P=A.length,c=e(f,A,b,P),c==1&&(d--,t(f,E<b?Q:re,b,u))):(d==0&&(c=d=1),f=re.slice()),b=f.length,b<P&&f.unshift(0),t(A,f,P,u),c==-1&&(P=A.length,c=e(re,A,E,P),c<1&&(d++,t(A,E<P?Q:re,P,u))),P=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[P++]=ee[x]||0:(A=[ee[x]],P=1);while((x++<S||A[0]!==void 0)&&I--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,Po=y;else{for(m=1,d=h[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(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=H,s=e,l=m[d=0],u=l/Be(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/H),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=H,s=o-H+r,u=s<0?0:l/Be(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Be(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Be(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Be(10,(H-e%H)%H),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Be(10,H-o),m[d]=s>0?(l/Be(10,r-s)%Be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==ot&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ot)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function ft(i,e,t){if(!i.isFinite())return Co(i);var n,r=i.e,o=Le(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ct(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Ct(-r-1)+o,t&&(n=t-s)>0&&(o+=Ct(n))):r>=s?(o+=Ct(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Ct(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Ct(n))),o}function cr(i,e){var t=i[0];for(e*=H;t>=10;t/=10)e++;return e}function ar(i,e,t){if(e>qa)throw $=!0,t&&(i.precision=t),Error(ko);return G(new i(or),e,1,!0)}function it(i,e,t){if(e>ti)throw Error(ko);return G(new i(sr),e,t,!0)}function Bo(i){var e=i.length-1,t=e*H+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Ct(i){for(var e="";i--;)e+="0";return e}function So(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/H+4);for($=!1;;){if(t%2&&(o=o.times(e),Ao(o.d,s)&&(r=!0)),t=_e(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ao(e.d,s)}return $=!0,o}function wo(i){return i.d[i.d.length-1]&1}function Ko(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ni(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=G(o.times(i),u,1),t=t.times(++l),a=s.plus(pe(o,t,u,1)),Le(a.d).slice(0,u)===Le(s.d).slice(0,u)){for(r=m;r--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&gn(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 Lt(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,b=f.d,g=f.constructor,h=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?($=!1,l=A):l=e,g.precision=l+=y,t=Le(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(i),t=Le(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=ar(g,l+2,A).times(o+""),f=Lt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,h,$=!0):f;for(m=f,u=s=f=pe(f.minus(1),f.plus(1),l,1),d=G(f.times(f),l,1),r=3;;){if(s=G(s.times(d),l,1),c=u.plus(pe(s,new g(r),l,1)),Le(c.d).slice(0,l)===Le(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(ar(g,l+2,A).times(o+""))),u=pe(u,new g(p),l,1),e==null)if(gn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=pe(m.minus(1),m.plus(1),l,1),d=G(f.times(f),l,1),r=a=1;else return G(u,g.precision=A,h,$=!0);else return g.precision=A,u;u=c,r+=2}}function Co(i){return String(i.s*i.s/0)}function ri(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%H,t<0&&(n+=H),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=H;n<r;)i.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),$&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Ga(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),xo.test(e))return ri(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(va.test(e))t=16,e=e.toLowerCase();else if(Fa.test(e))t=2;else if(Da.test(e))t=8;else throw Error(Rt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=So(n,new n(t),o,o*2)),c=ir(e,t,ot),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=cr(c,l),i.d=c,$=!1,s&&(i=pe(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?Be(2,u):wn.pow(2,u))),$=!0,i)}function Xa(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:nn(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/lr(5,t)),e=nn(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function nn(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/H);for($=!1,u=t.times(t),a=new i(n);;){if(s=pe(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=pe(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function lr(i,e){for(var t=i;--e;)t*=i;return t}function Lo(i,e){var t,n=e.s<0,r=it(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return It=n?4:1,e;if(t=e.divToInt(r),t.isZero())It=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return It=wo(t)?n?2:3:n?4:1,e;It=wo(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ii(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(ze(t,1,Ot),n===void 0?n=p.rounding:ze(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Co(i);else{for(l=ft(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=ir(ft(d),10,r),d.e=d.d.length),m=ir(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=pe(i,d,t,n,0,r),m=i.d,o=i.e,c=Po),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Jr.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=ir(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Jr.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Ao(i,e){if(i.length>e)return i.length=e,!0}function za(i){return new this(i).abs()}function Ya(i){return new this(i).acos()}function Ha(i){return new this(i).acosh()}function ja(i,e){return new this(i).plus(e)}function Qa(i){return new this(i).asin()}function Za(i){return new this(i).asinh()}function $a(i){return new this(i).atan()}function Ja(i){return new this(i).atanh()}function eu(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=it(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?it(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=it(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(pe(i,e,o,1)),e=it(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(pe(i,e,o,1)),t}function tu(i){return new this(i).cbrt()}function nu(i){return G(i=new this(i),i.e+1,2)}function ru(i,e,t){return new this(i).clamp(e,t)}function iu(i){if(!i||typeof i!="object")throw Error(ur+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Ot,"rounding",0,8,"toExpNeg",-tn,0,"toExpPos",0,tn,"maxE",0,tn,"minE",-tn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(_e(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Rt+t+": "+n);if(t="crypto",r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(To);else this[t]=!1;else throw Error(Rt+t+": "+n);return this}function ou(i){return new this(i).cos()}function su(i){return new this(i).cosh()}function Ro(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,ho(o)){c.s=o.s,$?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ri(c,o.toString())}else if(u!=="string")throw Error(Rt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),xo.test(o)?ri(c,o):Ga(c,o)}if(r.prototype=C,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=iu,r.clone=Ro,r.isDecimal=ho,r.abs=za,r.acos=Ya,r.acosh=Ha,r.add=ja,r.asin=Qa,r.asinh=Za,r.atan=$a,r.atanh=Ja,r.atan2=eu,r.cbrt=tu,r.ceil=nu,r.clamp=ru,r.cos=ou,r.cosh=su,r.div=au,r.exp=uu,r.floor=cu,r.hypot=lu,r.ln=mu,r.log=du,r.log10=fu,r.log2=pu,r.max=yu,r.min=bu,r.mod=gu,r.mul=wu,r.pow=Au,r.random=hu,r.round=Pu,r.sign=ku,r.sin=Tu,r.sinh=Iu,r.sqrt=xu,r.sub=Bu,r.sum=Su,r.tan=Ku,r.tanh=Cu,r.trunc=Lu,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function au(i,e){return new this(i).div(e)}function uu(i){return new this(i).exp()}function cu(i){return G(i=new this(i),i.e+1,3)}function lu(){var i,e,t=new this(0);for($=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function ho(i){return i instanceof wn||i&&i.toStringTag===Io||!1}function mu(i){return new this(i).ln()}function du(i,e){return new this(i).log(e)}function pu(i){return new this(i).log(2)}function fu(i){return new this(i).log(10)}function yu(){return Ko(this,arguments,"lt")}function bu(){return Ko(this,arguments,"gt")}function gu(i,e){return new this(i).mod(e)}function wu(i,e){return new this(i).mul(e)}function Au(i,e){return new this(i).pow(e)}function hu(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:ze(i,1,Ot),n=Math.ceil(i/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(To);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=H,n&&i&&(r=Be(10,H-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function Pu(i){return G(i=new this(i),i.e+1,this.rounding)}function ku(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Tu(i){return new this(i).sin()}function Iu(i){return new this(i).sinh()}function xu(i){return new this(i).sqrt()}function Bu(i,e){return new this(i).sub(e)}function Su(){var i=0,e=arguments,t=new this(e[i]);for($=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return $=!0,G(t,this.precision,this.rounding)}function Ku(i){return new this(i).tan()}function Cu(i){return new this(i).tanh()}function Lu(i){return G(i=new this(i),i.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var wn=C.constructor=Ro(ei);or=new wn(or);sr=new wn(sr);var V=wn;import{PublicKey as ui}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ru}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as Oo,SYSVAR_RENT_PUBKEY as Ou}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var oi=[T({pubkey:Ru,isWritable:!1}),T({pubkey:Oo.programId,isWritable:!1}),T({pubkey:Ou,isWritable:!1})];function si({publicKey:i,transformSol:e}){let t=ai(i.toString());if(t instanceof ge)return e&&t.equals(Se)?te:t;if(e&&t.toString()===Se.toBase58())return te;if(typeof t=="string"){if(t===ge.default.toBase58())return ge.default;try{return new ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(i){try{return new ge(i)}catch{return i}}var mr=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),No=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new ge("SysvarRent111111111111111111111111111111111"),Mo=new ge("SysvarC1ock11111111111111111111111111111111"),rn=new ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Nu=new ge("Sysvar1nstructions1111111111111111111111111"),_o=Oo.programId,Tm=new ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Im=new ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),xm=new ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Bm=new ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Sm=new ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Km=new ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Cm=new ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Lm=new ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Rm=new ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Om=new ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Nm=new ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ge("So11111111111111111111111111111111111111112"),Se=ge.default;function on(i){return si({publicKey:i,transformSol:!0})}import{PublicKey as Mu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";var Nt={chainId:101,address:Mu.default.toBase58(),programId:Eo.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:Eo.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 ci=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Se.toBase58()||e instanceof ui&&Se.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new ui(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?ui.default:si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=ci;he.WSOL=new ci(W(L({},Re),{mint:Re.address}));import pr from"big.js";import Vu from"bn.js";import Fu from"decimal.js-light";import _u from"toformat";var Eu=_u,An=Eu;var dr=oe("module/fraction"),li=An(pr),hn=An(Fu),vu={[0]:hn.ROUND_DOWN,[1]:hn.ROUND_HALF_UP,[2]:hn.ROUND_UP},Du={[0]:pr.roundDown,[1]:pr.roundHalfUp,[2]:pr.roundUp},me=class{constructor(e,t=new Vu(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||dr.logWithError(`${e} is not an integer.`),e<=0&&dr.logWithError(`${e} is not positive.`),hn.set({precision:e+1,rounding:vu[n]});let r=new hn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||dr.logWithError(`${e} is not an integer.`),e<0&&dr.logWithError(`${e} is negative.`),li.DP=e,li.RM=Du[n]||1,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qu=oe("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new me(mi(n.decimals),mi(r.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qu.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var di=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},fr=di;fr.SOL=new di(Nt);import Uu from"bn.js";var Vo=new me(new Uu(100)),je=class extends me{toSignificant(e=5,t,n){return this.mul(Vo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Vo).toFixed(e,t,n)}};var qe=new Ye(0),vo=new Ye(1),Cd=new Ye(2),Ld=new Ye(3),Rd=new Ye(5),pi=new Ye(10),Od=new Ye(100),Nd=new Ye(1e3),Md=new Ye(1e4),Fo=9007199254740991;function Y(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof Ye)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ye(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Fo||i<=-Fo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Ye(String(i))):typeof i=="bigint"?new Ye(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Ye(0))}function mi(i){return pi.pow(Y(i))}function yr(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Xu=oe("Raydium_amount"),Wo=An(Gu);function zu(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Xu.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends me{constructor(t,n,r=!0,o){let s=new br(0),a=pi.pow(new br(t.decimals));if(r)s=Y(n);else{let u=new br(0),c=new br(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zu(n.toString(),t.decimals);u=Y(l),c=Y(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=oe(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 ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Wo.DP=this.token.decimals,new Wo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Do(i){return typeof i=="object"&&i!==null&&![he,ke,Yu,me,Hu,Je,je].some(e=>typeof e=="object"&&i instanceof e)}function Ue(i){return typeof i=="string"?ai(i):Array.isArray(i)?i.map(e=>Ue(e)):Do(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Ue(t)])):i}import{PublicKey as Tn,sendAndConfirmTransaction as Pr,Transaction as In,TransactionMessage as xn,VersionedTransaction as Bn}from"@solana/web3.js";import ec 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 ju,ComputeBudgetProgram as qo,Transaction as Go,TransactionMessage as Qu,Keypair as Xo,VersionedTransaction as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zu}from"@solana/spl-token";var Uo=oe("Raydium_txUtil"),Yo=1644;function gr(i){let e=[],t=[];return i.microLamports&&(e.push(qo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(_.SetComputeUnitPrice)),i.units&&(e.push(qo.setComputeUnitLimit({units:i.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function sn(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function fi(i,e){i.length<1&&Uo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Uo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Go;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Yo}catch{return!1}}function ue(i,e){let[t,n]=ju.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Pn({instructions:i,payer:e,signers:t}){return fi(i,[e,...t])}function kn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xo.generate().publicKey.toString()}){let o=new Qu({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zo(o).serialize()).toString("base64").length<Yo}catch{return!1}}var $u=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function Gt(i){let e=[];return i.forEach(t=>{t instanceof Go&&(t.recentBlockhash||(t.recentBlockhash=Zu.toBase58()),t.feePayer||(t.feePayer=Xo.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zo&&(n=$u(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Ho,AddressLookupTableAccount as Ar}from"@solana/web3.js";import{PublicKey as Ju}from"@solana/web3.js";import{getTransferFeeConfig as Pp,unpackMint as kp}from"@solana/spl-token";var yi=oe("Raydium_accountInfo_util");async function yt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=L({batchRequest:!1},t),o=bi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=bi(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&yi.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"&&yi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Ju(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&yi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function wr(i,e,t){let n=await yt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>W(L({},r),{accountInfo:n[o]}))}async function gi({connection:i,address:e}){let t=await yt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Ho(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Ar({key:s,state:Ar.deserialize(o.data)});n[s.toString()]=a,hr[s.toString()]=a}return n}var hr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Ar({key:new Ho("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Ar.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 kr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}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 ec.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}=gr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Tn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(L({},t||{})):this.build(t)}build(e){let t=new In;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await sn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),Gt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Pr(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await sn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Pr(this.connection,b,a[g].find(h=>h.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,A)=>(h.recentBlockhash=y,a[A].length&&h.sign(...a[A]),h));Gt(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],P=async()=>{if(!g[h])return;let k=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:k,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(k,I=>{let B=A.findIndex(x=>x.txId===k);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:A.map(k=>k.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let P=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});h.push(P)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=Ae(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=L(L({},this.cluster==="devnet"?{}:hr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Tn(p));let c=await gi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new xn({payerKey:this.feePayer,recentBlockhash:r?Tn.default.toBase58():await sn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Bn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),Gt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),Gt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,h)=>{a[h].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let h=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],h=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,P=>{let k=g.findIndex(I=>I.txId===A);k>-1&&(g[k].status=P.err?"error":"success"),m==null||m([...g]),P.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ae(c,["computeBudgetConfig"]),r=t?gr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(L({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Tn(f));if(u.length<12&&Pn({instructions:d,payer:this.feePayer,signers:y})||Pn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new In().add(...r.instructions,...u)):s.push(new In().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);Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new In().add(...r.instructions,...u)):s.push(new In().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 b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await sn(this.connection);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),Gt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await Pr(this.connection,h,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,h)=>await Pr(this.connection,g,a[h].find(A=>A.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let h=0,A=[],P=async()=>{if(!g[h])return;let k=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:k,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(k,I=>{let B=A.findIndex(x=>x.txId===k);B>-1&&(A[B].status=I.err?"error":"success"),d==null||d([...A]),I.err||P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),{txIds:A.map(k=>k.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let P=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});h.push(P)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=b,o=Ae(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=L(L({},this.cluster==="devnet"?{}:hr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let g of a)s[g]===void 0&&u.push(new Tn(g));let c=await gi({connection:this.connection,address:u});for(let[g,h]of Object.entries(c))s[g]=h;let l=t?gr(t):{instructions:[],instructionTypes:[]},m=await sn(this.connection),d=this.signers.reduce((g,h)=>W(L({},g),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let h=[...f,g],A=t?[...l.instructions,...h]:h;if(f.length<12&&kn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||kn({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let P={};for(let k of[...new Set(a)])s[k]!==void 0&&(P[k]=s[k]);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Bn(k))}else{let k=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Bn(k))}y.push(Array.from(new Set(f.map(k=>k.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(k=>d[k]).filter(k=>k!==void 0)),f=[g]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Bn(A))}else{let A=new xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Bn(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:h,onTxUpdate:A,recentBlockHash:P,skipPreflight:k=!0}=g||{};if(p.map(async(B,x)=>{y[x].length&&B.sign(y[x]),P&&(B.message.recentBlockhash=P)}),Gt(p),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();if(p.forEach((S,N)=>{y[N].find(E=>E.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),h){let S=[];for(let N of p){let E=await this.connection.sendTransaction(N,{skipPreflight:k}),{lastValidBlockHeight:Q,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:Q,signature:E},"confirmed"),S.push(E)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>{let N=await this.connection.sendTransaction(S,{skipPreflight:k});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let x=0,S=[],N=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:k});S.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...S]),x++,this.connection.onSignature(E,Q=>{let v=S.findIndex(j=>j.txId===E);v>-1&&(S[v].status=Q.err?"error":"success"),A==null||A([...S]),Q.err||N()},"processed"),this.connection.getSignatureStatus(E)};return N(),{txIds:[],signedTxs:B}}else{let x=[];for(let S=0;S<B.length;S+=1){let N=await this.connection.sendTransaction(B[S],{skipPreflight:k});x.push(N)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var at=class{constructor(e){this._owner=e}get publicKey(){return at.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return at.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return at.isKeyPair(this._owner)}get isPublicKey(){return at.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!at.isKeyPair(e)}};function bi(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ce}from"@solana/web3.js";var jo=new ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qo=new ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Sn=new ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Gp=new ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Xp=new ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),zp=new ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zo=new ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Yp=new ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Hp=new ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),jp=new ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Qp=new ce("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tc=new ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nc=new ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),rc=new ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ic=new ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Zp=new ce("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),$p=new ce("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Jp=new ce("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),oc=new ce("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),sc=new ce("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ac=new ce("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Kn={IDO_PROGRAM_ID_V1:tc,IDO_PROGRAM_ID_V2:nc,IDO_PROGRAM_ID_V3:rc,IDO_PROGRAM_ID_V4:ic};var ef={SERUM_MARKET:ce.default,OPENBOOK_MARKET:new ce("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ce.default,FarmV3:new ce("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ce("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ce("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ce("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ce("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ce("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ce("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:oc,CREATE_CPMM_POOL_AUTH:sc,CREATE_CPMM_POOL_FEE_ACC:ac,FEE_DESTINATION_ID:new ce("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as uc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cc}from"@solana/spl-token";function we(i,e,t){return ue([i.toBuffer(),(t!=null?t:cc).toBuffer(),e.toBuffer()],new uc("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ut from"bn.js";var Cn=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=W(L({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new ut(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Cn){let u=new ut(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Ln(i.mul(new ut(Cn)),new ut(Cn-o.transferFeeBasisPoints)),c=new ut(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Ln(l.mul(new ut(o.transferFeeBasisPoints)),new ut(Cn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ln(i.mul(new ut(o.transferFeeBasisPoints)),new ut(Cn)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Xt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Ln(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ut(0))?t.add(new ut(1)):t}var Oe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Sf=L({},Oe);var $o="ray_tab_hash",wi="ray_req_hash",lc=()=>{if(typeof window===void 0)return"";let i=sessionStorage.getItem($o);return i||(i=`ray-${Date.now()}`,sessionStorage.setItem($o,i)),i},Ir=async n=>{var r=n,{logCount:i=1e3,removeLastLog:e}=r,t=Ae(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(wi)||"[]").slice(0,i-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(L({},t),{time:Date.now(),session:lc()}));try{localStorage.setItem(wi,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(wi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Ir(W(L({},t),{logCount:i,removeLastLog:!0}))}};var xr=oe("Raydium_Api"),Ai=new Map;var Br=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=r||1e3,this.api=dc.create({baseURL:this.urlConfigs.BASE_HOST||Oe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return xr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(xr.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&&Ir({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),xr.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&&Ir({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),xr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Oe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Oe.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(r=>r.numSlots);return n.reduce((r,o)=>r+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Oe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Oe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Oe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Oe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Oe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Oe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Oe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>Ai.has(s)?(n.push(Ai.get(s)),!1):!0),o=[];return r.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Oe.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Ai.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&on(t).toBase58(),n&&n!=="undefined"?on(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Oe.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Oe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Oe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Oe.CHECK_AVAILABILITY)).data}};var Sr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Jo="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as Et,AccountLayout as cn,TOKEN_2022_PROGRAM_ID as Wc}from"@solana/spl-token";import{PublicKey as _r,SystemProgram as qc}from"@solana/web3.js";var hi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new kr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(hi(e))}logInfo(...e){this.logger.info(hi(e))}logAndCreateError(...e){let t=hi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as _c,createCloseAccountInstruction as Ec,createTransferInstruction as Vc,TOKEN_PROGRAM_ID as un}from"@solana/spl-token";import{PublicKey as Fc,SystemProgram as vc}from"@solana/web3.js";import Dc from"bn.js";import{PublicKey as ps,Keypair as Rc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oc}from"@solana/spl-token";import Nc from"bn.js";import{PublicKey as Ic}from"@solana/web3.js";import is,{isBN as os}from"bn.js";import{bits as pc,BitStructure as ay,blob as fc,Blob as uy,cstr as cy,f32 as ly,f32be as my,f64 as dy,f64be as py,greedy as fy,Layout as yc,ns64 as yy,ns64be as by,nu64 as bc,nu64be as gy,offset as wy,s16 as Ay,s16be as hy,s24 as Py,s24be as ky,s32 as gc,s32be as Ty,s40 as Iy,s40be as xy,s48 as By,s48be as Sy,s8 as Ky,seq as wc,struct as Cy,Structure as Ac,u16 as hc,u16be as Ly,u24 as Ry,u24be as Oy,u32 as Pc,u32be as Ny,u40 as My,u40be as _y,u48 as Ey,u48be as Vy,u8 as kc,UInt as Tc,union as Fy,Union as vy,unionLayoutDiscriminator as Dy,utf8 as Wy}from"@solana/buffer-layout";var Kr=yc,es=Ac;var Pi=Tc;var ts=kc,bt=hc;var ki=Pc;var ns=bc;var Ne=gc;var rs=wc;var be=fc;var Ti=pc;var zt=class extends Kr{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new is(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new is(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},Cr=class extends Kr{constructor(t){super(8,t);this._lower=Ti(ki(),!1),this._upper=Ti(ki(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return L(L({},r),o)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function F(i){return new Pi(1,i)}function Ge(i){return new Pi(4,i)}function w(i){return new zt(8,!1,i)}function X(i){return new zt(16,!1,i)}function ss(i){return new zt(1,!0,i)}function Rr(i){return new zt(8,!0,i)}function as(i){return new zt(16,!0,i)}var Lr=class extends Kr{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(i){return new Lr(be(32),e=>new Ic(e),e=>e.toBuffer(),i)}function Ee(i){return new Lr(ts(),xc,Bc,i)}function xc(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Bc(i){return i?1:0}var Ii=class extends es{decode(e,t){return super.decode(e,t)}};function M(i,e,t){return new Ii(i,e,t)}function q(i,e,t){let n,r=typeof e=="number"?e:os(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=os(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 rs(i,r,t)}var an=M([K("mint"),K("owner"),w("amount"),Ge("delegateOption"),K("delegate"),F("state"),Ge("isNativeOption"),w("isNative"),w("delegatedAmount"),Ge("closeAuthorityOption"),K("closeAuthority")]);function Sc(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function xi(i,...e){if(!Sc(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Bi(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function us(i,e){xi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Nr=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ct=(i,e)=>i<<32-e|i>>>e;var nb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Kc(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Si(i){return typeof i=="string"&&(i=Kc(i)),xi(i),i}var Or=class{clone(){return this._cloneInto()}},rb={}.toString;function cs(i){let e=n=>i().update(Si(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Cc(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var ls=(i,e,t)=>i&e^~i&t,ms=(i,e,t)=>i&e^i&t^e&t,Mr=class extends Or{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Nr(this.buffer)}update(e){Bi(this);let{view:t,buffer:n,blockLen:r}=this;e=Si(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Nr(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Bi(this),us(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Cc(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Nr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Lc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_t=new Uint32Array(64),Ki=class extends Mr{constructor(){super(64,32,8,!1),this.A=Mt[0]|0,this.B=Mt[1]|0,this.C=Mt[2]|0,this.D=Mt[3]|0,this.E=Mt[4]|0,this.F=Mt[5]|0,this.G=Mt[6]|0,this.H=Mt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)_t[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=_t[m-15],p=_t[m-2],y=ct(d,7)^ct(d,18)^d>>>3,f=ct(p,17)^ct(p,19)^p>>>10;_t[m]=f+_t[m-7]+y+_t[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ct(a,6)^ct(a,11)^ct(a,25),p=l+d+ls(a,u,c)+Lc[m]+_t[m]|0,f=(ct(n,2)^ct(n,13)^ct(n,22))+ms(n,r,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){_t.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ds=cs(()=>new Ki);var hb=oe("Raydium_Util");function fs({owner:i,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:o,account:s}of t.value){let a=an.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:we(i,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),r.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ps.default,amount:new Nc(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Ve({fromPublicKey:i,programId:e=Oc}){let t=Rc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Mc(i,t,e),seed:t}}function Mc(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=ds(n);return new ps(r)}function Ci(i){let{mint:e,tokenAccount:t,owner:n,programId:r=un}=i;return _c(t,e,n,r)}function xt(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=un}=i;return Ec(e,t,r,n,o)}async function gt(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(an.span,n),u=Y(t).add(new Dc(a)),c=Ve({fromPublicKey:r,programId:un});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[vc.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:an.span,programId:un}),Ci({mint:new Fc(Re.address),tokenAccount:c.publicKey,owner:o,programId:un})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[xt({tokenAccount:c.publicKey,payer:r,owner:o})]}}function Rn({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=un}){return Vc(i,e,t,BigInt(String(n)),r,o)}var On=class extends Pe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}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 we(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 r=L(L({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Et},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Wc},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=fs({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=Et,associatedOnly:r=!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&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new _r(t.tokenProgram||Et),m=this.getAssociatedTokenAccount(n,new _r(l)),d=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,h)=>g.accountInfo.amount.lt(h.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=Li(s,m,s,n,l);if(c){let h=await this.scope.connection.getAccountInfo(m);if(h===null)(y=p.instructions)==null||y.push(g),p.instructionTypes.push(_.CreateATA);else if(!(h.owner.equals(l)&&cn.decode(h.data).mint.equals(n)&&cn.decode(h.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(te)&&r.amount){let h=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...h.instructions||[]),p.endInstructions.push(...h.endInstructions||[]),p.instructionTypes.push(...h.instructionTypes||[]),p.endInstructionTypes.push(...h.endInstructionTypes||[]),r.amount&&(p.instructions.push(Rn({source:h.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:Et})),p.instructionTypes.push(_.TransferAmount))}return u||(p.endInstructions.push(xt({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:p}}else if(n.equals(te)){let g=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(b=r.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=Ve({fromPublicKey:s,programId:l}),h=await this.scope.connection.getMinimumBalanceForRentExemption(cn.span),A=qc.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:h,space:cn.span,programId:l});return p.instructions.push(A,Ci({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(_.CreateAccount),p.instructionTypes.push(_.InitAccount),u||(p.endInstructions.push(xt({owner:s,payer:r.payer||s,tokenAccount:g.publicKey,programId:l})),p.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Et,autoUnwrapWSOLToSOL:r}){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 Li(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return r&&te.toBase58()===t.toBase58()&&(a.endInstructions=[xt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:o,programId:s=Et,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new _r(te).equals(o)){let p=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return L({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Et)&&cn.decode(f.data).mint.equals(o)&&cn.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:r=Et,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new _r(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ae(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ae(m,["tokenAccount"]);u=d,c.addInstruction(p)}return L({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as ol}from"@solana/spl-token";import{PublicKey as fe,SystemProgram as sl}from"@solana/web3.js";import{PublicKey as gs}from"@solana/web3.js";var Ri=M([F("instruction")]),Oi=M([F("instruction")]),Uc=M([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),X("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Gc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),X("perShareReward"),w("lastSlot"),w("perSlotReward")]),Xc=M([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),X("perShareRewardA"),w("perSlotRewardA"),F("option"),K("rewardVaultB"),be(7),w("totalRewardB"),X("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),zc=M([w(),w("state"),w("nonce"),w("validRewardTokenNum"),X("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(Uc,5,"rewardInfos"),K("creator"),K(),q(w(),32,"padding")]),Yc=new Proxy(Gc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(L({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Hc=new Proxy(Xc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(L({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Er=new Proxy(zc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(L({},r),{version:6,rewardInfos:r.rewardInfos.map(o=>{var s;return W(L({},o),{rewardType:((s=Object.entries(Vt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),jc=M([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ni=M([F("instruction"),w("nonce"),q(jc,5,"rewardTimeInfo")]),Mi=M([F("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),_i=M([F("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),$b=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Ei=M([w("state"),K("id"),K("owner"),w("deposited"),q(X(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),Jb=M([w("state"),K("id"),K("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ys=M([w("state"),K("id"),K("owner"),w("deposited"),q(X(),2,"rewardDebts"),q(w(),17)]),bs=M([w(),w("state"),K("id"),K("owner"),w("deposited"),q(X(),5,"rewardDebts"),q(w(),16)]),Qe=M([F("instruction"),w("amount")]),Qc=M([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ss("digitShift"),q(F(),7,"reserved1"),q(w(),7,"reserved2")]),Zc=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(F(),32,"reserved1"),q(Qc,4,"votingMints"),Rr("timeOffset"),F("bump"),q(F(),7,"reserved2"),q(w(),11,"reserved3")]),$c=M([Rr("startTime"),Rr("endTime"),F("kind"),q(F(),15,"reserved")]),Jc=M([q($c,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),F("votingMintConfigIdx"),q(F(),29,"reserved")]),el=M([be(8),K("voterAuthority"),K("registrar"),q(Jc,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),q(F(),94,"reserved")]);var ag=oe("Raydium_farm_config"),ws=new gs("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),As=new gs("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var hs={3:Ei,5:ys,6:bs},Vi=i=>[3,5,6].indexOf(i)!==-1,Fi=i=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=i,r=`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: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=o[e])==null?void 0:s.call(o)},Vt={"Standard SPL":0,"Option tokens":1},lt={[jo.toString()]:3,[Qo.toString()]:5,[Sn.toString()]:6};import{PublicKey as le,SystemProgram as Ts,SYSVAR_RENT_PUBKEY as rl,SYSVAR_CLOCK_PUBKEY as Vr,TransactionInstruction as mt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Fg,TOKEN_PROGRAM_ID as Ft,ASSOCIATED_TOKEN_PROGRAM_ID as vg}from"@solana/spl-token";import Is from"bn.js";import tl from"bn.js";var nl=oe("Raydium.farm.util");function Nn({programId:i,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function wt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Ps=({programId:i,poolId:e})=>ue([e.toBuffer()],i);function ks(i){return{isSet:new tl(1),rewardPerSecond:Y(i.perSecond),rewardOpenTime:Y(i.openTime),rewardEndTime:Y(i.endTime),rewardType:Y(Vt[i.rewardType])}}function vi(i){return Y(i.endTime).sub(Y(i.openTime)).mul(Y(i.perSecond))}function Di(i){let e=hs[i];return e||nl.logWithError("invalid version",i),e}var il=oe("Raydium_farm_instruction"),$g={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 xs(i){let{version:e,id:t,ledger:n,programId:r,owner:o}=i,s={3:9,5:10}[e];s||il.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ri.span);Ri.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:rl,isWritable:!1})];return{instruction:new mt({programId:r,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function Bs(i){var n;let e=Buffer.alloc(Ni.span);Ni.encode({instruction:0,nonce:new Is(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...oi,T({pubkey:i.farmId}),T({pubkey:i.farmAuthority,isWritable:!1}),T({pubkey:i.lpVault}),T({pubkey:i.lpMint,isWritable:!1}),T({pubkey:i.lockVault}),T({pubkey:i.lockMint,isWritable:!1}),T({pubkey:(n=i.lockUserAccount)!=null?n:Se}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(T({pubkey:r.rewardMint,isWritable:!1}),T({pubkey:r.rewardVault}),T({pubkey:r.userRewardToken}));return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function Ss(i){let e=Buffer.alloc(Oi.span);Oi.encode({instruction:5},e);let t=[T({pubkey:Ft,isWritable:!1}),T({pubkey:i.id}),T({pubkey:i.authority,isWritable:!1}),T({pubkey:i.lpVault,isWritable:!1}),T({pubkey:i.rewardVault}),T({pubkey:i.userRewardToken}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function Wi({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let o=Buffer.alloc(Mi.span);Mi.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},o);let s=[T({pubkey:Ft,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:n.programId,keys:s,data:o})}function qi({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let o=Buffer.alloc(_i.span);_i.encode({instruction:4,isSet:new Is(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(Vt[r.rewardType])},o);let s=[...oi,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:r.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:t.programId,keys:s,data:o})}function Mn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=wt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:2,amount:Y(s)},l);let m=[T({pubkey:Ft,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}function _n(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:12,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function En(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ks(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:10,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Cs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=wt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:Ft,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ls(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=wt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:1,amount:Y(s)},l);let m=[T({pubkey:Ft,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}var Vn=class extends Pe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Se)){let n=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:vi(W(L({},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:r=Sn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new fe(e.lpMint.address),lockInfo:{lockMint:ws,lockVault:As},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ve({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Er.span);u.addInstruction({instructions:[sl.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Er.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ps({programId:new fe(a.programId),poolId:l.publicKey}),y=Nn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let P of a.rewardInfos){P.openTime>=P.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",P.openTime.toString()),isNaN(Vt[P.rewardType])&&this.logAndCreateError("rewardType error",P.rewardType),Number(P.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",P.perSecond),f.push(ks(P));let{rewardPubKey:k,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:P,payer:c});I&&u.addInstruction(I),k||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=P.mint.equals(Se)?new fe(Re.address):P.mint;b.push({rewardMint:B,rewardVault:Nn({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:k})}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:h,instructionType:A}=Bs({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:[h],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((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(Se)?new fe(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new fe(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:Se,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:[Wi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((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(Se)?new fe(Re.address):m.mint,p=a.rewardInfos.findIndex(A=>new fe(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Se,{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 h=Wi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Se)?new fe(Re.address):r.mint,m=Nn({programId:new fe(n.programId),poolId:new fe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[qi({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Se)?new fe(Re.address):l.mint,d=Nn({programId:new fe(n.programId),poolId:new fe(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=qi({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(L({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,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=lt[d];Vi(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new fe(n.programId),new fe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=wt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=we(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let P=b.lpMint,k=A[P.address];k||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let v of m){let j=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:re,instructionParams:rt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new fe(v.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=re,rt&&h.addInstruction(rt)}A[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=Di(p).decode(x.data)),n.programId!==Sn.toString()&&!B){let{instruction:v,instructionType:j}=xs({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[v],instructionTypes:[j]})}let S=Fi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:I});S&&this.logAndCreateError(S);let N={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:k,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new fe(v))},E=p===6?Ls(N):p===5?Cs(N):Ks(N),Q={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return h.addInstruction({instructions:[E],instructionTypes:[Q[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,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=lt[n.programId];Vi(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 S of this.scope.account.tokenAccounts)if(u){let N=we(this.scope.ownerPubKey,S.mint).publicKey;S.publicKey&&N.equals(S.publicKey)&&(b[S.mint.toString()]=S.publicKey)}else b[S.mint.toString()]=S.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let S=wt({programId:new fe(n.programId),poolId:new fe(n.id),owner:this.scope.ownerPubKey,version:p}),N=await this.scope.connection.getAccountInfo(S);N||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:N}),Di(p).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new fe(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=S,N&&f.addInstruction(N)}b[g.toString()]=A;let P=[];for(let S of d){let N=s&&S.mint.address===te.toString(),E=b[S.mint.address];if(!E){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.mint.programId,mint:new fe(S.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,v&&f.addInstruction(v)}b[S.mint.address]=E,P.push(E)}let k=Fi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:P});k&&this.logAndCreateError(k);let I={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:P,userAuxiliaryLedgers:l==null?void 0:l.map(S=>new fe(S))},B=p===6?Mn(I):p===5?_n(I):En(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Se.toString()?new fe(Re.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Se,c=this.createTxBuilder(),l;if(t.equals(Se)){let y=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:vi(W(L({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[ol(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ss({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.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:r,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=we(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>W(L({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=lt[f],P=b.address,k=n&&P===te.toString(),I=m[P];if(!I){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new fe(P),notUseTokenAccount:k,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:k?!1:o,checkCreateATAOwner:s});I=Q,v&&l.addInstruction(v)}m[P.toString()]=I;let B=[];for(let Q of g){let v=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new fe(Q.mint.address),notUseTokenAccount:v,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,re&&l.addInstruction(re)}m[Q.mint.address]=j,B.push(j)}let x=p[h],S={amount:qe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new fe(Q))},N=A===6?Mn(S):A===5?_n(S):En(S),E={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as He}from"@solana/web3.js";import{NATIVE_MINT as ma,TOKEN_PROGRAM_ID as Xr}from"@solana/spl-token";var Pw=M([Ge("mintAuthorityOption"),K("mintAuthority"),w("supply"),F("decimals"),F("isInitialized"),Ge("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as xw}from"@solana/web3.js";import{MintLayout as Sw,TOKEN_PROGRAM_ID as Cw}from"@solana/spl-token";var Rs=i=>new he({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});import{TOKEN_PROGRAM_ID as Fr,ASSOCIATED_TOKEN_PROGRAM_ID as hl}from"@solana/spl-token";import{PublicKey as At,TransactionInstruction as mn,SystemProgram as vs,SYSVAR_RENT_PUBKEY as Jw}from"@solana/web3.js";var Ui=M([F("instruction"),w("amountIn"),w("minAmountOut")]),Gi=M([F("instruction"),w("maxAmountIn"),w("amountOut")]),Uw=M([F("instruction"),F("nonce")]),al=M([F("instruction"),F("nonce"),w("startTime")]),Gw=M([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"),X("swapBaseInAmount"),X("swapQuoteOutAmount"),w("swapBase2QuoteFee"),X("swapQuoteInAmount"),X("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),q(w(),3,"padding")]),Xw=M([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"),X("swapBaseInAmount"),X("swapQuoteOutAmount"),X("swapQuoteInAmount"),X("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(w(),64,"padding")]),Xi=M([F("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),zi=M([F("instruction"),w("amountIn")]);var Os=M([w("fee")]);import{PublicKey as ul}from"@solana/web3.js";var ln=new ul("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ht=5e4,cl=M([w("x"),w("y"),w("price")]),ll=M([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(cl,Ht,"DataElement")]);function ml(i,e){return[0,Ht-2]}function dl(i){return[0,Ht-2]}function pl(i){return[0,Ht-2]}function fl(i,e,t){let[n,r]=ml(e,t),o=n,s=r,a=0,u=e*i.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Ht-2)return[a,a,!1];let c=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.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 Yi(i,e,t){let[n,r,o]=fl(i,e,t);if(!o)return 0;if(n===r){let s=i.DataElement[n].x;return e*i.multiplier/s}else{let s=i.DataElement[n].x,a=i.DataElement[n].y,u=i.DataElement[r].x,c=i.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*i.multiplier*l/p}}function Yt(i,e,t){return e*i.multiplier/t}function Ns(i,e,t){return e*t/i.multiplier}function yl(i,e){let[t,n]=dl(e),r=t,o=n,s=0,a=e;for(;r<o;){if(s=Math.floor((o+r)/2),s<=0||s>Ht-2)return[s,s,!1];let u=i.DataElement[s].x,c=i.DataElement[s-1].x,l=i.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];r=s+1}}return[s,s,!1]}function bl(i,e){let[t,n]=pl(e),r=t,o=n,s=0,a=e;for(;r<=o;){if(s=Math.floor((o+r)/2),s<=0||s>=Ht-2)return[s,s,!1];let u=i.DataElement[s].y,c=i.DataElement[s-1].y,l=i.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)r=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 Ms(i,e,t,n){let r=n?e+t:e-t,[o,s,a]=yl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].y,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-(r-u)*i.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*i.multiplier/l),[y,f,!1,a]}}}function gl(i,e,t,n){let r=n?e-t:e+t,[o,s,a]=bl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].x,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.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-r)/i.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/i.multiplier),[y,f,!1,a]}}}function wl(i,e){let t=Ms(i,e,0,!1);return t[3]?t[0]:0}function _s(i,e,t,n){let r=Yi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!0,[c,l,m,d]=Ms(i,o,a,u);if(!d)return 0;if(m)return n*i.multiplier/c;{let p=s-l;return Ns(i,p,r)}}function Es(i,e,t,n){let r=Yi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!1,[c,l,m,d]=gl(i,s,a,u);if(!d)return 0;if(m)return n*c/i.multiplier;{let p=o-l;return Ns(i,p,r)}}function Al(i){let e=ll.decode(i);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 Vs(i,e,t,n){let r=wl(i,Yt(i,e,Yi(i,e,t)))/i.multiplier;return n?r:1/r}var Fn=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(ln);e&&(this._layoutData=Al(e==null?void 0:e.data))}}};var Fs=oe("Raydium_liquidity_instruction");function Ds(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:o,fixedSide:s}=i,a=Buffer.alloc(Xi.span);Xi.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(o),fixedSide:s==="base"?qe:vo},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:new At(e.id)}),T({pubkey:new At(t.authority),isWritable:!1}),T({pubkey:new At(t.openOrders),isWritable:!1}),T({pubkey:new At(t.targetOrders)}),T({pubkey:new At(e.lpMint.address)}),T({pubkey:new At(t.vault.A)}),T({pubkey:new At(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:ln})),u.push(T({pubkey:new At(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new At(t.marketEventQueue),isWritable:!1})),new mn({programId:new At(e.programId),keys:u,data:a})}function Hi(i){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=i,o=Ue(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(zi.span);zi.encode({instruction:4,amountIn:Y(r)},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:ln})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new mn({programId:o.programId,keys:u,data:a})}return new mn({programId:o.programId,keys:[]})}function Ws({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,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:h,openTime:A,coinAmount:P,pcAmount:k,ammConfigId:I,feeDestinationId:B}){let x=M([F("instruction"),F("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),S=[{pubkey:Fr,isSigner:!1,isWritable:!1},{pubkey:hl,isSigner:!1,isWritable:!1},{pubkey:vs.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:B,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}],N=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:h,openTime:A,coinAmount:P,pcAmount:k},N),{instruction:new mn({keys:S,programId:i,data:N}),instructionType:_.AmmV4CreatePool}}function Pl({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Ue(i),s=Buffer.alloc(Ui.span);Ui.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new mn({programId:o.programId,keys:a,data:s})}function kl({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Ue(i),s=Buffer.alloc(Gi.span);Gi.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[T({pubkey:vs.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:o.programId,keys:a,data:s})}function qs(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pl(W(L({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return kl(W(L({},a),{maxAmountIn:r,amountOut:o}),t);Fs.logWithError("invalid params","params",i)}throw Fs.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Me,TOKEN_2022_PROGRAM_ID as qt,ASSOCIATED_TOKEN_PROGRAM_ID as ra}from"@solana/spl-token";import{PublicKey as D,TransactionInstruction as dt,SystemProgram as dn,Keypair as no}from"@solana/web3.js";import ia from"bn.js";import Rl from"bn.js";function vr(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function ji(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Qi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function vn(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Us(i,e){return vn(i,e)?null:ji(i,e)}function Gs(i,e){return vn(i,e)?null:Qi(i,e)}var pA=Buffer.from("amm_config","utf8"),Tl=Buffer.from("pool","utf8"),Il=Buffer.from("pool_vault","utf8"),xl=Buffer.from("pool_reward_vault","utf8"),Xs=Buffer.from("position","utf8"),Bl=Buffer.from("tick_array","utf8"),Sl=Buffer.from("operation","utf8"),Kl=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zs(i,e,t,n){return ue([Tl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Zi(i,e,t){return ue([Il,e.toBuffer(),t.toBuffer()],i)}function Ys(i,e,t){return ue([xl,e.toBuffer(),t.toBuffer()],i)}function de(i,e,t){return ue([Bl,e.toBuffer(),vr(t)],i)}function jt(i,e,t,n){return ue([Xs,e.toBuffer(),vr(t),vr(n)],i)}function et(i,e){return ue([Xs,e.toBuffer()],i)}function Dr(i){return ue([Buffer.from("metadata","utf8"),rn.toBuffer(),i.toBuffer()],rn)}function Dn(i){return ue([Sl],i)}function ht(i,e){return ue([Kl,e.toBuffer()],i)}import Pt from"bn.js";var xe=new Pt(0),kt=new Pt(1),Bt=new Pt(-1),Ze=new Pt(1).shln(64),Wr=new Pt(1).shln(128),$i=Ze.sub(kt),Wn=64,Hs=Wr.subn(1),Fe=-443636,Xe=-Fe,vt=new Pt("4295048016"),Dt=new Pt("79226673521066979257578248091"),js=16,Qs="59543866431248",Zs="184467440737095516",$s="15793534762490258745",qr=new Pt(10).pow(new Pt(6));var Js={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:[]},bA=new Pt("18446744073700000000");var Cl=15,se=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(r,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Cl/2));for(let p=0;p<l.length;p++){let{publicKey:y}=de(t,n,l[p]);u.push(y)}let m=(await yt(e,u)).map(p=>p!==null?qn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(L({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=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,r,o){let s=Math.floor(e/se.tickCount(t)),a=n?U.searchLowBitFromStart(r,o,s-1,1,t):U.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ke-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<Ke;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=U.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ke;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=de(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>Xe)return!1;let n=U.getTickArrayStartIndexByTick(Fe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ke*e}};import ne from"bn.js";import{PublicKey as Wt}from"@solana/web3.js";import Te from"bn.js";var Ji=14,St=class{static maxTickInTickarrayBitmap(e){return e*Ke*Qt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!se.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-se.tickCount(n):t+se.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ke,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Us(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=Gs(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-se.tickCount(n)}}}},Un=class{static getBitmapOffset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=St.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;if(Xe<=t)throw Error(`extensionTickBoundary check error: ${Xe}, ${t}`);if(n<=Fe)throw Error(`extensionTickBoundary check error: ${n}, ${Fe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=se.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=St.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=U.mergeTickArrayBitmap(e).shln(Qt-1-a),c=vn(512,u)?null:ji(512,u);if(c!==null){let l=t-c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=vn(512,u)?null:Qi(512,u);if(c!==null){let l=t+c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-se.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%St.maxTickInTickarrayBitmap(t),r=Math.floor(n/se.tickCount(t));return e<0&&n!=0&&(r=Qt-r),r}};import Tt from"bn.js";var Gn=class{static getfeeGrowthInside(e,t,n){let r=new Tt(0),o=new Tt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Tt(0),a=new Tt(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,r),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ze),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ze),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ze),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ze),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,Ze),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,Ze),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Tt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Tt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Tt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Tt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,h,A;let a=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),u=J.getSqrtPriceX64FromTick(t.tickLower),c=J.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=ae.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),ye(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[ye(new Tt(new V(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ye(new Tt(new V(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ea}from"@solana/spl-token";var ve=class{static getOutputAmountAndRemainAccounts(e,t,n,r,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}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...d),{expectedAmountOut:m.mul(Bt),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=de(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Bt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ve.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Un.checkTickArrayIsInit(se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(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/se.tickCount(e.tickSpacing)),r=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=se.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=St.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Un.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Fe||t>Xe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(L({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Wt(d)});if(p.tokenMint.equals(Wt.default))continue;if(n<=p.openTime.toNumber()||r.eq(xe)){s.push(p);continue}let y=new Te(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=Z.mulDivFloor(f,p.emissionsPerSecondX64,Ze),A=p.rewardTotalEmissioned.add(h);s.push(W(L({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;return t>Xe&&(t=se.getArrayStartIndex(Xe,e)+se.tickCount(e)),n<Fe&&(n=se.getArrayStartIndex(Fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/se.tickCount(t)*Qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await wr(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=ta.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=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}=de(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await wr(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=qn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(L({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(et(p,d).publicKey);let l=await yt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=Gr.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}),h=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:P}=ae.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),k=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>W(L({},x),{pendingReward:new Te(0)})),leverage:k,tokenFeeAmountA:new Te(0),tokenFeeAmountB:new Te(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=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}`]=B}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=qn.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,P=y[m[h].toString()],k=y[m[A].toString()],I=P.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=k.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:S}=await Gn.GetPositionFees(f,g,I,B),N=await Gn.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Te(0))?x:new Te(0),g.tokenFeeAmountB=S.gte(new Te(0))?S:new Te(0);for(let E=0;E<N.length;E++)g.rewardInfos[E].pendingReward=N[E].gte(new Te(0))?N[E]:new Te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new V(0)}){var N;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 V(0))?u=c?vt.add(new Te(1)):Dt.sub(new Te(1)):u=J.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,r,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=ve.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((N=d.fee)!=null?N:xe),u),g=ye(p,m,r,!1),h=J.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new V(1).div(h),P=p.mul(new Te(Math.floor((1-s)*1e10))).div(new Te(1e10)),k=ye(P,m,r,!1),I=c?e.currentPrice:new V(1).div(e.currentPrice),B=new V(A).sub(I).abs(),x=I,S=new je(new V(B).mul(10**15).toFixed(0),new V(x).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:k,expirationTime:Xt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:S,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(L({},u),{mint:u.address,isToken2022:u.programId===ea.toBase58()})),new he(W(L({},c),{mint:c.address,isToken2022:c.programId===ea.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:h,fee:A,remainingAccounts:P}=await ve.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Wt(u.address),amountIn:n,slippage:o,epochInfo:s}),k=W(L({},d),{amount:new ke(l,d.amount),fee:d.fee===void 0?void 0:new ke(l,d.fee)}),I=W(L({},p),{amount:new ke(m,p.amount),fee:p.fee===void 0?void 0:new ke(m,p.fee)}),B=W(L({},y),{amount:new ke(m,y.amount),fee:y.fee===void 0?void 0:new ke(m,y.fee)}),x=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:b.mul(new V(10**(20+m.decimals))).toFixed(0)}),S=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:g.mul(new V(10**(20+m.decimals))).toFixed(0)}),N=new ke(l,A);return{realAmountIn:k,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:S,priceImpact:h,fee:N,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){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:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[on(e.mintA.address).toString()],d=r[on(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=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),b=J.getSqrtPriceX64FromTick(s),g=J.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:k}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(d.value)),B=new V(P.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(k.toString()).div(new V(10).pow(y)).mul(d.value)),x=B.div(I.add(B)).div(B),N=new V(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,Q=e.rewardDefaultInfos.map(v=>{var re,rt;let j=v.mint.decimals,ee=r[v.mint.address];return u<((re=v.startTime)!=null?re:0)||u>((rt=v.endTime)!=null?rt:0)||!v.perSecond||!ee||j===void 0?0:new V(ee.value).mul(new V(v.perSecond).mul(E)).div(new V(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((v,j)=>v+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=J.getSqrtPriceX64FromTick(n),d=J.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Te(new V(y.amount.sub((h=y.fee)!=null?h:xe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ae.getLiquidityFromTokenAmountA(m,d,f,!a):new Te(0);else if(l.lte(d)){let A=ae.getLiquidityFromTokenAmountA(l,d,f,!a),P=ae.getLiquidityFromTokenAmountB(m,l,f);b=t?A:P}else b=t?new Te(0):ae.getLiquidityFromTokenAmountB(m,d,f);return ve.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,h,A;let u=J.getSqrtPriceX64FromTick(n),c=J.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ae.getAmountsFromLiquidity(J.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),ye(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[ye(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ye(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new Wt(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=Ur.decode(r.data),s=ht(e,new Wt(n.id)).publicKey,a=await ve.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(L({},o),{id:new Wt(n.id),programId:new Wt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(L({},n.config),{id:new Wt(n.config.id),fundOwner:""}),currentPrice:new V(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var Z=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(xe)||(o=o.add(kt)),o}static mulDivFloor(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).add(n.sub(kt)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Wr).sub(t).mod(Wr)}};function Ce(i,e){return eo(i.mul(e),64,256)}function Ll(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function eo(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var J=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(xe))return e;let o=t.shln(Wn);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,kt,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,r){let o=n.shln(Wn);if(r)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,kt,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<Fe||e>Xe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ce(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ce(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ce(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ce(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ce(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ce(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ce(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ce(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ce(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ce(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ce(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ce(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ce(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ce(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ce(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ce(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ce(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ce(n,new ne("37481735321082"))),e>0&&(n=Hs.div(n)),n}static getTickFromPrice(e,t,n){return J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Dt)||e.lt(vt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),r=Ll(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<js;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new ne(Qs)),d=eo(m.sub(new ne(Zs)),64,128).toNumber(),p=eo(m.add(new ne($s)),64,128).toNumber();return d==p?d:J.getSqrtPriceX64FromTick(p).lte(e)?p:d}},$t=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=$t.getTickWithPriceAndTickspacing(e,t,n,r),s=J.getSqrtPriceX64FromTick(o);return J.sqrtPriceX64ToPrice(s,n,r)}},ae=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Wn),s=t.sub(e);return r?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),kt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");return r?Z.mulDivCeil(n,t.sub(e),Ze):Z.mulDivFloor(n,t.sub(e),Ze)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?Z.mulDivRoundingUp(a,kt,$i):a.shrn(Wn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,$i,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ae.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ae.getLiquidityFromTokenAmountA(e,n,r,!1),a=ae.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ae.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ae.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ne(0)};if(e.lt(n)){let s=ae.getTokenAmountAFromLiquidity(e,n,r,o),a=ae.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ae.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=ae.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new ne(new V(u.toString()).mul(l).toFixed(0)),d=new ne(new V(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,P,k;let c=J.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=J.getSqrtPriceX64FromTick(t),m=J.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ae.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[ye(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ye(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[ye(new ne(new V(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),ye(new ne(new V(p.amountB.toString()).mul(d).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Xt(y.expirationTime,f.expirationTime)}}},Zt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y){if(d.eq(xe))throw new Error("amountSpecified must not be 0");if(y||(y=s?vt.add(kt):Dt.sub(kt)),s){if(y.lt(vt))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(Dt))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(xe),b={amountSpecifiedRemaining:d,amountCalculated:xe,sqrtPriceX64:m,tick:c>p?Math.min(p+se.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,h=n[p],A=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(xe)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let k={};k.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(h,b.tick,l,s,P),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=ve.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:E}=de(e,t,g);x=E,h=n[g],B=U.firstInitializedTick(h,s)}k.tickNext=B.tick,k.initialized=B.liquidityGross.gtn(0),p!==g&&x&&(b.accounts.push(x),p=g),k.tickNext<Fe?k.tickNext=Fe:k.tickNext>Xe&&(k.tickNext=Xe),k.sqrtPriceNextX64=J.getSqrtPriceX64FromTick(k.tickNext);let S;if(s&&k.sqrtPriceNextX64.lt(y)||!s&&k.sqrtPriceNextX64.gt(y)?S=y:S=k.sqrtPriceNextX64,[b.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=Zt.swapStepCompute(b.sqrtPriceX64,S,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(k.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(k.amountIn.add(k.feeAmount)),b.amountCalculated=b.amountCalculated.sub(k.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(k.amountOut),b.amountCalculated=b.amountCalculated.add(k.amountIn.add(k.feeAmount))),b.sqrtPriceX64.eq(k.sqrtPriceNextX64)){if(k.initialized){let N=B.liquidityNet;s&&(N=N.mul(Bt)),b.liquidity=ae.addDelta(b.liquidity,N)}P=k.tickNext!=b.tick&&!s&&h.startTickIndex===k.tickNext,b.tick=s?k.tickNext-1:k.tickNext}else if(b.sqrtPriceX64!=k.sqrtPriceStartX64){let N=J.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=N!=b.tick&&!s&&h.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:k,isExist:I}=se.nextInitializedTickArray(b.tick,l,s,r,o);I&&p!==k&&(b.accounts.push(de(e,t,k).publicKey),p=k)}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,r,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=r.gte(xe);if(u){let l=Z.mulDivFloor(r,qr.sub(new ne(o.toString())),qr);s.amountIn=a?ae.getTokenAmountAFromLiquidity(t,e,n,!0):ae.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ae.getTokenAmountBFromLiquidity(t,e,n,!1):ae.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Bt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromOutput(e,n,r.mul(Bt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ae.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ae.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ae.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ae.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Bt))&&(s.amountOut=r.mul(Bt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),qr.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ke=60,Qt=512,U=class{static getTickArrayAddressByTick(e,t,n,r){let o=U.getTickArrayStartIndexByTick(n,r),{publicKey:s}=de(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),r=Math.floor((e-n)/t);if(r<0||r>=Ke)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=se.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*se.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ke,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ke,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ke:e+t*Ke}static mergeTickArrayBitmap(e){let t=new Rl(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ke));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,Qt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>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===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Fe||e>Xe}static nextInitTick(e,t,n,r,o){if(se.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ke;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new V(1).div(a)}}};var Ih=M([be(8),F("bump"),bt("index"),K(""),Ge("protocolFeeRate"),Ge("tradeFeeRate"),bt("tickSpacing"),q(w(),8,"")]),Ol=M([Ge("blockTimestamp"),X("sqrtPriceX64"),X("cumulativeTimePriceX64"),q(X(),1,"")]),to=M([be(8),Ee("initialized"),K("poolId"),q(Ol,1e3,"observations"),q(X(),5,"")]),Nl=M([F("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),X("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),X("rewardGrowthGlobalX64")]),Ur=M([be(8),F("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),bt("tickSpacing"),X("liquidity"),X("sqrtPriceX64"),Ne("tickCurrent"),bt("observationIndex"),bt("observationUpdateDuration"),X("feeGrowthGlobalX64A"),X("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),X("swapInAmountTokenA"),X("swapOutAmountTokenB"),X("swapInAmountTokenB"),X("swapOutAmountTokenA"),F("status"),q(F(),7,""),q(Nl,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")]),Ml=M([X("growthInsideLastX64"),w("rewardAmountOwed")]),Gr=M([be(8),F("bump"),K("nftMint"),K("poolId"),Ne("tickLower"),Ne("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Ml,3,"rewardInfos"),q(w(),8,"")]),xh=M([be(8),F("bump"),K("poolId"),Ne("tickLowerIndex"),Ne("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(X(),3,"rewardGrowthInside"),q(w(),8,"")]),_l=M([Ne("tick"),as("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),q(X(),3,"rewardGrowthsOutsideX64"),q(Ge(),13,"")]),qn=M([be(8),K("poolId"),Ne("startTickIndex"),q(_l,Ke,"ticks"),F("initializedTickCount"),q(F(),115,"")]),na=M([be(329),q(K(),100,"whitelistMints")]),ta=M([be(8),K("poolId"),q(q(w(),8),Ji,"positiveTickArrayBitmap"),q(q(w(),8),Ji,"negativeTickArrayBitmap")]);var oa=oe("Raydium_Clmm"),pt={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,r,o,s,a,u,c,l,m,d,p,y){let f=M([X("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...pt.createPool,...g]);return new dt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ve({fromPublicKey:r,programId:n}),[d,p]=[new D(o.address),new D(s.address)],y=[dn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(to.span),space:to.span,programId:n})],{publicKey:f}=zs(n,a,d,p),{publicKey:b}=Zi(n,f,d),{publicKey:g}=Zi(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new D(o.programId||Me),p,g,new D(s.programId||Me),ht(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,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,P,k,I,B,x,S,N){let E=M([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),X("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ra,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:k,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:S==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let x=no.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:P}=Dr(y),{publicKey:k}=et(d,y),{publicKey:I}=jt(d,p,r,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,P,I,g,h,k,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:P,personalPosition:k,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let x=no.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:P}=Dr(y),{publicKey:k}=et(d,y),{publicKey:I}=jt(d,p,r,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,P,I,g,h,k,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,c,s,a,u,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ht(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:P,personalPosition:k,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,P,k,I,B,x,S,N){let E=M([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),X("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ra,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:k,liquidity:new ia(0),amountMaxA:B==="MintA"?x:S,amountMaxB:B==="MintA"?S:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new D((await l(1))[0]);else{let x=no.generate();d.push(x),m=x.publicKey}let[p,y]=[new D(e.programId),new D(e.id)],f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(p,y,f),{publicKey:h}=de(p,y,b),{publicKey:A}=we(n.wallet,m,Me),{publicKey:P}=Dr(m),{publicKey:k}=et(p,m),{publicKey:I}=jt(p,y,r,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,P,I,g,h,k,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(t.mintA.address),new D(t.mintB.address),r,o,f,b,s,a,u,c,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ht(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:P,personalPosition:k,protocolPosition:I},instructions:[B],signers:d,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=M([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...pt.closePosition,...u]);return new dt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new D(e.programId),{publicKey:s}=we(n.wallet,r.nftMint,Me),{publicKey:a}=et(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([X("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...pt.increaseLiquidity,...I]);return new dt({keys:k,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ht(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:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ht(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=M([X("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],I=Buffer.alloc(A.span);A.encode({liquidity:new ia(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...pt.increaseLiquidity,...I]);return new dt({keys:k,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let P=M([X("liquidity"),w("amountMinA"),w("amountMinB")]),k=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:mr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],B=Buffer.alloc(P.span);P.encode({liquidity:b,amountMinA:g,amountMinB:h},B);let x=Buffer.from([...pt.decreaseLiquidity,...B]);return new dt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new D(e.programId),new D(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=de(c,l,m),{publicKey:y}=de(c,l,d),{publicKey:f}=we(r.wallet,n.nftMint,u),{publicKey:b}=et(c,n.nftMint),{publicKey:g}=jt(c,l,n.tickLower,n.tickUpper),h=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)h.push({poolRewardVault:new D(t.rewardInfos[P].vault),ownerRewardVault:r.rewardAccounts[P],rewardMint:new D(e.rewardDefaultInfos[P].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),h,o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ht(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g){let h=M([w("amount"),w("otherAmountThreshold"),X("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:mr,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],k=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},k);let I=Buffer.from([...pt.swap,...k]);return new dt({keys:P,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(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,ht(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([w("openTime"),w("endTime"),X("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...pt.initReward,...f]);return new dt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a=Ys(o,s,r.mint).publicKey,u=Dn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new D(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=M([F("rewardIndex"),X("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:r,isSigner:!1,isWritable:!0},{pubkey:Me,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:Y(l),endTime:Y(m)},f);let b=Buffer.from([...pt.setRewardEmissions,...f]);return new dt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new D(t.rewardInfos[d].vault),c=new D(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&oa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Dn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new D(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=M([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:mr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...pt.collectReward,...l]);return new dt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new D(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&oa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(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 Fl}from"@solana/web3.js";import{PublicKey as El}from"@solana/web3.js";import sa from"bn.js";var aa=new sa(25),ua=new sa(1e4);var Vl=oe("Raydium_liquidity_serum");function ca({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));r=El.createProgramAddressSync(o,i)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:r,nonce:n}}throw Vl.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}import sP from"bn.js";function ro({programId:i}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Jt({name:i,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function vl({programId:i,marketId:e}){let{publicKey:t}=ue([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Dl({programId:i}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function la({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=Jt({name:"amm_associated_seed",programId:a,marketId:t}),l=Jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Dl({programId:a}),p=Jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=vl({programId:a,marketId:t}),g=Jt({name:"target_associated_seed",programId:a,marketId:t}),h=Jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=ca({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:i,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Fl.default,configId:ro({programId:a})}}import $e from"bn.js";var Xn=class extends Pe{constructor(t){super(t);this.stableLayout=new Fn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:o}){let s=new $e(new V(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Rs(t[o?"mintB":"mintA"]),[u,c]=[new $e(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new $e(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new $e(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=qe;s.isZero()||(d=m==="base"?yr(s.mul(c),u):yr(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=yr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new je(new $e(1)).add(r).mul(d).quotient,b=new ke(a,d),g=new ke(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:r,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:",r,"amountInB:",o),(r.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[r.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 He(n.lpMint.address)}),h=[p,y],A=[f,b],P=[r.raw,o.raw],k=r.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(k)||this.logAndCreateError("invalid fixedSide","fixedSide",s),k==="quote"?(h.reverse(),A.reverse(),P.reverse(),I=s==="a"?"quote":"base"):k==="base"&&(I=s==="a"?"base":"quote");let[B,x]=h,[S,N]=A,[E,Q]=P,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Kt=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:S,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Kt,re=Ae(Kt,["tokenAccount"]);j.addInstruction(re);let nr=await l.handleTokenAccount({side:"in",amount:Q,mint:x.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rt}=nr,yn=Ae(nr,["tokenAccount"]);j.addInstruction(yn);let bn=await l.handleTokenAccount({side:"out",amount:0,mint:new He(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Qr}=bn,Zr=Ae(bn,["tokenAccount"]);return j.addInstruction(Zr),j.addInstruction({instructions:[Ds({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:rt,lpTokenAccount:Qr,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:Q,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.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:r,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new He(n.mintA.address),new He(n.mintB.address),new He(n.lpMint.address)];this.logDebug("amountIn:",r),r.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",r.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:h}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=B,P=Ae(B,["tokenAccount"]);b.addInstruction(P);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:k}=x,I=Ae(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Hi({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:k,owner:this.scope.ownerPubKey},amountIn:r})],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:r,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Xr,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 ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||we(this.scope.ownerPubKey,ee.accountInfo.mint,Xr).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 h=r.add(a!=null?a:new $e(0)),A=t.mintA.address===he.WSOL.mint.toString(),P=t.mintB.address===he.WSOL.mint.toString(),{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new He(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),k===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new He(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=k,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Kt of s.rewardInfos){let nr=Kt.mint.address===he.WSOL.mint.toString();if(b[Kt.mint.address])ee.push(b[Kt.mint.address]);else{let{account:bn,instructionParams:lo}=await this.scope.account.getOrCreateTokenAccount({mint:new He(Kt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!nr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});bn||this.logAndCreateError("farm reward account not found:",Kt.mint.address),lo&&f.addInstruction(lo),ee.push(bn)}}let re=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],rt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:re,lpAccount:g,rewardAccounts:ee},yn=lt[s.programId],Qr=yn===6?Mn(rt):yn===5?_n(rt):En(rt),Zr={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[Qr],instructionTypes:[Zr[yn]]})}let S=await this.getAmmPoolKeys(t.id),N=Hi({poolInfo:t,poolKeys:S,userKeys:{lpTokenAccount:g,baseTokenAccount:k,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:h});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:S.lookupTableAccount?[S.lookupTableAccount]:[]});let[E,Q]=t.mintA.address===n.mintA.address?[k,B]:[B,k],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Ie.openPositionFromBaseInstructions(W(L({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,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&&r.mint.equals(ma),h=c.useSOLBalance&&o.mint.equals(ma),A=this.createTxBuilder(),{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:r.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(k||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),P===void 0||I===void 0)throw Error("you don't has some token account");let x=la({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:o.mint,baseDecimals:r.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),S={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:N,instructionType:E}=Ws(W(L({},S),{userWallet:this.scope.ownerPubKey,userCoinVault:P,userPcVault:I,userLpVault:we(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:S}})}async getCreatePoolFee({programId:t}){let n=ro({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Os.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:o,slippage:s}){if(r!==t.mintA.address&&r!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=r==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Zo.toBase58(),y;if(p)y=new V(d.toString()).div(m.toString());else{let x=Vs(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new V(1e6).div(x*1e6):y=new V(x*1e6).div(1e6)}let f=n,b=new $e(0),g=new $e(0);if(!f.isZero())if(p){g=Ln(f.mul(aa),ua);let x=f.sub(g),S=m.add(x);b=d.mul(x).div(S)}else{g=f.mul(new $e(2)).div(new $e(1e4));let x=f.sub(g);l==="quote"?b=new $e(_s(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new $e(Es(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let h=new $e(new V(b.toString()).mul(1-s).toFixed(0)),A=b,P=h,k=new V(b.toString()).div(new V(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(k=new V(b.toString()).div(f.sub(g).toString()));let I=y.sub(k).div(y).mul(100);return{amountOut:A,minAmountOut:P,currentPrice:y,executionPrice:k,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:r,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 He(l.address),programId:new He(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new He(m.address),programId:new He(m.programId),associatedOnly:!1}),P=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new He(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=P,f=Ae(P,["tokenAccount"]);c.addInstruction(f);let k=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new He(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=k,g=Ae(k,["tokenAccount"]);c.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[qs({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:r,fixedSide:s})],instructionTypes:[A===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ie}from"@solana/web3.js";import tt from"bn.js";var zn=class extends Pe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new tt(new ie(r.address).toBuffer()).gt(new tt(new ie(o.address).toBuffer()))?[o,r,new V(1).div(a)]:[r,o,a],b=J.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:W(L({},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:L({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:[]}},Js),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,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,h=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[P,k]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(S||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),E=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:W(L({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(E),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:E.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,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===te.toBase58(),h=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(P||{});let{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});k&&(b=k),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,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:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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),d.addInstruction(P||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:r,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:r,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===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(P||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let k=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,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:r,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=r.useSOLBalance&&t.mintA.address===te.toString(),y=r.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(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,h&&d.addInstruction(h);let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(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,P&&d.addInstruction(P);let k=[];for(let S of t.rewardDefaultInfos){let N=r.useSOLBalance&&S.mint.address===te.toString(),E;if(S.mint.address===t.mintA.address)E=f;else if(S.mint.address===t.mintB.address)E=b;else{let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(S.mint.programId),mint:new ie(S.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,v&&d.addInstruction(v)}k.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:k},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=L({},B.address);if(r.closePosition){let S=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:S.instructions,endInstructionTypes:S.instructionTypes}),x=L(L({},x),S.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 r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!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:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,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 ie(n.mint.programId),mint:new ie(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:r=!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(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new V(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,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 ie(l.mint.programId),mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=L(L({},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:r=!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 tt(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,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:r=!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:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new V(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,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 ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=L(L({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!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(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,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:r=!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:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(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:r,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=L(L({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===te.toBase58(),p=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new V(0))?y=t.toString()===e.mintA.address?vt.add(new tt(1)):Dt.sub(new tt(1)):y=J.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(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=h,A&&m.addInstruction(A)}let b;if(!b){let{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(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=h,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 ie(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?we(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(P=>!P.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===te.toString(),y=n.useSOLBalance&&d.mintB.address===te.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=A,P&&l.addInstruction(P)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:o});b=A,P&&l.addInstruction(P)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let P=n.useSOLBalance&&A.mint.address===te.toString(),k=c[A.mint.address];if(!k){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:r});k=I,B&&l.addInstruction(B)}c[A.mint.address]=k,g.push(k)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let P=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new tt(0),amountMinA:new tt(0),amountMinB:new tt(0)});l.addInstruction(P)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Dn(e).publicKey);return t?na.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new tt(1))).map(s=>et(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=Gr.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new ie(e)),n=Ur.decode(t.data),r=J.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return W(L({},n),{currentPrice:r})}};import{PublicKey as z}from"@solana/web3.js";import{NATIVE_MINT as Yr,TOKEN_PROGRAM_ID as Ut,AccountLayout as ka}from"@solana/spl-token";var Wl=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ql=Buffer.from("amm_config","utf8"),Ul=Buffer.from("pool","utf8"),Gl=Buffer.from("pool_lp_mint","utf8"),Xl=Buffer.from("pool_vault","utf8"),zl=Buffer.from("observation","utf8");function Yl(i){return ue([Wl],i)}function Hl(i,e){return ue([ql,Zl(e)],i)}function jl(i,e,t,n){return ue([Ul,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Ql(i,e){return ue([Gl,e.toBuffer()],i)}function da(i,e,t){return ue([Xl,e.toBuffer(),t.toBuffer()],i)}function zr(i,e){return ue([zl,e.toBuffer()],i)}function Zl(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function pa({programId:i,mintA:e,mintB:t}){let n=Hl(i,0).publicKey,r=Yl(i).publicKey,o=jl(i,n,e,t).publicKey,s=Ql(i,o).publicKey,a=da(i,o,e).publicKey,u=da(i,o,t).publicKey,c=zr(i,o).publicKey;return{poolId:o,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as io,TOKEN_2022_PROGRAM_ID as fa,ASSOCIATED_TOKEN_PROGRAM_ID as $l}from"@solana/spl-token";var Jl=oe("Raydium_cpmm"),Hn={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 ya(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let P=M([w("amountMaxA"),w("amountMaxB"),w("openTime")]),k=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!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:io,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:$l,isSigner:!1,isWritable:!1},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],I=Buffer.alloc(P.span);return P.encode({amountMaxA:g,amountMaxB:h,openTime:A},I),new Yn({keys:k,programId:i,data:Buffer.from([...Hn.initialize,...I])})}function ba(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:io,isSigner:!1,isWritable:!1},{pubkey:fa,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 Jl.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Yn({keys:b,programId:i,data:Buffer.from([...Hn.deposit,...g])})}function ga(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=M([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:r,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:io,isSigner:!1,isWritable:!1},{pubkey:fa,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:No,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Yn({keys:b,programId:i,data:Buffer.from([...Hn.withdraw,...g])})}function wa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Yn({keys:g,programId:i,data:Buffer.from([...Hn.swapBaseInput,...h])})}function Aa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=M([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey: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}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Yn({keys:g,programId:i,data:Buffer.from([...Hn.swapBaseOutput,...h])})}import De from"bn.js";var ha=M([be(8),F("bump"),Ee("disableCreatePool"),bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),q(w(),16)]),Pa=M([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),F("bump"),F("status"),F("lpDecimals"),F("mintDecimalA"),F("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var jn=class extends Pe{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 z(e));if(!n)throw new Error(`pool not found: ${e}`);let r=Pa.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([r.vaultA,r.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${r.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${r.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(r.configId);u&&(a=ha.decode(u.data))}return W(L({},r),{baseReserve:new De(ka.decode(o.data).amount.toString()).sub(r.protocolFeesMintA).sub(r.fundFeesMintA),quoteReserve:new De(ka.decode(s.data).amount.toString()).sub(r.protocolFeesMintB).sub(r.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ae(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,v,j;let d=r.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),p=new De(new z(c.mintA.address).toBuffer()).lte(new De(new z(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],h=r.useSOLBalance&&y.address===Yr.toBase58(),A=r.useSOLBalance&&f.address===Yr.toBase58(),[P,k]=[new z(y.address),new z(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:P,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new z(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(N||{}),B===void 0||S===void 0)throw Error("you don't has some token account");let E=pa({programId:e,mintA:P,mintB:k});return I.addInstruction({instructions:[ya(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,P,k,E.lpMint,B,S,we(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new z((v=y.programId)!=null?v:Ut),new z((j=f.programId)!=null?j:Ut),E.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(L({},E),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:r,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:d}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(L({},t),{mintAmountA:new V(p.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new V(p.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===Yr.toString(),A=t.mintB.address===Yr.toString(),P=this.createTxBuilder(),[k,I]=[new z(t.mintA.address),new z(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(r?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:r?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:d});P.addInstruction(x||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(r?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:r?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});P.addInstruction(N||{}),!B&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new z(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new z(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Q}=ee,v=Ae(ee,["tokenAccount"]);P.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[ba(new z(t.programId),this.scope.ownerPubKey,new z(j.authority),new z(t.id),Q,B,S,new z(j.vault.A),new z(j.vault.B),k,I,new z(t.lpMint.address),y,r?f.amount:g,r?g:f.amount)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),P.addCustomComputeBudget(a),P.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,v;let{poolInfo:t,lpAmount:n,slippage:r,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new je(new De(1)).sub(r),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[ye(c,t.mintA.extensions.feeConfig,m,!0),ye(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new z(t.mintA.address),new z(t.mintB.address)],h=b.equals(te),A=g.equals(te),P,k,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});P=I,B&&f.addInstruction(B);let{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});k=x,S&&f.addInstruction(S),(!P||!k)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new z(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[ga(new z(t.programId),this.scope.ownerPubKey,new z(E.authority),new z(t.id),N,P,k,new z(E.vault.A),new z(E.vault.B),b,g,new z(t.lpMint.address),n,c.sub((Q=d.fee)!=null?Q:new De(0)),l.sub((v=p.fee)!=null?v:new De(0)))],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var P,k,x,S,N,E;let{poolInfo:t,baseIn:n,swapResult:r,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=L({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new z(t.mintA.address),new z(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new z((P=t.mintA.programId)!=null?P:Ut),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new z((k=t.mintB.programId)!=null?k:Ut),mint:d,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?r.sourceAmountSwapped:r.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Ae(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?r.destinationAmountSwapped:r.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,h=Ae(B,["tokenAccount"]);l.addInstruction(h),!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?wa(new z(t.programId),this.scope.ownerPubKey,new z(A.authority),new z(A.config.id),new z(t.id),f,g,new z(A.vault.A),new z(A.vault.B),new z((x=t.mintA.programId)!=null?x:Ut),new z((S=t.mintB.programId)!=null?S:Ut),m,d,zr(new z(t.programId),new z(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped):Aa(new z(t.programId),this.scope.ownerPubKey,new z(A.authority),new z(A.config.id),new z(t.id),g,f,new z(A.vault.B),new z(A.vault.A),new z((N=t.mintB.programId)!=null?N:Ut),new z((E=t.mintA.programId)!=null?E:Ut),d,m,zr(new z(t.programId),new z(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:r,baseIn:o}){var h,A,P,k,I,B,x,S;let s=1-Number(n.toSignificant())/100,a=new De(new V(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=ye(a,e[o?"mintA":"mintB"].extensions.feeConfig,r,!1),c=a.sub((h=u.fee)!=null?h:new De(0)),[l,m]=[new De(new V(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new De(new V(e.mintAmountB).mul(10**e.mintB.decimals).toString())],d=new De(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(P=(A=u.fee)==null?void 0:A.toString())!=null?P:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let y=c.mul(d).div(p==="base"?l:m),f={amount:qe,fee:void 0,expirationTime:void 0};c.isZero()||(f=ye(em(y,l,m,d)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,r,!0));let b=new je(new De(1)).add(n),g=ye(b.mul(f.amount.sub((k=f.fee)!=null?k:new De(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,r,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(S=(x=g.fee)==null?void 0:x.toString())!=null?S:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function em(i,e,t,n){let r=i.mul(e).div(n);!r.isZero()&&!i.mul(e).mod(n).isZero()&&(r=r.add(new De(1)));let o=i.mul(t).div(n);return!o.isZero()&&!i.mul(t).mod(n).isZero()&&(o=o.add(new De(1))),{amountA:r,amountB:o}}var Qn=class extends Pe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((r,o)=>o.version-r.version),e[0].version!==e[1].version))return e[0];let n=e.filter(r=>r.version===e[0].version);return n.sort((r,o)=>this.comparePoolSize(r,o,t)),n[0]}static comparePoolSize(e,t,n){let r=n[e.id],o=n[t.id];return r===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?r.baseReserve.sub(o.baseReserve).gte(qe)?-1:1:r.baseReserve.sub(o.quoteReserve).gte(qe)?-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,r=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=Y(t);for(let u=0;u<r.length;u++)a.gte(r[u].amount)?(o.addInstruction({instructions:[xt({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(r[u].amount)):(o.addInstruction({instructions:[xt({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Rn({destination:s.addresses.newAccount,source:r[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),r=this.createTxBuilder(),o=await gt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),n.length&&r.addInstruction({instructions:[Rn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[xt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),r.build()}};import{TOKEN_PROGRAM_ID as tm}from"@solana/spl-token";import{PublicKey as nm,Transaction as oo,TransactionInstruction as rm}from"@solana/web3.js";import Ta from"bn.js";var We=class extends Pe{static getPdaPoolId(e,t){return ue([We.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([We.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ta(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>We.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<We.VERSION_PROJECT.length;l++)a.push(...s.map(m=>We.getPdaOwnerId(t,m,r,l).publicKey));let u=await yt(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!==We.POOL_LAYOUT.span||b.data.length!==We.OWNER_LAYOUT.span)continue;let g=We.POOL_LAYOUT.decode(f.data),h=We.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),P=g.endTime.toNumber(),k=h.tokenInfo.map(x=>x.debtAmount.gt(new Ta(0))).filter(x=>!x).length!==3,I=o>A&&o<P&&g.status===1,B=k&&I;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:We.VERSION_PROJECT[m],openTime:A,endTime:P,canClaim:B,canClaimErrorType:k?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,S)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:h.tokenInfo[S].debtAmount.add(h.tokenInfo[S].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=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:r,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:[We.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,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(),r=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:r,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:[We.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return fi(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new oo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new oo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new oo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=M([]),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:tm,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new rm({keys:o,programId:e,data:a})}},nt=We;nt.CLAIMED_NUM=3,nt.POOL_LAYOUT=M([be(8),F("bump"),F("status"),w("openTime"),w("endTime"),K("ammId"),q(M([F("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),nt.OWNER_LAYOUT=M([be(8),F("bump"),F("version"),K("poolId"),K("owner"),w("lpAmount"),q(M([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),nt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new nm(e)),nt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},nt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Zn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ka}from"@solana/spl-token";import $n from"bn.js";import{TransactionInstruction as om,SYSVAR_RENT_PUBKEY as sm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{createInitializeAccountInstruction as xa}from"@solana/spl-token";import{SystemProgram as en,Transaction as Ba}from"@solana/web3.js";function im(i="accountFlags"){let e=new Cr(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var so=M([be(5),im("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function am({programId:i,marketInfo:e}){let t=M([F("version"),Ge("instruction"),w("baseLotSize"),w("quoteLotSize"),bt("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:sm,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}:[]),r=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},r),new om({keys:n,programId:i,data:r})}async function Sa({connection:i,wallet:e,marketInfo:t}){let n=new Ba,r=await i.getMinimumBalanceForRentExemption(165);n.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:Ia}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:Ia}),xa(t.baseVault.publicKey,t.baseMint,t.vaultOwner),xa(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Ba;return o.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(so.span),space:so.span,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),am({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 pn=class extends Pe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ve({fromPublicKey:u,programId:o}),l=Ve({fromPublicKey:u,programId:o}),m=Ve({fromPublicKey:u,programId:o}),d=Ve({fromPublicKey:u,programId:o}),p=Ve({fromPublicKey:u,programId:o}),y=Ve({fromPublicKey:u,programId:Ka}),f=Ve({fromPublicKey:u,programId:Ka}),b=0,g=new $n(100);function h(){let S=new $n(0);for(;;)try{return{vaultOwner:Zn.createProgramAddressSync([c.publicKey.toBuffer(),S.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:S}}catch{if(S.iaddn(1),S.gt(new $n(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:P}=h(),k=new $n(Math.round(10**e.decimals*n)),I=new $n(Math.round(n*10**t.decimals*r));if(k.eq(qe))throw Error("lot size is too small");if(I.eq(qe))throw Error("tick size or lot size is too small");let B=await Sa({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:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:P,baseLotSize:k,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let S of B.slice(1,B.length))x.addInstruction({instructions:S.transaction.instructions,signers:S.signer,instructionTypes:S.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Zn(e.mint),quoteMin:new Zn(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Zn(e.mint),quoteMin:new Zn(t.mint)}})}};import{PublicKey as er}from"@solana/web3.js";import{PublicKey as YT,TransactionInstruction as Ca,SYSVAR_CLOCK_PUBKEY as cm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as La}from"@solana/spl-token";var um=M([F("instruction"),ns("amount")]),Jn=M([F("instruction")]);function Hr({programId:i},e){let t=[{pubkey:La,isSigner:!1,isWritable:!1},{pubkey:Mo,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,o])=>({pubkey:o,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(Jn.span);return Jn.encode({instruction:2},n),new Ca({keys:t,programId:i,data:n})}function ao(i){let{poolConfig:e,userKeys:t,side:n}=i,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Jn.span);Jn.encode({instruction:2},s);let a=[{pubkey:La,isWritable:!1,isSigner:!1},{pubkey:cm,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:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ca({programId:e.programId,keys:a,data:s})}import Ra from"bn.js";var lm={[Kn.IDO_PROGRAM_ID_V1.toString()]:1,[Kn.IDO_PROGRAM_ID_V2.toString()]:2,[Kn.IDO_PROGRAM_ID_V3.toString()]:3,[Kn.IDO_PROGRAM_ID_V4.toString()]:4},fn=class extends Pe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:o}){let s=this.createTxBuilder(),a=lm[t.programId];a||this.logAndCreateError("invalid version",a);let u=Ue(t),[c,l]=[!new Ra(e.coin).isZero(),!new Ra(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{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:r});!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(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:r});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?[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new er(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Hr({programId:new er(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new er(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new er(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 er(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[ao(W(L({},g),{side:"base"}))]:[],...l?[ao(W(L({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as mm}from"@solana/web3.js";import{MintLayout as dm,TOKEN_2022_PROGRAM_ID as uo,TOKEN_PROGRAM_ID as co}from"@solana/spl-token";var tr=class extends Pe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Nt.address,Nt),this._mintGroup.official.add(Nt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,W(L({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,W(L({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?uo.toBase58():co.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(L({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?uo.toBase58():co.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(L({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?uo.toBase58():co.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Nt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(L({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new mm(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=dm.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 jr=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new at(r):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=oe("Raydium"),this.farm=new Vn({scope:this,moduleName:"Raydium_Farm"}),this.account=new On({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Xn({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new tr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Qn({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new zn({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new jn({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new nt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new fn({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){var l;let t=pm({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Br({cluster:n,timeout:r,urlConfigs:a,logCount:o,logRequests:s}),c=new jr(W(L({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Sr);return this._owner.publicKey}setOwner(e){return this._owner=e?new at(e):void 0,this}get connection(){if(!this._connection)throw new Error(Jo);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(Sr),new Error(Sr)}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 r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(L({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),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{}}}};export{jr as Raydium};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=raydium.mjs.map