@raydium-io/raydium-sdk-v2 0.1.15-alpha → 0.1.16-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +6 -6
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/layout.d.ts +1 -1
  41. package/lib/raydium/cpmm/type.d.ts +1 -1
  42. package/lib/raydium/farm/config.d.ts +1 -1
  43. package/lib/raydium/farm/farm.d.ts +3 -3
  44. package/lib/raydium/farm/index.d.ts +1 -1
  45. package/lib/raydium/farm/instruction.d.ts +1 -1
  46. package/lib/raydium/farm/layout.d.ts +1 -1
  47. package/lib/raydium/farm/type.d.ts +1 -1
  48. package/lib/raydium/farm/util.d.ts +1 -1
  49. package/lib/raydium/ido/ido.d.ts +3 -3
  50. package/lib/raydium/ido/index.d.ts +3 -3
  51. package/lib/raydium/ido/instruction.d.ts +1 -1
  52. package/lib/raydium/ido/type.d.ts +1 -1
  53. package/lib/raydium/index.d.ts +3 -3
  54. package/lib/raydium/index.js +1 -1
  55. package/lib/raydium/index.js.map +1 -1
  56. package/lib/raydium/index.mjs +1 -1
  57. package/lib/raydium/index.mjs.map +1 -1
  58. package/lib/raydium/liquidity/index.d.ts +1 -1
  59. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  60. package/lib/raydium/liquidity/layout.d.ts +6 -6
  61. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  62. package/lib/raydium/liquidity/type.d.ts +1 -1
  63. package/lib/raydium/liquidity/utils.d.ts +1 -1
  64. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  65. package/lib/raydium/marketV2/index.d.ts +3 -3
  66. package/lib/raydium/moduleBase.d.ts +3 -3
  67. package/lib/raydium/raydium.d.ts +3 -3
  68. package/lib/raydium/raydium.js +1 -1
  69. package/lib/raydium/raydium.js.map +1 -1
  70. package/lib/raydium/raydium.mjs +1 -1
  71. package/lib/raydium/raydium.mjs.map +1 -1
  72. package/lib/raydium/token/constant.d.ts +1 -1
  73. package/lib/raydium/token/index.d.ts +1 -1
  74. package/lib/raydium/token/token.d.ts +3 -3
  75. package/lib/raydium/token/type.d.ts +1 -1
  76. package/lib/raydium/token/utils.d.ts +1 -1
  77. package/lib/raydium/tradeV2/index.d.ts +2 -2
  78. package/lib/raydium/tradeV2/index.js +1 -1
  79. package/lib/raydium/tradeV2/index.js.map +1 -1
  80. package/lib/raydium/tradeV2/index.mjs +1 -1
  81. package/lib/raydium/tradeV2/index.mjs.map +1 -1
  82. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  83. package/lib/raydium/tradeV2/instrument.js +1 -1
  84. package/lib/raydium/tradeV2/instrument.js.map +1 -1
  85. package/lib/raydium/tradeV2/instrument.mjs +1 -1
  86. package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
  87. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  88. package/lib/raydium/tradeV2/trade.js +1 -1
  89. package/lib/raydium/tradeV2/trade.js.map +1 -1
  90. package/lib/raydium/tradeV2/trade.mjs +1 -1
  91. package/lib/raydium/tradeV2/trade.mjs.map +1 -1
  92. package/lib/raydium/tradeV2/type.d.ts +2 -2
  93. package/lib/raydium/type.d.ts +1 -1
  94. package/lib/raydium/utils1216/index.d.ts +3 -3
  95. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  96. package/lib/{raydium-16aedf49.d.ts → raydium-959c1e92.d.ts} +3 -3
  97. package/lib/{type-e5e9d9c5.d.ts → type-5ab8207d.d.ts} +1 -1
  98. package/lib/{type-8af08a0b.d.ts → type-9a74e7ee.d.ts} +8 -8
  99. package/package.json +1 -1
  100. package/src/raydium/tradeV2/instrument.ts +34 -33
@@ -1,3 +1,3 @@
1
- var rc=Object.defineProperty,ic=Object.defineProperties;var oc=Object.getOwnPropertyDescriptors;var Lr=Object.getOwnPropertySymbols;var bs=Object.prototype.hasOwnProperty,gs=Object.prototype.propertyIsEnumerable;var ys=(r,e,t)=>e in r?rc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e)=>{for(var t in e||(e={}))bs.call(e,t)&&ys(r,t,e[t]);if(Lr)for(var t of Lr(e))gs.call(e,t)&&ys(r,t,e[t]);return r},D=(r,e)=>ic(r,oc(e));var he=(r,e)=>{var t={};for(var n in r)bs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Lr)for(var n of Lr(r))e.indexOf(n)<0&&gs.call(r,n)&&(t[n]=r[n]);return t};import{merge as Zd}from"lodash";import sa from"axios";import{get as ws,set as sc}from"lodash";import Ps from"dayjs";import ac from"dayjs/plugin/utc";Ps.extend(ac);var Oi=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 Ps().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}},As={},uc={};function ae(r){let e=ws(As,r);if(!e){let t=ws(uc,r);e=new Oi({name:r,logLevel:t}),sc(As,r,e)}return e}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import fl from"big.js";import Xr from"bn.js";import et from"bn.js";var hn=9e15,Qt=1e9,Ni="0123456789abcdef",Nr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Mi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-hn,maxE:hn,crypto:!1},Is,_t,ne=!0,Vr="[DecimalError] ",jt=Vr+"Invalid argument: ",xs=Vr+"Precision limit exceeded",Bs=Vr+"crypto unavailable",Ss="[object Decimal]",We=Math.floor,Re=Math.pow,cc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,lc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,mc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ks=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,wt=1e7,$=7,dc=9007199254740991,pc=Nr.length-1,_i=Mr.length-1,M={toStringTag:Ss};M.absoluteValue=M.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),Y(r)};M.ceil=function(){return Y(new this.constructor(this),this.e+1,2)};M.clampedTo=M.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(jt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};M.comparedTo=M.cmp=function(r){var e,t,n,i,s=this,o=s.d,a=(r=new s.constructor(r)).d,u=s.s,c=r.s;if(!o||!a)return!u||!c?NaN:u!==c?u:o===a?0:!o^u<0?1:-1;if(!o[0]||!a[0])return o[0]?u:a[0]?-c:0;if(u!==c)return u;if(s.e!==r.e)return s.e>r.e^u<0?1:-1;for(n=o.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(o[e]!==a[e])return o[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};M.cosine=M.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=fc(n,Ns(n,t)),n.precision=r,n.rounding=e,Y(_t==2||_t==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};M.cubeRoot=M.cbrt=function(){var r,e,t,n,i,s,o,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(ne=!1,s=l.s*Re(l.s*l,1/3),!s||Math.abs(s)==1/0?(t=Ve(l.d),r=l.e,(s=(r-t.length+1)%3)&&(t+=s==1||s==-2?"0":"00"),s=Re(t,1/3),r=We((r+1)/3)-(r%3==(r<0?-1:2)),s==1/0?t="5e"+r:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(s.toString()),o=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),o+2,1),Ve(a.d).slice(0,o)===(t=Ve(n.d)).slice(0,o))if(t=t.slice(o-3,o+1),t=="9999"||!i&&t=="4999"){if(!i&&(Y(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}o+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Y(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return ne=!0,Y(n,r,m.rounding,e)};M.decimalPlaces=M.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-We(this.e/$))*$,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};M.dividedBy=M.div=function(r){return we(this,new this.constructor(r))};M.dividedToIntegerBy=M.divToInt=function(r){var e=this,t=e.constructor;return Y(we(e,new t(r),0,1,1),t.precision,t.rounding)};M.equals=M.eq=function(r){return this.cmp(r)===0};M.floor=function(){return Y(new this.constructor(this),this.e+1,3)};M.greaterThan=M.gt=function(r){return this.cmp(r)>0};M.greaterThanOrEqualTo=M.gte=function(r){var e=this.cmp(r);return e==1||e===0};M.hyperbolicCosine=M.cosh=function(){var r,e,t,n,i,s=this,o=s.constructor,a=new o(1);if(!s.isFinite())return new o(s.s?1/0:NaN);if(s.isZero())return a;t=o.precision,n=o.rounding,o.precision=t+Math.max(s.e,s.sd())+4,o.rounding=1,i=s.d.length,i<32?(r=Math.ceil(i/3),e=(1/Fr(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),s=Tn(o,1,s.times(e),new o(1),!0);for(var u,c=r,l=new o(8);c--;)u=s.times(s),s=a.minus(u.times(l.minus(u.times(l))));return Y(s,o.precision=t,o.rounding=n,!0)};M.hyperbolicSine=M.sinh=function(){var r,e,t,n,i=this,s=i.constructor;if(!i.isFinite()||i.isZero())return new s(i);if(e=s.precision,t=s.rounding,s.precision=e+Math.max(i.e,i.sd())+4,s.rounding=1,n=i.d.length,n<3)i=Tn(s,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Fr(5,r)),i=Tn(s,2,i,i,!0);for(var o,a=new s(5),u=new s(16),c=new s(20);r--;)o=i.times(i),i=i.times(a.plus(o.times(u.times(o).plus(c))))}return s.precision=e,s.rounding=t,Y(i,e,t,!0)};M.hyperbolicTangent=M.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};M.inverseCosine=M.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,s=t.rounding;return n!==-1?n===0?e.isNeg()?gt(t,i,s):new t(0):new t(NaN):e.isZero()?gt(t,i+4,s).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=gt(t,i+4,s).times(.5),t.precision=i,t.rounding=s,r.minus(e))};M.inverseHyperbolicCosine=M.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,ne=!1,t=t.times(t).minus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};M.inverseHyperbolicSine=M.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,ne=!1,t=t.times(t).plus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln())};M.inverseHyperbolicTangent=M.atanh=function(){var r,e,t,n,i=this,s=i.constructor;return i.isFinite()?i.e>=0?new s(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=s.precision,e=s.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?Y(new s(i),r,e,!0):(s.precision=t=n-i.e,i=we(i.plus(1),new s(1).minus(i),t+r,1),s.precision=r+4,s.rounding=1,i=i.ln(),s.precision=r,s.rounding=e,i.times(.5))):new s(NaN)};M.inverseSine=M.asin=function(){var r,e,t,n,i=this,s=i.constructor;return i.isZero()?new s(i):(e=i.abs().cmp(1),t=s.precision,n=s.rounding,e!==-1?e===0?(r=gt(s,t+4,n).times(.5),r.s=i.s,r):new s(NaN):(s.precision=t+6,s.rounding=1,i=i.div(new s(1).minus(i.times(i)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=n,i.times(2)))};M.inverseTangent=M.atan=function(){var r,e,t,n,i,s,o,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<=_i)return o=gt(l,m+4,d).times(.25),o.s=c.s,o}else{if(!c.s)return new l(NaN);if(m+4<=_i)return o=gt(l,m+4,d).times(.5),o.s=c.s,o}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/$+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(ne=!1,e=Math.ceil(a/$),n=1,u=c.times(c),o=new l(c),i=c;r!==-1;)if(i=i.times(u),s=o.minus(i.div(n+=2)),i=i.times(u),o=s.plus(i.div(n+=2)),o.d[e]!==void 0)for(r=e;o.d[r]===s.d[r]&&r--;);return t&&(o=o.times(2<<t-1)),ne=!0,Y(o,l.precision=m,l.rounding=d,!0)};M.isFinite=function(){return!!this.d};M.isInteger=M.isInt=function(){return!!this.d&&We(this.e/$)>this.d.length-2};M.isNaN=function(){return!this.s};M.isNegative=M.isNeg=function(){return this.s<0};M.isPositive=M.isPos=function(){return this.s>0};M.isZero=function(){return!!this.d&&this.d[0]===0};M.lessThan=M.lt=function(r){return this.cmp(r)<0};M.lessThanOrEqualTo=M.lte=function(r){return this.cmp(r)<1};M.logarithm=M.log=function(r){var e,t,n,i,s,o,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)s=!0;else{for(i=t[0];i%10===0;)i/=10;s=i!==1}if(ne=!1,a=m+p,o=Yt(c,a),n=e?_r(l,a+10):Yt(r,a),u=we(o,n,a,1),En(u.d,i=m,d))do if(a+=10,o=Yt(c,a),n=e?_r(l,a+10):Yt(r,a),u=we(o,n,a,1),!s){+Ve(u.d).slice(i+1,i+15)+1==1e14&&(u=Y(u,m+1,0));break}while(En(u.d,i+=10,d));return ne=!0,Y(u,m,d)};M.minus=M.sub=function(r){var e,t,n,i,s,o,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return ne?Y(r,a,u):r}if(t=We(r.e/$),l=We(p.e/$),c=c.slice(),s=l-t,s){for(m=s<0,m?(e=c,s=-s,o=d.length):(e=d,t=l,o=c.length),n=Math.max(Math.ceil(a/$),o)+2,s>n&&(s=n,e.length=1),e.reverse(),n=s;n--;)e.push(0);e.reverse()}else{for(n=c.length,o=d.length,m=n<o,m&&(o=n),n=0;n<o;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}s=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),o=c.length,n=d.length-o;n>0;--n)c[o++]=0;for(n=d.length;n>s;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=wt-1;--c[i],c[n]+=wt}c[n]-=d[n]}for(;c[--o]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Er(c,t),ne?Y(r,a,u):r):new y(u===3?-0:0)};M.modulo=M.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?Y(new n(t),n.precision,n.rounding):(ne=!1,n.modulo==9?(e=we(t,r.abs(),0,3,1),e.s*=r.s):e=we(t,r,0,n.modulo,1),e=e.times(r),ne=!0,t.minus(e))};M.naturalExponential=M.exp=function(){return Vi(this)};M.naturalLogarithm=M.ln=function(){return Yt(this)};M.negated=M.neg=function(){var r=new this.constructor(this);return r.s=-r.s,Y(r)};M.plus=M.add=function(r){var e,t,n,i,s,o,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),ne?Y(r,a,u):r;if(s=We(m.e/$),n=We(r.e/$),c=c.slice(),i=s-n,i){for(i<0?(t=c,i=-i,o=l.length):(t=l,n=s,o=c.length),s=Math.ceil(a/$),o=s>o?s+1:o+1,i>o&&(i=o,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(o=c.length,i=l.length,o-i<0&&(i=o,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/wt|0,c[i]%=wt;for(e&&(c.unshift(e),++n),o=c.length;c[--o]==0;)c.pop();return r.d=c,r.e=Er(c,n),ne?Y(r,a,u):r};M.precision=M.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(jt+r);return t.d?(e=Cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};M.round=function(){var r=this,e=r.constructor;return Y(new e(r),r.e+1,e.rounding)};M.sine=M.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=bc(n,Ns(n,t)),n.precision=r,n.rounding=e,Y(_t>2?t.neg():t,r,e,!0)):new n(NaN)};M.squareRoot=M.sqrt=function(){var r,e,t,n,i,s,o=this,a=o.d,u=o.e,c=o.s,l=o.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?o:1/0);for(ne=!1,c=Math.sqrt(+o),c==0||c==1/0?(e=Ve(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=We((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(s=n,n=s.plus(we(o,s,t+2,1)).times(.5),Ve(s.d).slice(0,t)===(e=Ve(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(Y(s,u+1,0),s.times(s).eq(o))){n=s;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Y(n,u+1,1),r=!n.times(n).eq(o));break}return ne=!0,Y(n,u,l.rounding,r)};M.tangent=M.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,Y(_t==2||_t==4?t.neg():t,r,e,!0)):new n(NaN)};M.times=M.mul=function(r){var e,t,n,i,s,o,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=We(l.e/$)+We(r.e/$),u=d.length,c=p.length,u<c&&(s=d,d=p,p=s,o=u,u=c,c=o),s=[],o=u+c,n=o;n--;)s.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=s[i]+p[n]*d[i-n-1]+e,s[i--]=a%wt|0,e=a/wt|0;s[i]=(s[i]+e)%wt|0}for(;!s[--o];)s.pop();return e?++t:s.shift(),r.d=s,r.e=Er(s,t),ne?Y(r,m.precision,m.rounding):r};M.toBinary=function(r,e){return Fi(this,2,r,e)};M.toDecimalPlaces=M.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ze(r,0,Qt),e===void 0?e=n.rounding:Ze(e,0,8),Y(t,r+t.e+1,e))};M.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Bt(n,!0):(Ze(r,0,Qt),e===void 0?e=i.rounding:Ze(e,0,8),n=Y(new i(n),r+1,e),t=Bt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toFixed=function(r,e){var t,n,i=this,s=i.constructor;return r===void 0?t=Bt(i):(Ze(r,0,Qt),e===void 0?e=s.rounding:Ze(e,0,8),n=Y(new s(i),r+i.e+1,e),t=Bt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};M.toFraction=function(r){var e,t,n,i,s,o,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),s=e.e=Cs(y)-p.e-1,o=s%$,e.d[0]=Re(10,o<0?$+o:o),r==null)r=s>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(jt+a);r=a.gt(e)?s>0?e:c:a}for(ne=!1,a=new f(Ve(y)),l=f.precision,f.precision=s=y.length*$*2;m=we(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=we(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=we(c,n,s,1).minus(p).abs().cmp(we(u,t,s,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,ne=!0,d};M.toHexadecimal=M.toHex=function(r,e){return Fi(this,16,r,e)};M.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Ze(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(ne=!1,t=we(t,r,0,e,1).times(r),ne=!0,Y(t)):(r.s=t.s,t=r),t};M.toNumber=function(){return+this};M.toOctal=function(r,e){return Fi(this,8,r,e)};M.toPower=M.pow=function(r){var e,t,n,i,s,o,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Re(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,s=u.rounding,r.eq(1))return Y(a,n,s);if(e=We(r.e/$),e>=r.d.length-1&&(t=c<0?-c:c)<=dc)return i=Rs(u,a,t,n),r.s<0?new u(1).div(i):Y(i,n,s);if(o=a.s,o<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(o=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=o,a}return t=Re(+a,c),e=t==0||!isFinite(t)?We(c*(Math.log("0."+Ve(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?o/0:0):(ne=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Vi(r.times(Yt(a,n+t)),n),i.d&&(i=Y(i,n+5,1),En(i.d,n,s)&&(e=n+10,i=Y(Vi(r.times(Yt(a,e+t)),e),e+5,1),+Ve(i.d).slice(n+1,n+15)+1==1e14&&(i=Y(i,n+1,0)))),i.s=o,ne=!0,u.rounding=s,Y(i,n,s))};M.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Bt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ze(r,1,Qt),e===void 0?e=i.rounding:Ze(e,0,8),n=Y(new i(n),r,e),t=Bt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toSignificantDigits=M.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ze(r,1,Qt),e===void 0?e=n.rounding:Ze(e,0,8)),Y(new n(t),r,e)};M.toString=function(){var r=this,e=r.constructor,t=Bt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};M.truncated=M.trunc=function(){return Y(new this.constructor(this),this.e+1,1)};M.valueOf=M.toJSON=function(){var r=this,e=r.constructor,t=Bt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Ve(r){var e,t,n,i=r.length-1,s="",o=r[0];if(i>0){for(s+=o,e=1;e<i;e++)n=r[e]+"",t=$-n.length,t&&(s+=zt(t)),s+=n;o=r[e],n=o+"",t=$-n.length,t&&(s+=zt(t))}else if(o===0)return"0";for(;o%10===0;)o/=10;return s+o}function Ze(r,e,t){if(r!==~~r||r<e||r>t)throw Error(jt+r)}function En(r,e,t,n){var i,s,o,a;for(s=r[0];s>=10;s/=10)--e;return--e<0?(e+=$,i=0):(i=Math.ceil((e+1)/$),e%=$),s=Re(10,$-e),a=r[i]%s|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),o=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):o=(t<4&&a+1==s||t>3&&a+1==s/2)&&(r[i+1]/s/100|0)==Re(10,e-2)-1||(a==s/2||a==0)&&(r[i+1]/s/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),o=(n||t<4)&&a==9999||!n&&t>3&&a==4999):o=((n||t<4)&&a+1==s||!n&&t>3&&a+1==s/2)&&(r[i+1]/s/1e3|0)==Re(10,e-3)-1,o}function Or(r,e,t){for(var n,i=[0],s,o=0,a=r.length;o<a;){for(s=i.length;s--;)i[s]*=e;for(i[0]+=Ni.indexOf(r.charAt(o++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function fc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Fr(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Tn(r,1,e.times(i),new r(1));for(var s=t;s--;){var o=e.times(e);e=o.times(o).minus(o).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,s){var o,a=0,u=n.length;for(n=n.slice();u--;)o=n[u]*i+a,n[u]=o%s|0,a=o/s|0;return a&&n.unshift(a),n}function e(n,i,s,o){var a,u;if(s!=o)u=s>o?1:-1;else for(a=u=0;a<s;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,s,o){for(var a=0;s--;)n[s]-=a,a=n[s]<i[s]?1:0,n[s]=a*o+n[s]-i[s];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,s,o,a,u){var c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O,N,U,F=n.constructor,H=n.s==i.s?1:-1,Z=n.d,W=i.d;if(!Z||!Z[0]||!W||!W[0])return new F(!n.s||!i.s||(Z?W&&Z[0]==W[0]:!W)?NaN:Z&&Z[0]==0||!W?H*0:H/0);for(u?(p=1,l=n.e-i.e):(u=wt,p=$,l=We(n.e/p)-We(i.e/p)),N=W.length,K=Z.length,b=new F(H),P=b.d=[],m=0;W[m]==(Z[m]||0);m++);if(W[m]>(Z[m]||0)&&l--,s==null?(T=s=F.precision,o=F.rounding):a?T=s+(n.e-i.e)+1:T=s,T<0)P.push(1),y=!0;else{if(T=T/p+2|0,m=0,N==1){for(d=0,W=W[0],T++;(m<K||d)&&T--;m++)S=d*u+(Z[m]||0),P[m]=S/W|0,d=S%W|0;y=d||m<K}else{for(d=u/(W[0]+1)|0,d>1&&(W=r(W,d,u),Z=r(Z,d,u),N=W.length,K=Z.length),x=N,A=Z.slice(0,N),h=A.length;h<N;)A[h++]=0;U=W.slice(),U.unshift(0),O=W[0],W[1]>=u/2&&++O;do d=0,c=e(W,A,N,h),c<0?(I=A[0],N!=h&&(I=I*u+(A[1]||0)),d=I/O|0,d>1?(d>=u&&(d=u-1),f=r(W,d,u),g=f.length,h=A.length,c=e(f,A,g,h),c==1&&(d--,t(f,N<g?U:W,g,u))):(d==0&&(c=d=1),f=W.slice()),g=f.length,g<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(W,A,N,h),c<1&&(d++,t(A,N<h?U:W,h,u))),h=A.length):c===0&&(d++,A=[0]),P[m++]=d,c&&A[0]?A[h++]=Z[x]||0:(A=[Z[x]],h=1);while((x++<K||A[0]!==void 0)&&T--);y=A[0]!==void 0}P[0]||P.shift()}if(p==1)b.e=l,Is=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;b.e=m+l*p-1,Y(b,a?s+b.e+1:s,o,y)}return b}}();function Y(r,e,t,n){var i,s,o,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(s=e-i,s<0)s+=$,o=e,l=m[d=0],u=l/Re(10,i-o-1)%10|0;else if(d=Math.ceil((s+1)/$),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,s%=$,o=s-$+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;s%=$,o=s-$+i,u=o<0?0:l/Re(10,i-o-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(o<0?l:l%Re(10,i-o-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(s>0?o>0?l/Re(10,i-o):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Re(10,($-e%$)%$),r.e=-e||0):m[0]=r.e=0,r;if(s==0?(m.length=d,a=1,d--):(m.length=d+1,a=Re(10,$-s),m[d]=o>0?(l/Re(10,i-o)%Re(10,o)|0)*a:0),c)for(;;)if(d==0){for(s=1,o=m[0];o>=10;o/=10)s++;for(o=m[0]+=a,a=1;o>=10;o/=10)a++;s!=a&&(r.e++,m[0]==wt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=wt)break;m[d--]=0,a=1}for(s=m.length;m[--s]===0;)m.pop()}return ne&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Bt(r,e,t){if(!r.isFinite())return Os(r);var n,i=r.e,s=Ve(r.d),o=s.length;return e?(t&&(n=t-o)>0?s=s.charAt(0)+"."+s.slice(1)+zt(n):o>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(r.e<0?"e":"e+")+r.e):i<0?(s="0."+zt(-i-1)+s,t&&(n=t-o)>0&&(s+=zt(n))):i>=o?(s+=zt(i+1-o),t&&(n=t-i-1)>0&&(s=s+"."+zt(n))):((n=i+1)<o&&(s=s.slice(0,n)+"."+s.slice(n)),t&&(n=t-o)>0&&(i+1===o&&(s+="."),s+=zt(n))),s}function Er(r,e){var t=r[0];for(e*=$;t>=10;t/=10)e++;return e}function _r(r,e,t){if(e>pc)throw ne=!0,t&&(r.precision=t),Error(xs);return Y(new r(Nr),e,1,!0)}function gt(r,e,t){if(e>_i)throw Error(xs);return Y(new r(Mr),e,t,!0)}function Cs(r){var e=r.length-1,t=e*$+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function zt(r){for(var e="";r--;)e+="0";return e}function Rs(r,e,t,n){var i,s=new r(1),o=Math.ceil(n/$+4);for(ne=!1;;){if(t%2&&(s=s.times(e),hs(s.d,o)&&(i=!0)),t=We(t/2),t===0){t=s.d.length-1,i&&s.d[t]===0&&++s.d[t];break}e=e.times(e),hs(e.d,o)}return ne=!0,s}function ks(r){return r.d[r.d.length-1]&1}function Ls(r,e,t){for(var n,i=new r(e[0]),s=0;++s<e.length;)if(n=new r(e[s]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Vi(r,e){var t,n,i,s,o,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(ne=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Re(2,m))/Math.LN10*2+5|0,u+=n,t=s=o=new d(1),d.precision=u;;){if(s=Y(s.times(r),u,1),t=t.times(++l),a=o.plus(we(s,t,u,1)),Ve(a.d).slice(0,u)===Ve(o.d).slice(0,u)){for(i=m;i--;)o=Y(o.times(o),u,1);if(e==null)if(c<3&&En(o.d,u-n,p,c))d.precision=u+=10,t=s=a=new d(1),l=0,c++;else return Y(o,d.precision=y,p,ne=!0);else return d.precision=y,o}o=a}}function Yt(r,e){var t,n,i,s,o,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,b=f.constructor,P=b.rounding,A=b.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new b(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(ne=!1,l=A):l=e,b.precision=l+=y,t=Ve(g),n=t.charAt(0),Math.abs(s=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Ve(f.d),n=t.charAt(0),p++;s=f.e,n>1?(f=new b("0."+t),s++):f=new b(n+"."+t.slice(1))}else return c=_r(b,l+2,A).times(s+""),f=Yt(new b(n+"."+t.slice(1)),l-y).plus(c),b.precision=A,e==null?Y(f,A,P,ne=!0):f;for(m=f,u=o=f=we(f.minus(1),f.plus(1),l,1),d=Y(f.times(f),l,1),i=3;;){if(o=Y(o.times(d),l,1),c=u.plus(we(o,new b(i),l,1)),Ve(c.d).slice(0,l)===Ve(u.d).slice(0,l))if(u=u.times(2),s!==0&&(u=u.plus(_r(b,l+2,A).times(s+""))),u=we(u,new b(p),l,1),e==null)if(En(u.d,l-y,P,a))b.precision=l+=y,c=o=f=we(m.minus(1),m.plus(1),l,1),d=Y(f.times(f),l,1),i=a=1;else return Y(u,b.precision=A,P,ne=!0);else return b.precision=A,u;u=c,i+=2}}function Os(r){return String(r.s*r.s/0)}function Ei(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%$,t<0&&(n+=$),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=$;n<i;)r.d.push(+e.slice(n,n+=$));e=e.slice(n),n=$-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),ne&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function yc(r,e){var t,n,i,s,o,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ks.test(e))return Ei(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(lc.test(e))t=16,e=e.toLowerCase();else if(cc.test(e))t=2;else if(mc.test(e))t=8;else throw Error(jt+e);for(s=e.search(/p/i),s>0?(u=+e.slice(s+1),e=e.substring(2,s)):e=e.slice(2),s=e.indexOf("."),o=s>=0,n=r.constructor,o&&(e=e.replace(".",""),a=e.length,s=a-s,i=Rs(n,new n(t),s,s*2)),c=Or(e,t,wt),l=c.length-1,s=l;c[s]===0;--s)c.pop();return s<0?new n(r.s*0):(r.e=Er(c,l),r.d=c,ne=!1,o&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Re(2,u):Fn.pow(2,u))),ne=!0,r)}function bc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Tn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Fr(5,t)),e=Tn(r,2,e,e);for(var i,s=new r(5),o=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(s.plus(i.times(o.times(i).minus(a))));return e}function Tn(r,e,t,n,i){var s,o,a,u,c=1,l=r.precision,m=Math.ceil(l/$);for(ne=!1,u=t.times(t),a=new r(n);;){if(o=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(o):n.minus(o),n=we(o.times(u),new r(e++*e++),l,1),o=a.plus(n),o.d[m]!==void 0){for(s=m;o.d[s]===a.d[s]&&s--;);if(s==-1)break}s=a,a=n,n=o,o=s,c++}return ne=!0,o.d.length=m+1,o}function Fr(r,e){for(var t=r;--e;)t*=r;return t}function Ns(r,e){var t,n=e.s<0,i=gt(r,r.precision,1),s=i.times(.5);if(e=e.abs(),e.lte(s))return _t=n?4:1,e;if(t=e.divToInt(i),t.isZero())_t=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(s))return _t=ks(t)?n?2:3:n?4:1,e;_t=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Fi(r,e,t,n){var i,s,o,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(Ze(t,1,Qt),n===void 0?n=p.rounding:Ze(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Os(r);else{for(l=Bt(r),o=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,o>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-o,d.d=Or(Bt(d),10,i),d.e=d.d.length),m=Or(l,10,i),s=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(o<0?s--:(r=new p(r),r.d=m,r.e=s,r=we(r,d,t,n,0,i),m=r.d,s=r.e,c=Is),o=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(o!==void 0||c)&&(n===0||n===(r.s<0?3:2)):o>a||o===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++s,m.unshift(1));for(u=m.length;!m[u-1];--u);for(o=0,l="";o<u;o++)l+=Ni.charAt(m[o]);if(y){if(u>1)if(e==16||e==8){for(o=e==16?4:3,--u;u%o;u++)l+="0";for(m=Or(l,i,e),u=m.length;!m[u-1];--u);for(o=1,l="1.";o<u;o++)l+=Ni.charAt(m[o])}else l=l.charAt(0)+"."+l.slice(1);l=l+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)l="0"+l;l="0."+l}else if(++s>u)for(s-=u;s--;)l+="0";else s<u&&(l=l.slice(0,s)+"."+l.slice(s))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function hs(r,e){if(r.length>e)return r.length=e,!0}function gc(r){return new this(r).abs()}function wc(r){return new this(r).acos()}function Ac(r){return new this(r).acosh()}function Pc(r,e){return new this(r).plus(e)}function kc(r){return new this(r).asin()}function hc(r){return new this(r).asinh()}function Tc(r){return new this(r).atan()}function Ic(r){return new this(r).atanh()}function xc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,s=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=gt(this,s,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?gt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=gt(this,s,1).times(.5),t.s=r.s):e.s<0?(this.precision=s,this.rounding=1,t=this.atan(we(r,e,s,1)),e=gt(this,s,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,s,1)),t}function Bc(r){return new this(r).cbrt()}function Sc(r){return Y(r=new this(r),r.e+1,2)}function Kc(r,e,t){return new this(r).clamp(e,t)}function Cc(r){if(!r||typeof r!="object")throw Error(Vr+"Object expected");var e,t,n,i=r.defaults===!0,s=["precision",1,Qt,"rounding",0,8,"toExpNeg",-hn,0,"toExpPos",0,hn,"maxE",0,hn,"minE",-hn,0,"modulo",0,9];for(e=0;e<s.length;e+=3)if(t=s[e],i&&(this[t]=Mi[t]),(n=r[t])!==void 0)if(We(n)===n&&n>=s[e+1]&&n<=s[e+2])this[t]=n;else throw Error(jt+t+": "+n);if(t="crypto",i&&(this[t]=Mi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Bs);else this[t]=!1;else throw Error(jt+t+": "+n);return this}function Rc(r){return new this(r).cos()}function Lc(r){return new this(r).cosh()}function Ms(r){var e,t,n;function i(s){var o,a,u,c=this;if(!(c instanceof i))return new i(s);if(c.constructor=i,Ts(s)){c.s=s.s,ne?!s.d||s.e>i.maxE?(c.e=NaN,c.d=null):s.e<i.minE?(c.e=0,c.d=[0]):(c.e=s.e,c.d=s.d.slice()):(c.e=s.e,c.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){c.s=1/s<0?-1:1,c.e=0,c.d=[0];return}if(s<0?(s=-s,c.s=-1):c.s=1,s===~~s&&s<1e7){for(o=0,a=s;a>=10;a/=10)o++;ne?o>i.maxE?(c.e=NaN,c.d=null):o<i.minE?(c.e=0,c.d=[0]):(c.e=o,c.d=[s]):(c.e=o,c.d=[s]);return}else if(s*0!==0){s||(c.s=NaN),c.e=NaN,c.d=null;return}return Ei(c,s.toString())}else if(u!=="string")throw Error(jt+s);return(a=s.charCodeAt(0))===45?(s=s.slice(1),c.s=-1):(a===43&&(s=s.slice(1)),c.s=1),Ks.test(s)?Ei(c,s):yc(c,s)}if(i.prototype=M,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Cc,i.clone=Ms,i.isDecimal=Ts,i.abs=gc,i.acos=wc,i.acosh=Ac,i.add=Pc,i.asin=kc,i.asinh=hc,i.atan=Tc,i.atanh=Ic,i.atan2=xc,i.cbrt=Bc,i.ceil=Sc,i.clamp=Kc,i.cos=Rc,i.cosh=Lc,i.div=Oc,i.exp=Nc,i.floor=Mc,i.hypot=_c,i.ln=Vc,i.log=Ec,i.log10=vc,i.log2=Fc,i.max=Dc,i.min=Wc,i.mod=qc,i.mul=Uc,i.pow=Gc,i.random=Xc,i.round=zc,i.sign=Yc,i.sin=jc,i.sinh=Qc,i.sqrt=Hc,i.sub=Zc,i.sum=$c,i.tan=Jc,i.tanh=el,i.trunc=tl,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Oc(r,e){return new this(r).div(e)}function Nc(r){return new this(r).exp()}function Mc(r){return Y(r=new this(r),r.e+1,3)}function _c(){var r,e,t=new this(0);for(ne=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return ne=!0,new this(1/0);t=e}return ne=!0,t.sqrt()}function Ts(r){return r instanceof Fn||r&&r.toStringTag===Ss||!1}function Vc(r){return new this(r).ln()}function Ec(r,e){return new this(r).log(e)}function Fc(r){return new this(r).log(2)}function vc(r){return new this(r).log(10)}function Dc(){return Ls(this,arguments,"lt")}function Wc(){return Ls(this,arguments,"gt")}function qc(r,e){return new this(r).mod(e)}function Uc(r,e){return new this(r).mul(e)}function Gc(r,e){return new this(r).pow(e)}function Xc(r){var e,t,n,i,s=0,o=new this(1),a=[];if(r===void 0?r=this.precision:Ze(r,1,Qt),n=Math.ceil(r/$),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));s<n;)i=e[s],i>=429e7?e[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);s<n;)i=e[s]+(e[s+1]<<8)+(e[s+2]<<16)+((e[s+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,s):(a.push(i%1e7),s+=4);s=n/4}else throw Error(Bs);else for(;s<n;)a[s++]=Math.random()*1e7|0;for(n=a[--s],r%=$,n&&r&&(i=Re(10,$-r),a[s]=(n/i|0)*i);a[s]===0;s--)a.pop();if(s<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=$)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<$&&(t-=$-n)}return o.e=t,o.d=a,o}function zc(r){return Y(r=new this(r),r.e+1,this.rounding)}function Yc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function jc(r){return new this(r).sin()}function Qc(r){return new this(r).sinh()}function Hc(r){return new this(r).sqrt()}function Zc(r,e){return new this(r).sub(e)}function $c(){var r=0,e=arguments,t=new this(e[r]);for(ne=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return ne=!0,Y(t,this.precision,this.rounding)}function Jc(r){return new this(r).tan()}function el(r){return new this(r).tanh()}function tl(r){return Y(r=new this(r),r.e+1,1)}M[Symbol.for("nodejs.util.inspect.custom")]=M.toString;M[Symbol.toStringTag]="Decimal";var Fn=M.constructor=Ms(Mi);Nr=new Fn(Nr);Mr=new Fn(Mr);var V=Fn;import{PublicKey as Ui}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as nl}from"@solana/spl-token";import{PublicKey as Te,SystemProgram as _s,SYSVAR_RENT_PUBKEY as rl}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var vi=[k({pubkey:nl,isWritable:!1}),k({pubkey:_s.programId,isWritable:!1}),k({pubkey:rl,isWritable:!1})];function Di({publicKey:r,transformSol:e}){let t=Wi(r.toString());if(t instanceof Te)return e&&t.equals(Le)?J:t;if(e&&t.toString()===Le.toBase58())return J;if(typeof t=="string"){if(t===Te.default.toBase58())return Te.default;try{return new Te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wi(r){try{return new Te(r)}catch{return r}}var In=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vs=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$e=new Te("SysvarRent111111111111111111111111111111111"),qi=new Te("SysvarC1ock11111111111111111111111111111111"),xn=new Te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),vr=new Te("Sysvar1nstructions1111111111111111111111111"),Dr=_s.programId,cp=new Te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),lp=new Te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),mp=new Te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),dp=new Te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),pp=new Te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),fp=new Te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),yp=new Te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),bp=new Te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),gp=new Te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),wp=new Te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ap=new Te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Te("So11111111111111111111111111111111111111112"),Le=Te.default;function it(r){return Di({publicKey:r,transformSol:!0})}import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var St={chainId:101,address:il.default.toBase58(),programId:Es.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Oe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Es.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Gi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:s=!1,isToken2022:o=!1}){if(e===Le.toBase58()||e instanceof Ui&&Le.equals(e)){this.decimals=Oe.decimals,this.symbol=Oe.symbol,this.name=Oe.name,this.mint=new Ui(Oe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=s?Ui.default:Di({publicKey:e}),this.isToken2022=o}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ie=Gi;Ie.WSOL=new Gi(D(C({},Oe),{mint:Oe.address}));import qr from"big.js";import al from"bn.js";import ul from"decimal.js-light";import ol from"toformat";var sl=ol,vn=sl;var Wr=ae("module/fraction"),Xi=vn(qr),Dn=vn(ul),cl={[0]:Dn.ROUND_DOWN,[1]:Dn.ROUND_HALF_UP,[2]:Dn.ROUND_UP},ll={[0]:qr.roundDown,[1]:qr.roundHalfUp,[2]:qr.roundUp},de=class{constructor(e,t=new al(1)){this.numerator=j(e),this.denominator=j(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new de(this.denominator,this.numerator)}add(e){let t=e instanceof de?e:new de(j(e));return this.denominator.eq(t.denominator)?new de(this.numerator.add(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof de?e:new de(j(e));return this.denominator.eq(t.denominator)?new de(this.numerator.sub(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof de?e:new de(j(e));return new de(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof de?e:new de(j(e));return new de(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Wr.logWithError(`${e} is not an integer.`),e<=0&&Wr.logWithError(`${e} is not positive.`),Dn.set({precision:e+1,rounding:cl[n]});let i=new Dn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Wr.logWithError(`${e} is not an integer.`),e<0&&Wr.logWithError(`${e} is negative.`),Xi.DP=e,Xi.RM=ll[n]||1,new Xi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var dl=ae("Raydium_price"),Je=class extends de{constructor(t){let{baseToken:n,quoteToken:i,numerator:s,denominator:o}=t;super(s,o);this.baseToken=n,this.quoteToken=i,this.scalar=new de(zi(n.decimals),zi(i.decimals))}get raw(){return new de(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&&dl.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,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Yi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ur=Yi;Ur.SOL=new Yi(St);import pl from"bn.js";var Fs=new de(new pl(100)),je=class extends de{toSignificant(e=5,t,n){return this.mul(Fs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Fs).toFixed(e,t,n)}};var mt=new et(0),Ds=new et(1),bf=new et(2),gf=new et(3),wf=new et(5),ji=new et(10),Af=new et(100),Pf=new et(1e3),kf=new et(1e4),vs=9007199254740991;function j(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof et)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new et(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=vs||r<=-vs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new et(String(r))):typeof r=="bigint"?new et(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new et(0))}function zi(r){return ji.pow(j(r))}function Gr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var yl=ae("Raydium_amount"),qs=vn(fl);function bl(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):yl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ae=class extends de{constructor(t,n,i=!0,s){let o=new Xr(0),a=ji.pow(new Xr(t.decimals));if(i)o=j(n);else{let u=new Xr(0),c=new Xr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=bl(n.toString(),t.decimals);u=j(l),c=j(m)}u=u.mul(a),o=u.add(c)}super(o,a);this.logger=ae(s||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return qs.DP=this.token.decimals,new qs(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ws(r){return typeof r=="object"&&r!==null&&![Ie,Ae,gl,de,wl,Je,je].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Wi(r):Array.isArray(r)?r.map(e=>fe(e)):Ws(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as Gn,Transaction as Xn,TransactionMessage as zn,VersionedTransaction as Yn}from"@solana/web3.js";import Sl from"axios";var E={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Gs,ComputeBudgetProgram as Us,Transaction as zr,TransactionMessage as Al,Keypair as Xs,VersionedTransaction as zs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pl}from"@solana/spl-token";var Vt=ae("Raydium_txUtil"),Ys=1644;function Yr(r){let e=[],t=[];return r.microLamports&&(e.push(Us.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(Us.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Bn(r,e){var n,i;let t=e!=null?e:"confirmed";try{return((i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function jr(r,e){r.length<1&&Vt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Vt.logWithError(`no signers provided:, ${e.toString()}`);let t=new zr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ys}catch{return!1}}async function js(r,e,t,n=!0){let i=new Gs("RaydiumSimuLateTransaction11111111111111111"),s=[],o=new zr;o.feePayer=i;for(let c of e)jr([...o.instructions,c],[i])||(s.push(o),o=new zr,o.feePayer=i),o.add(c);o.instructions.length>0&&s.push(o);let a=[];try{if(a=await kl(r,s,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Vt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Vt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Vt.debug("filteredLog:",u),l.length||Vt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Qs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Vt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Et(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Vt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=Gs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function kl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),s=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");s.push(p)}let o=s.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(o.length/u);c++)a.push(o.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Vt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Wn({instructions:r,payer:e,signers:t}){return jr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xs.generate().publicKey.toString()}){let s=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zs(s).serialize()).toString("base64").length<Ys}catch{return!1}}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function sn(r){let e=[];return r.forEach(t=>{t instanceof zr&&(t.recentBlockhash||(t.recentBlockhash=Pl.toBase58()),t.feePayer||(t.feePayer=Xs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zs&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as $s,AddressLookupTableAccount as Qr}from"@solana/web3.js";import{PublicKey as Hs}from"@solana/web3.js";import{MINT_SIZE as Tl,TOKEN_PROGRAM_ID as Il,getTransferFeeConfig as xl,unpackMint as Bl}from"@solana/spl-token";var Qi=ae("Raydium_accountInfo_util");async function At(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:s=100}=C({batchRequest:!1},t),o=Hi(e,s),a=new Array(o.length).fill([]);if(n){let u=o.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Hi(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Qi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:g,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&Qi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new Hs(g),rentEpoch:b}}return null})))}else try{a=await Promise.all(o.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Qi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function tt(r,e,t){let n=await At(r,e.map(i=>i.pubkey),t);return e.map((i,s)=>D(C({},i),{accountInfo:n[s]}))}async function Zs({connection:r,mints:e,config:t}){var s,o,a;if(e.length===0)return{};let n=await tt(r,e.map(u=>({pubkey:it(u)})),t),i={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Tl){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=Bl(u.pubkey,u.accountInfo,(s=u.accountInfo)==null?void 0:s.owner);i[u.pubkey.toString()]=D(C({},c),{programId:((o=u.accountInfo)==null?void 0:o.owner)||Il,feeConfig:(a=xl(c))!=null?a:void 0})}return i[Hs.default.toBase58()]=i[J.toBase58()],i}async function Zi({connection:r,address:e}){let t=await At(r,[...new Set(e.map(i=>i.toString()))].map(i=>new $s(i))),n={};for(let i=0;i<e.length;i++){let s=t[i],o=e[i];if(!s)continue;let a=new Qr({key:o,state:Qr.deserialize(s.data)});n[o.toString()]=a,Hr[o.toString()]=a}return n}var Hr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Qr({key:new $s("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Qr.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 Zr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Sl.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Yr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:s=[],lookupTableAddress:o=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...o.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){let t=new Xn;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:i,skipPreflight:s=!0}=n||{},o=i!=null?i:await Bn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=o,this.signers.length&&t.sign(...this.signers),sn([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Gn(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:s}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),s=t.filter(c=>c.transaction.instructions.length>0),o=[i,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:o,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 Bn(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let g=[];for(let b of o){let P=await Gn(this.connection,b,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});g.push(P)}return{txIds:g,signedTxs:o}}return{txIds:await await Promise.all(o.map(async(g,b)=>(g.recentBlockhash=y,await Gn(this.connection,g,a[b].find(P=>P.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:o}}if(this.signAllTransactions){let g=o.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));sn(g);let b=await this.signAllTransactions(g);if(l){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:p});A.push({txId:I,status:"sent",signedTx:b[P]}),m==null||m([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),m==null||m([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:p});P.push(h)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,s=he(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),o=C(C({},this.cluster==="devnet"?{}:Hr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)o[p]===void 0&&u.push(new Un(p));let c=await Zi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))o[p]=y;let l=new zn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Bn(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(o)),m=new Yn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var g;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),sn([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let b=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:b},"confirmed"),{txId:b,signedTx:m}}if(this.signAllTransactions){let b=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(b[0],{skipPreflight:f}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),s=t.filter(c=>c.builder.instructions.length>0),o=[i,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return o.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:o,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&o.forEach(f=>f.message.recentBlockhash=d),sn(o),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(o.forEach((b,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let P of o){let A=await this.connection.sendTransaction(P,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:A},"confirmed"),b.push(A)}return{txIds:b,signedTxs:o}}return{txIds:await Promise.all(o.map(async b=>{let P=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:o}}if(this.signAllTransactions){let f=await this.signAllTransactions(o);if(l){let g=0,b=[],P=async()=>{if(!f[g])return;let A=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push({txId:A,status:"sent",signedTx:f[g]}),m==null||m([...b]),g++,this.connection.onSignature(A,h=>{let I=b.findIndex(T=>T.txId===A);I>-1&&(b[I].status=h.err?"error":"success"),m==null||m([...b]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let g=[];for(let b=0;b<f.length;b+=1){let P=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push(P)}return{txIds:g,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=he(c,["computeBudgetConfig"]),i=t?Yr(t):{instructions:[],instructionTypes:[]},s=this.signers.reduce((l,m)=>D(C({},l),{[m.publicKey.toBase58()]:m}),{}),o=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Wn({instructions:d,payer:this.feePayer,signers:y})||Wn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Wn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?o.push(new Xn().add(...i.instructions,...u)):o.push(new Xn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(f=>s[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>s[d]).filter(d=>d!==void 0);Wn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?o.push(new Xn().add(...i.instructions,...u)):o.push(new Xn().add(...u)),a.push(m)}return o.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:o,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Bn(this.connection,this.blockhashCommitment);if(o.forEach(async(b,P)=>{b.recentBlockhash=f,a[P].length&&b.sign(...a[P])}),sn(o),(g=this.owner)!=null&&g.isKeyPair){if(m){let b=[];for(let P of o){let A=await Gn(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});b.push(A)}return{txIds:b,signedTxs:o}}return{txIds:await Promise.all(o.map(async(b,P)=>await Gn(this.connection,b,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:o}}if(this.signAllTransactions){let b=await this.signAllTransactions(o);if(m){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:y});A.push({txId:I,status:"sent",signedTx:b[P]}),d==null||d([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),d==null||d([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=g,s=he(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),o=C(C({},this.cluster==="devnet"?{}:Hr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let b of a)o[b]===void 0&&u.push(new Un(b));let c=await Zi({connection:this.connection,address:u});for(let[b,P]of Object.entries(c))o[b]=P;let l=t?Yr(t):{instructions:[],instructionTypes:[]},m=await Bn(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,P)=>D(C({},b),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(b=>{let P=[...f,b],A=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:o})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:o}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let h={};for(let I of[...new Set(a)])o[I]!==void 0&&(h[I]=o[I]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:o,recentBlockhash:m})){let I=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(o));p.push(new Yn(I))}else{let I=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(o));p.push(new Yn(I))}y.push(Array.from(new Set(f.map(I=>I.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(I=>d[I]).filter(I=>I!==void 0)),f=[b]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:o,recentBlockhash:m})){let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(o));p.push(new Yn(A))}else{let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(o));p.push(new Yn(A))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async b=>{var T;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:I=!0}=b||{};if(p.map(async(S,x)=>{y[x].length&&S.sign(y[x]),h&&(S.message.recentBlockhash=h)}),sn(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:S,blockhash:x}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((K,O)=>{y[O].find(N=>N.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let O of p){let N=await this.connection.sendTransaction(O,{skipPreflight:I}),{lastValidBlockHeight:U,blockhash:F}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:F,lastValidBlockHeight:U,signature:N},"confirmed"),K.push(N)}return{txIds:K,signedTxs:p}}return{txIds:await Promise.all(p.map(async K=>{let O=await this.connection.sendTransaction(K,{skipPreflight:I});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:S,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(P){let x=0,K=[],O=async()=>{if(!S[x])return;let N=await this.connection.sendTransaction(S[x],{skipPreflight:I});K.push({txId:N,status:"sent",signedTx:S[x]}),A==null||A([...K]),x++,this.connection.onSignature(N,U=>{let F=K.findIndex(H=>H.txId===N);F>-1&&(K[F].status=U.err?"error":"success"),A==null||A([...K]),U.err||O()},"processed"),this.connection.getSignatureStatus(N)};return O(),{txIds:[],signedTxs:S}}else{let x=[];for(let K=0;K<S.length;K+=1){let O=await this.connection.sendTransaction(S[K],{skipPreflight:I});x.push(O)}return{txIds:x,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var Pt=class{constructor(e){this._owner=e}get publicKey(){return Pt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return Pt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return Pt.isKeyPair(this._owner)}get isPublicKey(){return Pt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!Pt.isKeyPair(e)}};function Hi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Js=r=>typeof r=="number";function ea(r,e,t){let n=Js(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ta(r,e,t){let n=Js(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as le}from"@solana/web3.js";var na=new le("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ra=new le("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Qn=new le("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ly=new le("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Oy=new le("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),$i=new le("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$r=new le("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ny=new le("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ia=new le("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),My=new le("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),_y=new le("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Kl=new le("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Cl=new le("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Rl=new le("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ll=new le("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Vy=new le("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ey=new le("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fy=new le("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ol=new le("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Nl=new le("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Ml=new le("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Hn={IDO_PROGRAM_ID_V1:Kl,IDO_PROGRAM_ID_V2:Cl,IDO_PROGRAM_ID_V3:Rl,IDO_PROGRAM_ID_V4:Ll};var vy={SERUM_MARKET:le.default,OPENBOOK_MARKET:new le("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:le.default,FarmV3:new le("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new le("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new le("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new le("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new le("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new le("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new le("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ol,CREATE_CPMM_POOL_AUTH:Nl,CREATE_CPMM_POOL_FEE_ACC:Ml,FEE_DESTINATION_ID:new le("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as _l}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vl}from"@solana/spl-token";function ye(r,e,t){return oe([r.toBuffer(),(t!=null?t:Vl).toBuffer(),e.toBuffer()],new _l("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import kt from"bn.js";var Zn=1e4;function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(C({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),s=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,o=new kt(s.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(s.transferFeeBasisPoints===Zn){let u=new kt(s.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=$n(r.mul(new kt(Zn)),new kt(Zn-s.transferFeeBasisPoints)),c=new kt(s.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=$n(l.mul(new kt(s.transferFeeBasisPoints)),new kt(Zn)),d=m.gt(o)?o:m;return{amount:l,fee:d,expirationTime:a}}else{let u=$n(r.mul(new kt(s.transferFeeBasisPoints)),new kt(Zn)),c=u.gt(o)?o:u;return{amount:r,fee:c,expirationTime:a}}}function Kt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function $n(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new kt(0))?t.add(new kt(1)):t}var Ee={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"},mb=C({},Ee);var oa="ray_tab_hash",Ji="ray_req_hash",El=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(oa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(oa,r)),r},Jr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=he(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(o=>o());let s=JSON.parse(localStorage.getItem(Ji)||"[]").slice(0,r-1);e&&s.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),s.unshift(D(C({},t),{time:Date.now(),session:El()}));try{localStorage.setItem(Ji,JSON.stringify(s))}catch{if(e){let o=!1,a=JSON.stringify(t.data).substring(0,100);for(s[0].data=a+(a.length>100?"...":"");!o;){s.pop();let u=JSON.stringify(t.data).substring(0,100);s[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Ji,JSON.stringify(s)),o=!0}catch{o=!1}}return new Promise(u=>u())}return Jr(D(C({},t),{logCount:r,removeLastLog:!0}))}};var ei=ae("Raydium_Api"),eo=new Map;var ti=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:s}){this.cluster=e,this.urlConfigs=s||{},this.logCount=i||1e3,this.api=sa.create({baseURL:this.urlConfigs.BASE_HOST||Ee.BASE_HOST,timeout:t}),this.api.interceptors.request.use(o=>{let{method:a,baseURL:u,url:c}=o;return ei.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),o},o=>(ei.error("Request failed"),Promise.reject(o))),this.api.interceptors.response.use(o=>{let{config:a,data:u,status:c}=o,{method:l,baseURL:m,url:d}=a;return n&&Jr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),ei.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},o=>{let{config:a,response:u={}}=o,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&Jr({status:c,url:`${m}${d}`,params:a.params,data:o.message,logCount:this.logCount}),ei.error(`${l.toUpperCase()} ${m}${d} ${c||o.message}`),Promise.reject(o)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ee.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ee.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await sa.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,s)=>i+s,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ee.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ee.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ee.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ee.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ee.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:s=0,pageSize:o=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ee.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${s}&pageSize=${o}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ee.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(o=>eo.has(o)?(n.push(eo.get(o)),!1):!0),s=[];return i.length&&(s=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ee.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),s.forEach(a=>{eo.set(a.id,a)})),n.concat(s)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:s="default",order:o="desc",page:a=1}=e,[u,c]=[t&&it(t).toBase58(),n&&n!=="undefined"?it(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ee.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${s}&sortType=${o}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Ee.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ee.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ee.CHECK_AVAILABILITY)).data}};var ni="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",aa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as mo,TOKEN_PROGRAM_ID as Jt,AccountLayout as Kn,TOKEN_2022_PROGRAM_ID as pm}from"@solana/spl-token";import{PublicKey as li,SystemProgram as fm}from"@solana/web3.js";var to=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),xe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(to(e))}logInfo(...e){this.logger.info(to(e))}logAndCreateError(...e){let t=to(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as am,createCloseAccountInstruction as um,createTransferInstruction as cm,TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";import{PublicKey as lm,SystemProgram as mm}from"@solana/web3.js";import dm from"bn.js";import{PublicKey as ka,Keypair as rm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as im}from"@solana/spl-token";import om from"bn.js";import{PublicKey as Hl}from"@solana/web3.js";import da,{isBN as pa}from"bn.js";import{bits as vl,BitStructure as Xb,blob as Dl,Blob as zb,cstr as Yb,f32 as jb,f32be as Qb,f64 as Hb,f64be as Zb,greedy as $b,Layout as Wl,ns64 as Jb,ns64be as eg,nu64 as ql,nu64be as tg,offset as ng,s16 as rg,s16be as ig,s24 as og,s24be as sg,s32 as Ul,s32be as ag,s40 as ug,s40be as cg,s48 as lg,s48be as mg,s8 as dg,seq as Gl,struct as pg,Structure as Xl,u16 as zl,u16be as fg,u24 as yg,u24be as bg,u32 as Yl,u32be as gg,u40 as wg,u40be as Ag,u48 as Pg,u48be as kg,u8 as jl,UInt as Ql,union as hg,Union as Tg,unionLayoutDiscriminator as Ig,utf8 as xg}from"@solana/buffer-layout";var ri=Wl,ua=Xl;var no=Ql;var ca=jl,Ct=zl;var ro=Yl;var la=ql;var Fe=Ul;var ma=Gl;var pe=Dl;var io=vl;var an=class extends ri{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new da(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new da(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},ii=class extends ri{constructor(t){super(8,t);this._lower=io(ro(),!1),this._upper=io(ro(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),s=this._upper.decode(t,n+this._lower.span);return C(C({},i),s)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function v(r){return new no(1,r)}function qe(r){return new no(4,r)}function w(r){return new an(8,!1,r)}function Q(r){return new an(16,!1,r)}function fa(r){return new an(1,!0,r)}function si(r){return new an(8,!0,r)}function ya(r){return new an(16,!0,r)}var oi=class extends ri{constructor(t,n,i,s){super(t.span,s);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new oi(pe(32),e=>new Hl(e),e=>e.toBuffer(),r)}function ve(r){return new oi(ca(),Zl,$l,r)}function Zl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function $l(r){return r?1:0}var oo=class extends ua{decode(e,t){return super.decode(e,t)}};function _(r,e,t){return new oo(r,e,t)}function G(r,e,t){let n,i=typeof e=="number"?e:pa(e)?e.toNumber():new Proxy(e,{get(s,o){if(!n){let a=Reflect.get(s,"count");n=pa(a)?a.toNumber():a,Reflect.set(s,"count",n)}return Reflect.get(s,o)},set(s,o,a){return o==="count"&&(n=a),Reflect.set(s,o,a)}});return ma(r,i,t)}var Ht=_([B("mint"),B("owner"),w("amount"),qe("delegateOption"),B("delegate"),v("state"),qe("isNativeOption"),w("isNative"),w("delegatedAmount"),qe("closeAuthorityOption"),B("closeAuthority")]);function Jl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function so(r,...e){if(!Jl(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function ao(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ba(r,e){so(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ui=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),ht=(r,e)=>r<<32-e|r>>>e;var Dg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function em(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function uo(r){return typeof r=="string"&&(r=em(r)),so(r),r}var ai=class{clone(){return this._cloneInto()}},Wg={}.toString;function ga(r){let e=n=>r().update(uo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function tm(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),s=BigInt(4294967295),o=Number(t>>i&s),a=Number(t&s),u=n?4:0,c=n?0:4;r.setUint32(e+u,o,n),r.setUint32(e+c,a,n)}var wa=(r,e,t)=>r&e^~r&t,Aa=(r,e,t)=>r&e^r&t^e&t,ci=class extends ai{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ui(this.buffer)}update(e){ao(this);let{view:t,buffer:n,blockLen:i}=this;e=uo(e);let s=e.length;for(let o=0;o<s;){let a=Math.min(i-this.pos,s-o);if(a===i){let u=ui(e);for(;i<=s-o;o+=i)this.process(u,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ao(this),ba(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:s}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>i-o&&(this.process(n,0),o=0);for(let m=o;m<i;m++)t[m]=0;tm(n,i-8,BigInt(this.length*8),s),this.process(n,0);let a=ui(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:s,destroyed:o,pos:a}=this;return e.length=i,e.pos=a,e.finished=s,e.destroyed=o,i%t&&e.buffer.set(n),e}};var nm=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]),Zt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),$t=new Uint32Array(64),co=class extends ci{constructor(){super(64,32,8,!1),this.A=Zt[0]|0,this.B=Zt[1]|0,this.C=Zt[2]|0,this.D=Zt[3]|0,this.E=Zt[4]|0,this.F=Zt[5]|0,this.G=Zt[6]|0,this.H=Zt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:s,F:o,G:a,H:u}=this;return[e,t,n,i,s,o,a,u]}set(e,t,n,i,s,o,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=s|0,this.F=o|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=ht(d,7)^ht(d,18)^d>>>3,f=ht(p,17)^ht(p,19)^p>>>10;$t[m]=f+$t[m-7]+y+$t[m-16]|0}let{A:n,B:i,C:s,D:o,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ht(a,6)^ht(a,11)^ht(a,25),p=l+d+wa(a,u,c)+nm[m]+$t[m]|0,f=(ht(n,2)^ht(n,13)^ht(n,22))+Aa(n,i,s)|0;l=c,c=u,u=a,a=o+p|0,o=s,s=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,s,o,a,u,c,l)}roundClean(){$t.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Pa=ga(()=>new co);var iw=ae("Raydium_Util");function ha({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:s,account:o}of t.value){let a=Ht.decode(o.data),{mint:u,amount:c}=a;n.push({publicKey:s,mint:u,amount:c,isAssociated:ye(r,u,o.owner).publicKey.equals(s),isNative:!1,programId:o.owner}),i.push({pubkey:s,accountInfo:a,programId:o.owner})}return e&&n.push({mint:ka.default,amount:new om(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ue({fromPublicKey:r,programId:e=im}){let t=rm.generate().publicKey.toBase58().slice(0,32);return{publicKey:sm(r,t,e),seed:t}}function sm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Pa(n);return new ka(i)}function lo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=Sn}=r;return am(t,e,n,i)}function Ft(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:s=Sn}=r;return um(e,t,i,n,s)}async function vt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:s,skipCloseAccount:o}=r,a=await e.getMinimumBalanceForRentExemption(Ht.span,n),u=j(t).add(new dm(a)),c=Ue({fromPublicKey:i,programId:Sn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[mm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Ht.span,programId:Sn}),lo({mint:new lm(Oe.address),tokenAccount:c.publicKey,owner:s,programId:Sn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:o?[]:[E.CloseAccount],endInstructions:o?[]:[Ft({tokenAccount:c.publicKey,payer:i,owner:s})]}}function Jn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:s=Sn}){return cm(r,e,t,BigInt(String(n)),i,s)}var er=class extends xe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ye(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=C(C({},{}),t),[s,o,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Jt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:pm},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ha({owner:this.scope.ownerPubKey,solAccountResp:s,tokenAccountResp:{context:o.context,value:[...o.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Jt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let s=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),o=this.getAssociatedTokenAccount(t,n);for(let a of s){let{publicKey:u}=a;if(u&&(!i||i&&o.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,g,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:s,owner:o,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new li(t.tokenProgram||Jt),m=this.getAssociatedTokenAccount(n,new li(l)),d=(a?[]:this.tokenAccountRawInfos).filter(P=>P.accountInfo.mint.equals(n)&&(!s||P.pubkey.equals(m))).sort((P,A)=>P.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(s){let P=mo(o,m,o,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(P),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&Kn.decode(A.data).mint.equals(n)&&Kn.decode(A.data).owner.equals(o)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(P),p.instructionTypes.push(E.CreateATA);if(n.equals(J)&&i.amount){let A=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),i.amount&&(p.instructions.push(Jn({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Jt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(Ft({owner:o,payer:i.payer||o,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let P=Ue({fromPublicKey:o,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(Kn.span),h=fm.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:P.seed,newAccountPubkey:P.publicKey,lamports:A+Number((b=(g=i.amount)==null?void 0:g.toString())!=null?b:0),space:Kn.span,programId:l});return p.instructions.push(h,lo({mint:n,tokenAccount:P.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(Ft({owner:o,payer:i.payer||o,tokenAccount:P.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:P.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Jt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let s=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,o=this.scope.ownerPubKey,a={};if(!s){let c=this.getAssociatedTokenAccount(t,n),l=await mo(o,c,o,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],s=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Ft({owner:o,payer:o,tokenAccount:s,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:s,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:s,programId:o=Jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(s,o);if(new li(J).equals(s)){let p=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=mo(this.scope.ownerPubKey,d,this.scope.ownerPubKey,s,o);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Jt)&&Kn.decode(f.data).mint.equals(s)&&Kn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${s.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Jt,amount:s,useSOLBalance:o,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new li(J))&&o){let l=await this.handleTokenAccount({side:"in",amount:s||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=he(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=m,p=he(m,["tokenAccount"]);u=d,c.addInstruction(p)}return C({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as _m}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Vm}from"@solana/web3.js";import{PublicKey as Ca}from"@solana/web3.js";var po=_([v("instruction")]),fo=_([v("instruction")]),ym=_([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Q("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),G(w(),15,"padding")]),bm=_([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),Q("perShareReward"),w("lastSlot"),w("perSlotReward")]),gm=_([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),Q("perShareRewardA"),w("perSlotRewardA"),v("option"),B("rewardVaultB"),pe(7),w("totalRewardB"),Q("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),wm=_([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Q("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),G(ym,5,"rewardInfos"),B("creator"),B(),G(w(),32,"padding")]),Ta=new Proxy(bm,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(C({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ia=new Proxy(gm,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(C({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),tr=new Proxy(wm,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(C({},i),{version:6,rewardInfos:i.rewardInfos.map(s=>{var o;return D(C({},s),{rewardType:((o=Object.entries(en).find(a=>String(a[1])===s.rewardType.toString()))!=null?o:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Am=_([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),yo=_([v("instruction"),w("nonce"),G(Am,5,"rewardTimeInfo")]),bo=_([v("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),go=_([v("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Vw=_([w("state"),B("id"),B("owner"),w("deposited"),G(w(),1,"rewardDebts")]),nr=_([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),1,"rewardDebts"),w(""),w("voteLockedBalance"),G(w(),15)]),Ew=_([w("state"),B("id"),B("owner"),w("deposited"),G(w(),2,"rewardDebts")]),xa=_([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),2,"rewardDebts"),G(w(),17)]),Ba=_([w(),w("state"),B("id"),B("owner"),w("deposited"),G(Q(),5,"rewardDebts"),G(w(),16)]),Qe=_([v("instruction"),w("amount")]),Pm=_([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),fa("digitShift"),G(v(),7,"reserved1"),G(w(),7,"reserved2")]),Sa=_([pe(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),G(v(),32,"reserved1"),G(Pm,4,"votingMints"),si("timeOffset"),v("bump"),G(v(),7,"reserved2"),G(w(),11,"reserved3")]),km=_([si("startTime"),si("endTime"),v("kind"),G(v(),15,"reserved")]),hm=_([G(km,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),ve("isUsed"),ve("allowClawback"),v("votingMintConfigIdx"),G(v(),29,"reserved")]),Ka=_([pe(8),B("voterAuthority"),B("registrar"),G(hm,32,"deposits"),v("voterBump"),v("voterWweightRecordBump"),G(v(),94,"reserved")]);var Xw=ae("Raydium_farm_config"),Ra=new Ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),La=new Ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Oa={3:Ta,5:Ia,6:tr},Na={3:nr,5:xa,6:Ba},wo=r=>[3,5,6].indexOf(r)!==-1,Ao=r=>{var o;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,s={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(o=s[e])==null?void 0:o.call(s)},en={"Standard SPL":0,"Option tokens":1},dt={[na.toString()]:3,[ra.toString()]:5,[Qn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as xm,SYSVAR_CLOCK_PUBKEY as or,TransactionInstruction as Me}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Bm,TOKEN_PROGRAM_ID as ot,ASSOCIATED_TOKEN_PROGRAM_ID as Sm}from"@solana/spl-token";import mi from"bn.js";function Po(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function ko(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function ho(r,e){return oe([e.toBuffer()],r)}function To(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Io(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function xo(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var rr=ae("Raydium.farm.util");function ir({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Ge({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Ma=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function _a(r){return{isSet:new nt(1),rewardPerSecond:j(r.perSecond),rewardOpenTime:j(r.openTime),rewardEndTime:j(r.endTime),rewardType:j(en[r.rewardType])}}function Bo(r){return j(r.endTime).sub(j(r.openTime)).mul(j(r.perSecond))}function Cn(r){let e=Na[r];return e||rr.logWithError("invalid version",r),e}function Tm(r){let e=Oa[r];return e||rr.logWithError("invalid version",r),e}function Im(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new nt(t)))return r;let i=new nt(t).sub(r.lastSlot);r.lastSlot=new nt(t);for(let s of r.rewardInfos){if(e.amount.eq(new nt(0)))continue;let o=s.perSlotReward.mul(i);s.perShareReward=s.perShareReward.add(o.mul(new nt(10).pow(new nt(r.version===3?9:15))).div(e.amount)),s.totalReward=s.totalReward.add(o)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new nt(0)))continue;let s=nt.min(new nt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(s))continue;let a=s.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=s,!e.amount.eq(new nt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function uA({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let s=!1,o=!1,a=new nt(10),u=[];for(let d of e){let p=fe(d);p.version===6?o=!0:s=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:Ge({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await tt(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:g}of l){let b=f.toBase58();if(c[b]=C({},c[b]),y==="state"){let P=Tm(p);(!g||!g.data||g.data.length!==P.span)&&rr.logWithError(`invalid farm state account info, pools.id, ${d}`),c[b].state=P.decode(g.data)}else if(y==="lpVault")(!g||!g.data||g.data.length!==Ht.span)&&rr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[b].lpVault=Ht.decode(g.data);else if(y==="ledger"){let P=Cn(p);g&&g.data&&(g.data.length!==P.span&&rr.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[b].ledger=P.decode(g.data))}}let m=o||s?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=Im(c[d].state,c[d].lpVault,m,i));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new nt(9)):a.pow(new nt(15)),g=p.rewardInfos.map((b,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(p.version===6?b.accRewardPerShare:b.perShareReward).div(f).sub(A)});c[d].wrapped=D(C({},c[d].wrapped),{pendingRewards:g})}return c}function cA(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ea(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ta(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function So(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let o=Sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(o===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:o,isInit:!1};let c=Ka.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===o);return c===-1?{index:o,isInit:!1}:{index:c,isInit:!0}}var Km=ae("Raydium_farm_instruction"),sr={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 di(r){let{version:e,id:t,ledger:n,programId:i,owner:s}=r,o={3:9,5:10}[e];o||Km.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(po.span);po.encode({instruction:o},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:s,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:xm,isWritable:!1})];return{instruction:new Me({programId:i,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Va(r){var n;let e=Buffer.alloc(yo.span);yo.encode({instruction:0,nonce:new mi(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...vi,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Le}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Me({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function Ea(r){let e=Buffer.alloc(fo.span);fo.encode({instruction:5},e);let t=[k({pubkey:ot,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Me({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Cm(r,e,t,n,i,s,o,a,u,c,l,m,d){let p=_([v("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let g=Buffer.from([...sr.voterStakeRegistryDeposit,...f]);return new Me({keys:y,programId:r,data:g})}function Rm(r,e,t,n){let i=_([]),s=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],o=Buffer.alloc(i.span);i.encode({},o);let a=Buffer.from([...sr.voterStakeRegistryUpdateVoterWeightRecord,...o]);return new Me({keys:s,programId:r,data:a})}function Lm(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([v("depositEntryIndex"),w("amount")]),g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},b);let P=Buffer.from([...sr.voterStakeRegistryWithdraw,...b]);return new Me({keys:g,programId:r,data:P})}function Om(r,e,t,n,i,s){let o=_([v("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(o.span);return o.encode({ins:23},u),new Me({keys:a,programId:r,data:u})}function Nm(r,e,t,n,i,s,o,a){let u=_([v("voterBump"),v("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:o,voterWeightRecordBump:a},l);let m=Buffer.from([...sr.voterStakeRegistryCreateVoter,...l]);return new Me({keys:c,programId:r,data:m})}function Mm(r,e,t,n,i,s,o,a,u,c,l,m){let d=_([v("depositEntryIndex"),v("kind"),v("option"),w("startTs"),qe("periods"),ve("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:Sm,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...sr.voterStakeRegistryCreateDepositEntry,...y]);return new Me({keys:p,programId:r,data:f})}async function BA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:s,owner:o,poolId:a,tokenProgram:u}){let c=Po(n,i,s).publicKey,l=Ge({programId:e,poolId:a,owner:o,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=nr.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new mi(0)))throw Error("user do not has new stake amount");let y=ko(e,a).publicKey,f=ho(e,a).publicKey,{publicKey:g,nonce:b}=To(n,c,o),P=ye(g,y,u).publicKey,{publicKey:A,nonce:h}=Io(n,c,o),I=xo(t,i,s,o).publicKey,T=[],S=ye(o,y,u).publicKey;if(await r.getAccountInfo(S)===null&&T.push(Bm(o,S,o,y)),await r.getAccountInfo(g)===null){let U=Om(t,i,o,s,o,I);T.push(U,Nm(n,c,g,A,o,o,b,h))}let{index:O,isInit:N}=await So(r,c,g,y);return N||T.push(Mm(n,c,g,P,o,o,y,O,0,void 0,0,!1)),T.push(Cm(n,c,g,P,S,o,l,a,y,f,e,O,p),Rm(n,c,g,A)),T}async function SA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:s,owner:o,poolId:a,tokenProgram:u}){let c=Po(n,i,s).publicKey,l=Ge({programId:e,poolId:a,owner:o,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=nr.decode(m.data);if(d.voteLockedBalance.eq(new mi(0)))throw Error("user has vote locked balance = 0");let p=ko(e,a).publicKey,y=ho(e,a).publicKey,{publicKey:f}=To(n,c,o),g=ye(f,p,u).publicKey,{publicKey:b}=Io(n,c,o),P=xo(t,i,s,o).publicKey,A=[],{index:h,isInit:I}=await So(r,c,f,p);if(!I)throw Error("deposit entry index check error");return A.push(Lm(n,c,f,o,P,b,g,ye(o,p,u).publicKey,l,a,p,y,e,h,d.voteLockedBalance)),A}function Ko({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let s=Buffer.alloc(bo.span);bo.encode({instruction:3,rewardReopenTime:j(i.openTime),rewardEndTime:j(i.endTime),rewardPerSecond:j(i.perSecond)},s);let o=[k({pubkey:ot,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Me({programId:n.programId,keys:o,data:s})}function Co({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let s=Buffer.alloc(go.span);go.encode({instruction:4,isSet:new mi(1),rewardPerSecond:j(i.perSecond),rewardOpenTime:j(i.openTime),rewardEndTime:j(i.endTime),rewardType:j(en[i.rewardType])},s);let o=[...vi,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Me({programId:t.programId,keys:o,data:s})}function KA(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:s,owner:o,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],d=Ge({programId:l,poolId:m,owner:o,version:n}),p=Buffer.alloc(Qe.span);Qe.encode({instruction:a,amount:u},p);let y=n===6?[k({pubkey:ot,isWritable:!1}),...c?[k({pubkey:un.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:d}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:d}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new ie(t.lpVault)}),k({pubkey:s[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:s[f]})),y.push(k({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(k({pubkey:s[f]}));return new Me({programId:l,keys:y,data:p})}function ar(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=Ge({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:2,amount:j(o)},l);let m=[k({pubkey:ot,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Me({programId:a,keys:m,data:l})}function ur(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:12,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function cr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function Fa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:10,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function Da(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=Ge({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:1,amount:j(o)},l);let m=[k({pubkey:ot,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Me({programId:a,keys:m,data:l})}var lr=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Le)){let n=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Bo(D(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Qn,txVersion:s}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:Ra,lockVault:La},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ue({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(tr.span);u.addInstruction({instructions:[Vm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:tr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ma({programId:new ke(a.programId),poolId:l.publicKey}),y=ir({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],g=[];for(let I of a.rewardInfos){I.openTime>=I.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",I.openTime.toString()),isNaN(en[I.rewardType])&&this.logAndCreateError("rewardType error",I.rewardType),Number(I.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",I.perSecond),f.push(_a(I));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:I,payer:c});S&&u.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=I.mint.equals(Le)?new ke(Oe.address):I.mint;g.push({rewardMint:x,rewardVault:ir({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});P&&u.addInstruction(P),b||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:h}=Va({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:b,programId:a.programId,rewardInfo:g,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[h]}).versionBuild({txVersion:s,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:b,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var g;let s=dt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let o=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:o.id,rewardInfos:e.rewardInfos,lpVault:o.lpVault,programId:o.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Le)?new ke(Oe.address):n.mint,l=a.rewardInfos.findIndex(b=>new ke(b.mint.address).equals(c)),m=o.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(g=m.vault)!=null?g:Le,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:[Ko({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let s=dt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let o=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:o.id,rewardInfos:e.rewardInfos,lpVault:o.lpVault,programId:o.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(Le)?new ke(Oe.address):m.mint,p=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(d)),y=o.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Le,{rewardPubKey:g,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:m,payer:u});b&&c.addInstruction(b),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Ko({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:g,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:s}=e,o=dt[n.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Le)?new ke(Oe.address):i.mint,m=ir({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Co({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:s}=e,o=dt[n.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Le)?new ke(Oe.address):l.mint,d=ir({programId:new ke(n.programId),poolId:new ke(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=Co({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(C({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:s,useSOLBalance:o,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=dt[d];wo(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=Ge({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let F of this.scope.account.tokenAccounts)if(a){let H=ye(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&H.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let h=g.lpMint,I=A[h.address];I||this.logAndCreateError("you don't have any lp","lp zero",A);let T=[];for(let F of m){let H=o&&F.mint.address===J.toString(),Z=A[F.mint.address];if(!Z){let{account:W,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new ke(F.mint.address),notUseTokenAccount:H,createInfo:{payer:s||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!H,associatedOnly:H?!1:a,checkCreateATAOwner:u});Z=W,lt&&P.addInstruction(lt)}A[F.mint.address]=Z,T.push(Z)}let S,x=await this.scope.connection.getAccountInfo(b);if(x&&(S=Cn(p).decode(x.data)),n.programId!==Qn.toString()&&!S){let{instruction:F,instructionType:H}=di({id:f,programId:y,version:p,ledger:b,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[F],instructionTypes:[H]})}let K=Ao({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});K&&this.logAndCreateError(K);let O={amount:j(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:I,rewardAccounts:T,userAuxiliaryLedgers:c==null?void 0:c.map(F=>new ke(F))},N=p===6?Da(O):p===5?va(O):Fa(O),U={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return P.addInstruction({instructions:[N],instructionTypes:[U[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:s,useSOLBalance:o,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=dt[n.programId];wo(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let g={};for(let K of this.scope.account.tokenAccounts)if(u){let O=ye(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&O.equals(K.publicKey)&&(g[K.mint.toString()]=K.publicKey)}else g[K.mint.toString()]=K.publicKey;if(s)s.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=Ge({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),O=await this.scope.connection.getAccountInfo(K);O||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:O}),Cn(p).decode(O.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let b=y.lpMint.address,P=o&&b===J.toString(),A=g[b.toString()];if(!A){let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(b),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,O&&f.addInstruction(O)}g[b.toString()]=A;let h=[];for(let K of d){let O=o&&K.mint.address===J.toString(),N=g[K.mint.address];if(!N){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new ke(K.mint.address),notUseTokenAccount:O,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});N=U,F&&f.addInstruction(F)}g[K.mint.address]=N,h.push(N)}let I=Ao({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:h});I&&this.logAndCreateError(I);let T={amount:j(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new ke(K))},S=p===6?ar(T):p===5?ur(T):cr(T),x={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let i=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),s=dt[e.programId];s!==6&&this.logAndCreateError("invalid farm version",s);let o=e.rewardInfos.findIndex(y=>y.mint.address===Le.toString()?new ke(Oe.address):t),a=i.rewardInfos[o];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Le,c=this.createTxBuilder(),l;if(t.equals(Le)){let y=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Bo(D(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[_m(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ea({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:s=!0,checkCreateATAOwner:o=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(s){let f=ye(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:g,rewardInfos:b,id:P}=y,A=dt[f],h=g.address,I=n&&h===J.toString(),T=m[h];if(!T){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.programId,mint:new ke(h),notUseTokenAccount:I,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:I?!1:s,checkCreateATAOwner:o});T=U,F&&l.addInstruction(F)}m[h.toString()]=T;let S=[];for(let U of b){let F=n&&U.mint.address===J.toString(),H=m[U.mint.address];if(!H){let{account:Z,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:U.mint.programId,mint:new ke(U.mint.address),notUseTokenAccount:F,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:s,checkCreateATAOwner:o});H=Z,W&&l.addInstruction(W)}m[U.mint.address]=H,S.push(H)}let x=p[P],K={amount:mt,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(U=>new ke(U))},O=A===6?ar(K):A===5?ur(K):cr(K),N={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[O],instructionTypes:[N[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Ce}from"@solana/web3.js";import{AccountLayout as hd,NATIVE_MINT as xu,TOKEN_PROGRAM_ID as Pi}from"@solana/spl-token";var ZA=_([qe("mintAuthorityOption"),B("mintAuthority"),w("supply"),v("decimals"),v("isInitialized"),qe("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as Em}from"@solana/web3.js";import{MintLayout as Wa,TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";var aP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new Em(e));return!t||t.data.length!==Wa.span?void 0:Wa.decode(t.data)},uP=({mint:r,decimals:e,programId:t=Fm,logoURI:n="",priority:i=3})=>{let s=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:s,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:s,tags:[],priority:i}},pi=r=>new Ie({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),Ro=i=>{var s=i,{amount:r,isRaw:e,name:t}=s,n=he(s,["amount","isRaw","name"]);return new Ae(new Ie({mint:it(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function cP(r){return r.address===St.address?Oe:r}function lP(r){return r.address===Oe.address?St:r}var cn=i=>{var s=i,{address:r,programId:e,decimals:t}=s,n=he(s,["address","programId","decimals"]);return C({chainId:101,address:it(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Lo=r=>r?D(C({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:D(C({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:D(C({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as On,ASSOCIATED_TOKEN_PROGRAM_ID as $m}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Dt,SystemProgram as Qa,SYSVAR_RENT_PUBKEY as Jm}from"@solana/web3.js";var Oo=_([v("instruction"),w("amountIn"),w("minAmountOut")]),No=_([v("instruction"),w("maxAmountIn"),w("amountOut")]),hP=_([v("instruction"),v("nonce")]),Mo=_([v("instruction"),v("nonce"),w("startTime")]),mr=_([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),G(w(),3,"padding")]),vm=_([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),G(w(),64,"padding")]),_o=_([v("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Vo=_([v("instruction"),w("amountIn")]),TP={4:mr,5:vm},qa=_([w("fee")]);import{PublicKey as Dm}from"@solana/web3.js";var Ln=new Dm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),mn=5e4,Wm=_([w("x"),w("y"),w("price")]),qm=_([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),G(Wm,mn,"DataElement")]);function Um(r,e){return[0,mn-2]}function Gm(r){return[0,mn-2]}function Xm(r){return[0,mn-2]}function zm(r,e,t){let[n,i]=Um(e,t),s=n,o=i,a=0,u=e*r.multiplier/t;for(;s<=o;){if(a=Math.floor((o+s)/2),a===0||a>=mn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)o=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];s=a+1}}return[a,a,!1]}function Eo(r,e,t){let[n,i,s]=zm(r,e,t);if(!s)return 0;if(n===i){let o=r.DataElement[n].x;return e*r.multiplier/o}else{let o=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-o*c),m=o*l,d=(u-o)*(e*a-o*t)*c,p=m+d;return e*r.multiplier*l/p}}function ln(r,e,t){return e*r.multiplier/t}function Ua(r,e,t){return e*t/r.multiplier}function Ym(r,e){let[t,n]=Gm(e),i=t,s=n,o=0,a=e;for(;i<s;){if(o=Math.floor((s+i)/2),o<=0||o>mn-2)return[o,o,!1];let u=r.DataElement[o].x,c=r.DataElement[o-1].x,l=r.DataElement[o+1].x;if(a===u)return[o,o,!0];if(a===c)return[o-1,o-1,!0];if(a===l)return[o+1,o+1,!0];if(a<c)s=o-1;else{if(a>c&&a<u)return[o-1,o,!0];if(a>u&&a<l)return[o,o+1,!0];i=o+1}}return[o,o,!1]}function jm(r,e){let[t,n]=Xm(e),i=t,s=n,o=0,a=e;for(;i<=s;){if(o=Math.floor((s+i)/2),o<=0||o>=mn-2)return[o,o,!1];let u=r.DataElement[o].y,c=r.DataElement[o-1].y,l=r.DataElement[o+1].y;if(a===u)return[o,o,!0];if(a===c)return[o-1,o-1,!0];if(a===l)return[o+1,o+1,!0];if(a<l)i=o+1;else{if(a<c&&a>u)return[o-1,o,!0];if(a<u&&a>l)return[o,o+1,!0];s=o-1}}return[o,o,!1]}function Ga(r,e,t,n){let i=n?e+t:e-t,[s,o,a]=Ym(r,i);if(!a)return[0,0,!1,a];if(s===o)return[r.DataElement[o].price,r.DataElement[o].y,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[o].x,l=r.DataElement[s].price,m=r.DataElement[o].price,d=r.DataElement[s].y,p=r.DataElement[o].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Qm(r,e,t,n){let i=n?e-t:e+t,[s,o,a]=jm(r,i);if(!a)return[0,0,!1,a];if(s===o)return[r.DataElement[o].price,r.DataElement[o].x,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[o].x,l=r.DataElement[s].price,m=r.DataElement[o].price,d=r.DataElement[s].y,p=r.DataElement[o].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function Hm(r,e){let t=Ga(r,e,0,!1);return t[3]?t[0]:0}function Xa(r,e,t,n){let i=Eo(r,e,t),s=ln(r,e,i),o=ln(r,t,i),a=ln(r,n,i),u=!0,[c,l,m,d]=Ga(r,s,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=o-l;return Ua(r,p,i)}}function za(r,e,t,n){let i=Eo(r,e,t),s=ln(r,e,i),o=ln(r,t,i),a=ln(r,n,i),u=!1,[c,l,m,d]=Qm(r,o,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=s-l;return Ua(r,p,i)}}function Zm(r){let e=qm.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ya(r,e,t,n){let i=Hm(r,ln(r,e,Eo(r,e,t)))/r.multiplier;return n?i:1/i}var Rn=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=Zm(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Ha(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:s,fixedSide:o}=r,a=Buffer.alloc(_o.span);_o.encode({instruction:3,baseAmountIn:j(i),quoteAmountIn:j(s),fixedSide:o==="base"?mt:Ds},a);let u=[k({pubkey:On,isWritable:!1}),k({pubkey:new be(e.id)}),k({pubkey:new be(t.authority),isWritable:!1}),k({pubkey:new be(t.openOrders),isWritable:!1}),k({pubkey:new be(t.targetOrders)}),k({pubkey:new be(e.lpMint.address)}),k({pubkey:new be(t.vault.A)}),k({pubkey:new be(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Ln})),u.push(k({pubkey:new be(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new be(t.marketEventQueue),isWritable:!1})),new Dt({programId:new be(e.programId),keys:u,data:a})}function Fo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,s=fe(t),o=4;if(e.pooltype.includes("StablePool")&&(o=5),o===4||o===5){let a=Buffer.alloc(Vo.span);Vo.encode({instruction:4,amountIn:j(i)},a);let u=[k({pubkey:On,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.mintLp.address}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return o===5?u.push(k({pubkey:Ln})):(u.push(k({pubkey:s.id})),u.push(k({pubkey:s.id}))),u.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks})),new Dt({programId:s.programId,keys:u,data:a})}return new Dt({programId:s.programId,keys:[]})}function Za({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:s,pcMint:o,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:g,userLpVault:b,nonce:P,openTime:A,coinAmount:h,pcAmount:I,ammConfigId:T,feeDestinationId:S}){let x=_([v("instruction"),v("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:On,isSigner:!1,isWritable:!1},{pubkey:$m,isSigner:!1,isWritable:!1},{pubkey:Qa.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0}],O=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:I},O),{instruction:new Dt({keys:K,programId:r,data:O}),instructionType:E.AmmV4CreatePool}}function vP(r){let e=_([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return new Dt({programId:new be(r.programId),keys:n,data:t})}function ed({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let s=fe(r),o=Buffer.alloc(Oo.span);Oo.encode({instruction:9,amountIn:j(t),minAmountOut:j(n)},o);let a=[k({pubkey:On,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders})];return i===4&&a.push(k({pubkey:s.targetOrders})),a.push(k({pubkey:s.vault.A}),k({pubkey:s.vault.B})),i===5&&a.push(k({pubkey:Ln})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Dt({programId:s.programId,keys:a,data:o})}function td({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let s=fe(r),o=Buffer.alloc(No.span);No.encode({instruction:11,maxAmountIn:j(t),amountOut:j(n)},o);let a=[k({pubkey:On,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return i===5&&a.push(k({pubkey:Ln})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Dt({programId:s.programId,keys:a,data:o})}function fi(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:s,fixedSide:o}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(o==="in")return ed(D(C({},a),{amountIn:i,minAmountOut:s}),t);if(o==="out")return td(D(C({},a),{maxAmountIn:i,amountOut:s}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function DP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Mo.span);Mo.encode({instruction:0,nonce:5,startTime:j(t)},n);let i=fe(r),s=[k({pubkey:On,isWritable:!1}),k({pubkey:Qa.programId,isWritable:!1}),k({pubkey:Jm,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Dt({programId:i.programId,keys:s,data:n})}function $a({poolKeys:r}){let e=_([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return{instruction:new Dt({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as De,TOKEN_2022_PROGRAM_ID as tn,ASSOCIATED_TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as It,SystemProgram as Nn,Keypair as zo}from"@solana/web3.js";import bu from"bn.js";import dd from"bn.js";function Ja(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function qP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function UP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function yi(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function vo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Do(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function dr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function eu(r,e){return dr(r,e)?null:vo(r,e)}function tu(r,e){return dr(r,e)?null:Do(r,e)}var nd=Buffer.from("amm_config","utf8"),rd=Buffer.from("pool","utf8"),id=Buffer.from("pool_vault","utf8"),od=Buffer.from("pool_reward_vault","utf8"),nu=Buffer.from("position","utf8"),sd=Buffer.from("tick_array","utf8"),ad=Buffer.from("operation","utf8"),ud=Buffer.from("pool_tick_array_bitmap_extension","utf8");function YP(r,e){return oe([nd,Ja(e)],r)}function ru(r,e,t,n){return oe([rd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Wo(r,e,t){return oe([id,e.toBuffer(),t.toBuffer()],r)}function iu(r,e,t){return oe([od,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return oe([sd,e.toBuffer(),yi(t)],r)}function dn(r,e,t,n){return oe([nu,e.toBuffer(),yi(t),yi(n)],r)}function pt(r,e){return oe([nu,e.toBuffer()],r)}function bi(r){return oe([Buffer.from("metadata","utf8"),xn.toBuffer(),r.toBuffer()],xn)}function pr(r){return oe([ad],r)}function st(r,e){return oe([ud,e.toBuffer()],r)}import Rt from"bn.js";var me=new Rt(0),at=new Rt(1),Wt=new Rt(-1),ut=new Rt(1).shln(64),gi=new Rt(1).shln(128),qo=ut.sub(at),fr=64,ou=gi.subn(1),Xe=-443636,He=-Xe,Lt=new Rt("4295048016"),Ot=new Rt("79226673521066979257578248091"),su=16,au="59543866431248",uu="184467440737095516",cu="15793534762490258745",wi=new Rt(10).pow(new Rt(6)),cd=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(cd||{}),HP={[500]:10,[3e3]:60,[1e4]:200},ZP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},lu={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},$P=new Rt("18446744073700000000");var ld=15,ce=class{static async getTickArrays(e,t,n,i,s,o,a){let u=[],c=z.getTickArrayStartIndexByTick(i,s),l=z.getInitializedTickArrayInRange(o,a,s,c,Math.floor(ld/2));for(let p=0;p<l.length;p++){let{publicKey:y}=ge(t,n,l[p]);u.push(y)}let m=(await At(e,u)).map(p=>p!==null?yr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(C({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,s,o){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,s,o);for(;a==null||a.liquidityGross.lten(0);){if(c=z.getNextTickArrayStartIndex(c,s,o),this.checkIsValidStartIndex(c,s))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,o);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,s){let o=Math.floor(e/ce.tickCount(t)),a=n?z.searchLowBitFromStart(i,s,o-1,1,t):z.searchHightBitFromStart(i,s,o+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let s;if(i){let a=Ne-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a-1}}else{let a=0;for(;a<Ne;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a+1}}let{publicKey:o}=ge(e,t,n.startTickIndex);return{nextTick:s,tickArrayAddress:o,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,s,o){let a=z.getTickArrayStartIndexByTick(i,s),u=Math.floor((i-a)/s),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(o)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<Ne;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=ge(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(z.checkIsOutOfBoundary(e)){if(e>He)return!1;let n=z.getTickArrayStartIndexByTick(Xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ne*e}};import re from"bn.js";import{PublicKey as Tt}from"@solana/web3.js";import Se from"bn.js";var Uo=14,qt=class{static maxTickInTickarrayBitmap(e){return e*Ne*pn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let s=n*i;return e<0?{minValue:-s,maxValue:-s+n}:{minValue:s,maxValue:s+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let s=this.maxTickInTickarrayBitmap(n),o=i?t-ce.tickCount(n):t+ce.tickCount(n);if(o<-s||o>=s)return{isInit:!1,tickIndex:t};let a=n*Ne,u=o/a+512;o<0&&o%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=eu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-s}}else{let l=e.shrn(c),m=tu(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}},br=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=qt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=qt.maxTickInTickarrayBitmap(e),n=-t;if(He<=t)throw Error(`extensionTickBoundary check error: ${He}, ${t}`);if(n<=Xe)throw Error(`extensionTickBoundary check error: ${n}, ${Xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),s=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:z.mergeTickArrayBitmap(i).testn(s),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let s=ce.tickCount(t),o=n?e-s:e+s,{tickarrayBitmap:a}=this.getBitmap(o,t,i);return this.nextInitializedTickArrayInBitmap(a,o,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:s,maxValue:o}=qt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=z.mergeTickArrayBitmap(e).shln(pn-1-a),c=dr(512,u)?null:vo(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s}}else{let u=z.mergeTickArrayBitmap(e).shrn(a),c=dr(512,u)?null:Do(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%qt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=pn-i),i}};import Nt from"bn.js";var gr=class{static getfeeGrowthInside(e,t,n){let i=new Nt(0),s=new Nt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,s=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),s=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let o=new Nt(0),a=new Nt(0);e.tickCurrent<n.tick?(o=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(o=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64A,i),o),c=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64B,s),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:o}=this.getfeeGrowthInside(e,n,i),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(o,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:o}=this.getfeeGrowthInside(e,n,i),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(o,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let s=[],o=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<o.length;a++){let u=o[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static GetPositionRewards(e,t,n,i){let s=[],o=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<o.length;a++){let u=o[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static getRewardGrowthInside(e,t,n,i){let s=[];for(let o=0;o<i.length;o++){let a=new Nt(0);t.liquidityGross.eqn(0)?a=i[o].rewardGrowthGlobalX64:e<t.tick?a=i[o].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[o]):a=t.rewardGrowthsOutsideX64[o];let u=new Nt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[o]:u=i[o].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[o])),s.push(te.wrappingSubU128(te.wrappingSubU128(i[o].rewardGrowthGlobalX64,a),u))}return s}static getRewardGrowthInsideV2(e,t,n,i){let s=[];for(let o=0;o<i.length;o++){let a=new Nt(0);t.liquidityGross.eqn(0)?a=i[o].rewardGrowthGlobalX64:e<t.tick?a=i[o].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[o]):a=t.rewardGrowthsOutsideX64[o];let u=new Nt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[o]:u=i[o].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[o])),s.push(te.wrappingSubU128(te.wrappingSubU128(i[o].rewardGrowthGlobalX64,a),u))}return s}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:s,epochInfo:o}){var g,b,P,A;let a=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),u=ee.getSqrtPriceX64FromTick(t.tickLower),c=ee.getSqrtPriceX64FromTick(t.tickUpper),l=s?1+i:1-i,m=ue.getAmountsFromLiquidity(a,u,c,n,s),[d,p]=[Pe(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,o,!0),Pe(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,o,!0)],[y,f]=[Pe(new Nt(new V(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,o,!0),Pe(new Nt(new V(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,o,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Kt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as mu}from"@solana/spl-token";var Ke=class{static getOutputAmountAndRemainAccounts(e,t,n,i,s,o=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:g}=fn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,s,o);return u.push(...y),{allTrade:d,expectedAmountOut:p.mul(Wt),remainingAccounts:u,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,i,s){let o=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,o);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,o);if(f.isExist){let{publicKey:g}=ge(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=fn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,o,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Wt),c,s);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ke.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?br.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):z.checkTickArrayIsInitialized(z.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:s,nextStartIndex:o}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(s){let{publicKey:a}=ge(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ce.tickCount(e.tickSpacing)),i=t?z.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):z.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:s}=qt.nextInitializedTickArrayStartIndex(z.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:s};t=s;let{isInit:o,tickIndex:a}=br.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(o)return{isExist:!0,nextStartIndex:a};if(t=a,t<Xe||t>He)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:s}){var a,u,c;let o=[];for(let l=0;l<s.length;l++){let m=s[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=D(C({},m),{perSecond:te.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Tt(d)});if(p.tokenMint.equals(Tt.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){o.push(p);continue}let y=new Se(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=te.mulDivFloor(f,p.emissionsPerSecondX64,i),b=p.rewardGrowthGlobalX64.add(g),P=te.mulDivFloor(f,p.emissionsPerSecondX64,ut),A=p.rewardTotalEmissioned.add(P);o.push(D(C({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:A,lastUpdateTime:y}))}return o}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let s of t){let o=z.getTickArrayStartIndexByTick(s,e);if(o>=n||o<i)return!0}return!1}static tickRange(e){let t=qt.maxTickInTickarrayBitmap(e),n=-t;return t>He&&(t=ce.getArrayStartIndex(He,e)+ce.tickCount(e)),n<Xe&&(n=ce.getArrayStartIndex(Xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*pn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await tt(e,t.map(o=>({pubkey:o})),{batchRequest:n}),s={};for(let o of i)o.accountInfo!==null&&(s[o.pubkey.toString()]=du.decode(o.accountInfo.data));return s}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},s=[];for(let u of t){let c=z.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=z.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=ge(u.programId,u.id,m);s.push({pubkey:d}),i[d.toString()]=u.id}}let o=await tt(e,s,{batchRequest:n}),a={};for(let u of o){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=yr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(C({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:s=!0}){var a;let o=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(o.find(l=>l.equals(c.state.programId))||o.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 o)c.push(pt(p,d).publicKey);let l=await At(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Ai.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,b=z._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),P=z._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ue.getAmountsFromLiquidity(g.sqrtPriceX64,b.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(b.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>D(C({},x),{pendingReward:new Se(0)})),leverage:I,tokenFeeAmountA:new Se(0),tokenFeeAmountB:new Se(0)}];let T=await z.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await z.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(s){let d=Object.values(m),p=await At(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let b=d[f].toString();y[b]=yr.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let b of g){let P=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,h=y[m[P].toString()],I=y[m[A].toString()],T=h.ticks[z.getTickOffsetInArray(b.tickLower,f.tickSpacing)],S=I.ticks[z.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await gr.GetPositionFees(f,b,T,S),O=await gr.GetPositionRewards(f,b,T,S);b.tokenFeeAmountA=x.gte(new Se(0))?x:new Se(0),b.tokenFeeAmountB=K.gte(new Se(0))?K:new Se(0);for(let N=0;N<O.length;N++)b.rewardInfos[N].pendingReward=O[N].gte(new Se(0))?O[N]:new Se(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:s,slippage:o,priceLimit:a=new V(0),catchLiquidityInsufficient:u=!1}){var U;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new V(0))?c=l?Lt.add(new Se(1)):Ot.sub(new Se(1)):c=ee.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Pe(s,m,i,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:g,executionPrice:b,feeAmount:P}=Ke.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((U=p.fee)!=null?U:me),c,u),A=Pe(f,d,i,!1),h=ee.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),I=l?h:new V(1).div(h),T=f.mul(new Se(Math.floor((1-o)*1e10))).div(new Se(1e10)),S=Pe(T,d,i,!1),x=l?e.currentPrice:new V(1).div(e.currentPrice),K=new V(I).sub(x).abs(),O=x,N=new je(new V(K).mul(10**15).toFixed(0),new V(O).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:Kt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:N,fee:P,remainingAccounts:g,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:s,epochInfo:o,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ie(D(C({},c),{mint:c.address,isToken2022:c.programId===mu.toBase58()})),new Ie(D(C({},l),{mint:l.address,isToken2022:l.programId===mu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:g,expirationTime:b,currentPrice:P,executionPrice:A,priceImpact:h,fee:I,remainingAccounts:T,executionPriceX64:S}=Ke.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Tt(c.address),amountIn:n,slippage:s,epochInfo:o,catchLiquidityInsufficient:a}),x=D(C({},y),{amount:new Ae(m,y.amount),fee:y.fee===void 0?void 0:new Ae(m,y.fee)}),K=D(C({},f),{amount:new Ae(d,f.amount),fee:f.fee===void 0?void 0:new Ae(d,f.fee)}),O=D(C({},g),{amount:new Ae(d,g.amount),fee:g.fee===void 0?void 0:new Ae(d,g.fee)}),N=new Je({baseToken:m,denominator:new Se(10).pow(new Se(20+m.decimals)),quoteToken:d,numerator:P.mul(new V(10**(20+d.decimals))).toFixed(0)}),U=new Je({baseToken:m,denominator:new Se(10).pow(new Se(20+m.decimals)),quoteToken:d,numerator:A.mul(new V(10**(20+d.decimals))).toFixed(0)}),F=new Ae(m,I);return{allTrade:p,realAmountIn:x,amountOut:K,minAmountOut:O,expirationTime:b,currentPrice:N,executionPrice:U,priceImpact:h,fee:F,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,g;let s=e[t],o=z.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=z.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(o,s.priceMin),l=Math.min(a,s.priceMax)-u,m=a-o,d=s.priceMax-s.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:s.feeApr*p,rewardsApr:[(y=s.rewardApr[0])!=null?y:0*p,(f=s.rewardApr[1])!=null?f:0*p,(g=s.rewardApr[2])!=null?g:0*p],apr:s.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:s,positionTickLowerIndex:o,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[it(e.mintA.address).toString()],d=i[it(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),g=ee.getSqrtPriceX64FromTick(o),b=ee.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ue.getAmountsFromLiquidityWithSlippage(f,g,b,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:I}=ue.getAmountsFromLiquidityWithSlippage(f,g,b,s,!1,!1,0),T=new V(P.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(d.value)),S=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(I.toString()).div(new V(10).pow(y)).mul(d.value)),x=S.div(T.add(S)).div(S),O=new V(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),N=3600*24*365,U=e.rewardDefaultInfos.map(F=>{var W,lt;let H=F.mint.decimals,Z=i[F.mint.address];return u<((W=F.startTime)!=null?W:0)||u>((lt=F.endTime)!=null?lt:0)||!F.perSecond||!Z||H===void 0?0:new V(Z.value).mul(new V(F.perSecond).mul(N)).div(new V(10).pow(H)).mul(x).mul(100).toNumber()});return{feeApr:O,rewardsApr:U,apr:O+U.reduce((F,H)=>F+H,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:s,slippage:o,add:a,epochInfo:u,amountHasFee:c}){var b,P;let l=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=ee.getSqrtPriceX64FromTick(n),d=ee.getSqrtPriceX64FromTick(i),p=a?1-o:1+o,y=Pe(s,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new Se(new V(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?ue.getLiquidityFromTokenAmountA(m,d,f,!a):new Se(0);else if(l.lte(d)){let A=ue.getLiquidityFromTokenAmountA(l,d,f,!a),h=ue.getLiquidityFromTokenAmountB(m,l,f);g=t?A:h}else g=t?new Se(0):ue.getLiquidityFromTokenAmountB(m,d,f);return Ke.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:g,slippage:o,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:s,slippage:o,add:a}){var g,b,P,A;let u=ee.getSqrtPriceX64FromTick(n),c=ee.getSqrtPriceX64FromTick(i),l=a?1+o:1-o,m=ue.getAmountsFromLiquidity(ee.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),u,c,s,a),[d,p]=[Pe(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),Pe(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:s,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Kt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Tt(u.id));(await At(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=yn.decode(u.data))});let o=t.map(u=>st(new Tt(u.programId),new Tt(u.id)).publicKey),a=await Ke.fetchExBitmaps({connection:e,exBitmapAddress:o,batchRequest:!1});return t.reduce((u,c)=>D(C({},u),{[c.id]:D(C({},n[c.id]),{id:new Tt(c.id),version:6,programId:new Tt(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:D(C({},c.config),{id:new Tt(c.config.id),fundOwner:""}),currentPrice:new V(c.price),exBitmapInfo:a[st(new Tt(c.programId),new Tt(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function Ek({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:s,add:o,epochInfo:a,amountHasFee:u}){var A,h,I,T;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=ee.priceToSqrtPriceX64(new V(r.price),r.mintA.decimals,r.mintB.decimals),y=ee.getSqrtPriceX64FromTick(c),f=ee.getSqrtPriceX64FromTick(l),[g,b]=[Pe(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Pe(d,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(p,y,f,g.amount.sub((I=g.fee)!=null?I:me),b.amount.sub((T=b.fee)!=null?T:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:s,add:o,epochInfo:a,amountAddFee:!u})}var te=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),s=i.div(n);return i.mod(n).eq(me)||(s=s.add(at)),s}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(at)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(gi).sub(t).mod(gi)}};function _e(r,e){return Go(r.mul(e),64,256)}function md(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Go(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ee=class{static sqrtPriceX64ToPrice(e,t,n){return te.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return te.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let s=t.shln(fr);if(i){let o=s,a=s.add(n.mul(e));return a.gte(o)?te.mulDivCeil(o,e,a):te.mulDivRoundingUp(o,at,o.div(e).add(n))}else{let o=n.mul(e);if(!s.gt(o))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=s.sub(o);return te.mulDivCeil(s,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let s=n.shln(fr);if(i)return e.add(s.div(t));{let o=te.mulDivRoundingUp(s,at,t);if(!e.gt(o))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(o)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Xe||e>He)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=_e(n,new re("18444899583751176192"))),(t&4)!=0&&(n=_e(n,new re("18443055278223355904"))),(t&8)!=0&&(n=_e(n,new re("18439367220385607680"))),(t&16)!=0&&(n=_e(n,new re("18431993317065453568"))),(t&32)!=0&&(n=_e(n,new re("18417254355718170624"))),(t&64)!=0&&(n=_e(n,new re("18387811781193609216"))),(t&128)!=0&&(n=_e(n,new re("18329067761203558400"))),(t&256)!=0&&(n=_e(n,new re("18212142134806163456"))),(t&512)!=0&&(n=_e(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=_e(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=_e(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=_e(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=_e(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=_e(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=_e(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=_e(n,new re("696457651848324352"))),(t&131072)!=0&&(n=_e(n,new re("26294789957507116"))),(t&262144)!=0&&(n=_e(n,new re("37481735321082"))),e>0&&(n=ou.div(n)),n}static getTickFromPrice(e,t,n){return ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ot)||e.lt(Lt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=md(n,32,128),s=new re("8000000000000000","hex"),o=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;s.gt(new re(0))&&o<su;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(s.mul(y)),s=s.shrn(1),o+=1}let c=a.shrn(32),m=i.add(c).mul(new re(au)),d=Go(m.sub(new re(uu)),64,128).toNumber(),p=Go(m.add(new re(cu)),64,128).toNumber();return d==p?d:ee.getSqrtPriceX64FromTick(p).lte(e)?p:d}},bn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let o=ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,n,i))/t;return o<0?o=Math.floor(o):o=Math.ceil(o),o*t}static roundPriceWithTickspacing(e,t,n,i){let s=bn.getTickWithPriceAndTickspacing(e,t,n,i),o=ee.getSqrtPriceX64FromTick(s);return ee.sqrtPriceX64ToPrice(o,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let s=n.ushln(fr),o=t.sub(e);return i?te.mulDivRoundingUp(te.mulDivCeil(s,o,t),at,e):te.mulDivFloor(s,o,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?te.mulDivCeil(n,t.sub(e),ut):te.mulDivFloor(n,t.sub(e),ut)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let s=n.mul(e).mul(t),o=t.sub(e),a=s.div(o);return i?te.mulDivRoundingUp(a,at,qo):a.shrn(fr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),te.mulDivFloor(n,qo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let o=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,s);return o.lt(a)?o:a}else return ue.getLiquidityFromTokenAmountB(t,n,s)}static getAmountsFromLiquidity(e,t,n,i,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,s),amountB:new re(0)};if(e.lt(n)){let o=ue.getTokenAmountAFromLiquidity(e,n,i,s),a=ue.getTokenAmountBFromLiquidity(t,e,i,s);return{amountA:o,amountB:a}}else return{amountA:new re(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,s)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,s,o,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,o),l=s?1+a:1-a,m=new re(new V(u.toString()).mul(l).toFixed(0)),d=new re(new V(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:s,add:o,epochInfo:a,amountAddFee:u}){var P,A,h,I;let c=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=ee.getSqrtPriceX64FromTick(t),m=ee.getSqrtPriceX64FromTick(n),d=o?1+s:1-s,p=ue.getAmountsFromLiquidity(c,l,m,i,o),[y,f]=[Pe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Pe(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,b]=[Pe(new re(new V(p.amountA.toString()).mul(d).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Pe(new re(new V(p.amountB.toString()).mul(d).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:b,expirationTime:Kt(y.expirationTime,f.expirationTime)}}},fn=class{static swapCompute(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f=!1){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=o?Lt.add(at):Ot.sub(at)),o){if(y.lt(Lt))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(Ot))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let g=d.gt(me),b={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+ce.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},P=p,A=n[p],h=0,I=!o&&A.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){h>10;let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let S=z.nextInitTick(A,b.tick,l,o,I),x=S||null,K=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let N=Ke.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:s},P,o);if(!N.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}P=N.nextStartIndex;let{publicKey:U}=ge(e,t,P);K=U,A=n[P];try{x=z.firstInitializedTick(A,o)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==P&&K&&(b.accounts.push(K),p=P),T.tickNext<Xe?T.tickNext=Xe:T.tickNext>He&&(T.tickNext=He),T.sqrtPriceNextX64=ee.getSqrtPriceX64FromTick(T.tickNext);let O;if(o&&T.sqrtPriceNextX64.lt(y)||!o&&T.sqrtPriceNextX64.gt(y)?O=y:O=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=fn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),g?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=x.liquidityNet;o&&(N=N.mul(Wt)),b.liquidity=ue.addDelta(b.liquidity,N)}I=T.tickNext!=b.tick&&!o&&A.startTickIndex===T.tickNext,b.tick=o?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let N=ee.getTickFromSqrtPriceX64(b.sqrtPriceX64);I=N!=b.tick&&!o&&A.startTickIndex===N,b.tick=N}++h}try{let{nextStartIndex:T,isExist:S}=ce.nextInitializedTickArray(b.tick,l,o,i,s);S&&p!==T&&(b.accounts.push(ge(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:me,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,s){let o={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=i.gte(me);if(u){let l=te.mulDivFloor(i,wi.sub(new re(s.toString())),wi);o.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(o.amountIn)?o.sqrtPriceX64Next=t:o.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromInput(e,n,l,a)}else o.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Wt).gte(o.amountOut)?o.sqrtPriceX64Next=t:o.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromOutput(e,n,i.mul(Wt),a);let c=t.eq(o.sqrtPriceX64Next);return a?(c&&u||(o.amountIn=ue.getTokenAmountAFromLiquidity(o.sqrtPriceX64Next,e,n,!0)),c&&!u||(o.amountOut=ue.getTokenAmountBFromLiquidity(o.sqrtPriceX64Next,e,n,!1))):(o.amountIn=c&&u?o.amountIn:ue.getTokenAmountBFromLiquidity(e,o.sqrtPriceX64Next,n,!0),o.amountOut=c&&!u?o.amountOut:ue.getTokenAmountAFromLiquidity(e,o.sqrtPriceX64Next,n,!1)),!u&&o.amountOut.gt(i.mul(Wt))&&(o.amountOut=i.mul(Wt)),u&&!o.sqrtPriceX64Next.eq(t)?o.feeAmount=i.sub(o.amountIn):o.feeAmount=te.mulDivCeil(o.amountIn,new re(s),wi.sub(new re(s))),[o.sqrtPriceX64Next,o.amountIn,o.amountOut,o.feeAmount]}};var Ne=60,pn=512,z=class{static getTickArrayAddressByTick(e,t,n,i){let s=z.getTickArrayStartIndexByTick(n,i),{publicKey:o}=ge(e,t,s);return o}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=z.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Ne)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ne,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Ne,s=Math.floor(t/i)+512,o=Math.abs(s);return{isInitialized:e.testn(o),startIndex:(o-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ne:e+t*Ne}static mergeTickArrayBitmap(e){let t=new dd(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,s){let o=Math.floor(i/(n*Ne));return[...z.searchLowBitFromStart(e,t,o-1,s,n),...z.searchHightBitFromStart(e,t,o,s,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return z.searchHightBitFromStart(e,t,0,pn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,s){let o=[],a=z.getAllInitializedTickArrayStartIndex(n,i,s);for(let u of a){let{publicKey:c}=ge(e,t,u);o.push({tickArrayStartIndex:u,tickArrayAddress:c})}return o}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,s){let o=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>z.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(o[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(s);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,s){let o=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>z.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(o[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(s);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Xe||e>He}static nextInitTick(e,t,n,i,s){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(s||(a=a+1);a<Ne;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ne-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ne;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:i}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new V(1).div(t),s=bn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),o=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:i}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new V(1).div(t),s=bn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),o=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}};var pu=_([pe(8),v("bump"),Ct("index"),B(""),qe("protocolFeeRate"),qe("tradeFeeRate"),Ct("tickSpacing"),G(w(),8,"")]),pd=_([qe("blockTimestamp"),Q("sqrtPriceX64"),Q("cumulativeTimePriceX64"),G(Q(),1,"")]),Xo=_([pe(8),ve("initialized"),B("poolId"),G(pd,1e3,"observations"),G(Q(),5,"")]),fd=_([v("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Q("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),Q("rewardGrowthGlobalX64")]),yn=_([pe(8),v("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),v("mintDecimalsA"),v("mintDecimalsB"),Ct("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Fe("tickCurrent"),Ct("observationIndex"),Ct("observationUpdateDuration"),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),v("status"),G(v(),7,""),G(fd,3,"rewardInfos"),G(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),G(w(),15*4-3,"padding")]),yd=_([Q("growthInsideLastX64"),w("rewardAmountOwed")]),Ai=_([pe(8),v("bump"),B("nftMint"),B("poolId"),Fe("tickLower"),Fe("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(yd,3,"rewardInfos"),G(w(),8,"")]),ah=_([pe(8),v("bump"),B("poolId"),Fe("tickLowerIndex"),Fe("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(Q(),3,"rewardGrowthInside"),G(w(),8,"")]),bd=_([Fe("tick"),ya("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),G(Q(),3,"rewardGrowthsOutsideX64"),G(qe(),13,"")]),yr=_([pe(8),B("poolId"),Fe("startTickIndex"),G(bd,Ne,"ticks"),v("initializedTickCount"),G(v(),115,"")]),fu=_([pe(329),G(B(),100,"whitelistMints")]),du=_([pe(8),B("poolId"),G(G(w(),8),Uo,"positiveTickArrayBitmap"),G(G(w(),8),Uo,"negativeTickArrayBitmap")]);var gu=ae("Raydium_Clmm"),xt={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]},Be=class{static createPoolInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([Q("sqrtPriceX64"),w("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},b);let P=Buffer.from([...xt.createPool,...b]);return new It({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:s,mintB:o,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ue({fromPublicKey:i,programId:n}),[d,p]=[new q(s.address),new q(o.address)],y=[Nn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Xo.span),space:Xo.span,programId:n})],{publicKey:f}=ru(n,a,d,p),{publicKey:g}=Wo(n,f,d),{publicKey:b}=Wo(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,g,new q(s.programId||De),p,b,new q(o.programId||De),st(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let N=_([Fe("tickLowerIndex"),Fe("tickUpperIndex"),Fe("tickArrayLowerStartIndex"),Fe("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),ve("withMetadata"),v("optionBaseFlag"),ve("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,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:$e,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:yu,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(N.span);N.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},H);let Z=Buffer.from([...xt.openPosition,...H]);return new It({keys:F,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,liquidity:o,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=zo.generate();m.push(x),y=x.publicKey}let f=z.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=z.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=ge(d,p,f),{publicKey:P}=ge(d,p,g),{publicKey:A}=ye(n.wallet,y,De),{publicKey:h}=bi(y),{publicKey:I}=pt(d,y),{publicKey:T}=dn(d,p,i,s),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,f,g,o,a,u,c);return{signers:m,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,base:o,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=zo.generate();m.push(x),y=x.publicKey}let f=z.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=z.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=ge(d,p,f),{publicKey:P}=ge(d,p,g),{publicKey:A}=ye(n.wallet,y,De),{publicKey:h}=bi(y),{publicKey:I}=pt(d,y),{publicKey:T}=dn(d,p,i,s),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,f,g,c,o,a,u,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?st(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let N=_([Fe("tickLowerIndex"),Fe("tickUpperIndex"),Fe("tickArrayLowerStartIndex"),Fe("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),ve("withMetadata"),v("optionBaseFlag"),ve("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,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:$e,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:yu,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(N.span);N.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:new bu(0),amountMaxA:S==="MintA"?x:K,amountMaxB:S==="MintA"?K:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},H);let Z=Buffer.from([...xt.openPosition,...H]);return new It({keys:F,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,liquidity:o,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new q((await l(1))[0]);else{let x=zo.generate();d.push(x),m=x.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=z.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=z.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=ge(p,y,f),{publicKey:P}=ge(p,y,g),{publicKey:A}=ye(n.wallet,m,De),{publicKey:h}=bi(m),{publicKey:I}=pt(p,m),{publicKey:T}=dn(p,y,i,s),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(t.mintA.address),new q(t.mintB.address),i,s,f,g,o,a,u,c,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?st(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,s){let o=_([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1}],u=Buffer.alloc(o.span);o.encode({},u);let c=Buffer.from([...xt.closePosition,...u]);return new It({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let s=new q(e.programId),{publicKey:o}=ye(n.wallet,i.nftMint,De),{publicKey:a}=pt(s,i.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,i.nftMint,o,a)),{address:{positionNftAccount:o,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P){let A=_([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),ve("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...xt.increaseLiquidity,...T]);return new It({keys:I,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:s,amountMaxA:o,amountMaxB:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=z.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=z.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(u,c,l),{publicKey:p}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,De),{publicKey:f}=pt(u,n.nftMint),{publicKey:g}=dn(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,o,a,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[b],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:s,baseAmount:o,otherAmountMax:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=z.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=z.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(u,c,l),{publicKey:p}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,De),{publicKey:f}=pt(u,n.nftMint),{publicKey:g}=dn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,o,a,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P){let A=_([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),ve("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:new bu(0),amountMaxA:f==="MintA"?g:b,amountMaxB:f==="MintA"?b:g,baseFlag:f==="MintA",optionBaseFlag:1},T);let S=Buffer.from([...xt.increaseLiquidity,...T]);return new It({keys:I,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=_([Q("liquidity"),w("amountMinA"),w("amountMinB")]),I=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,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:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I],S=Buffer.alloc(h.span);h.encode({liquidity:g,amountMinA:b,amountMinB:P},S);let x=Buffer.from([...xt.decreaseLiquidity,...S]);return new It({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:s,amountMinA:o,amountMinB:a,programId:u}){let[c,l]=[new q(e.programId),new q(e.id)],m=z.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=z.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(c,l,m),{publicKey:y}=ge(c,l,d),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:g}=pt(c,n.nftMint),{publicKey:b}=dn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new q(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new q(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,g,l,b,p,y,i.tokenAccountA,i.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),P,s,o,a,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?st(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:b},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b){let P=_([w("amount"),w("otherAmountThreshold"),Q("sqrtPriceLimitX64"),ve("isBaseInput")]),A=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],I=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},I);let T=Buffer.from([...xt.swap,...I]);return new It({keys:h,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:s,amountIn:o,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new q(e.programId),new q(e.id)],[d,p]=[new q(t.vault.A),new q(t.vault.B)],[y,f]=[new q(e.mintA.address),new q(e.mintB.address)],g=e.mintA.address===s.toString(),b=[this.swapInstruction(l,i.wallet,m,new q(e.config.id),g?i.tokenAccountA:i.tokenAccountB,g?i.tokenAccountB:i.tokenAccountA,g?d:p,g?p:d,g?y:f,g?f:y,c,n,o,a,u,!0,st(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,s,o,a,u,c,l,m,d){let p=_([w("openTime"),w("endTime"),Q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:j(l),endTime:j(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...xt.initReward,...f]);return new It({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[s,o]=[new q(e.programId),new q(e.id)],a=iu(s,o,i.mint).publicKey,u=pr(s).publicKey,c=[this.initRewardInstruction(s,n.wallet,o,u,new q(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,s,o,a,u,c,l,m,d){let p=_([v("rewardIndex"),Q("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:j(l),endTime:j(m)},f);let g=Buffer.from([...xt.setRewardEmissions,...f]);return new It({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[s,o]=[new q(e.programId),new q(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new q(t.rewardInfos[d].vault),c=new q(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&gu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=pr(s).publicKey,m=[this.setRewardInstruction(s,n.wallet,o,l,new q(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,s,o,a){let u=_([v("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...xt.collectReward,...l]);return new It({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[s,o]=[new q(e.programId),new q(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new q(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&gu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(s,n.wallet,o,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:s,amountInMax:o,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new q(e.programId),new q(e.id)],[m,d]=[new q(t.vault.A),new q(t.vault.B)],[p,y]=[new q(e.mintA.address),new q(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new q(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,s,o,a,!1)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as hu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pd}from"@solana/spl-token";import{PublicKey as wd}from"@solana/web3.js";import wu from"bn.js";var Au=new wu(25),Pu=new wu(1e4),gd={4:3,5:3};var Ad=ae("Raydium_liquidity_serum");function ku({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let s=t.concat(Buffer.from([n]),Buffer.alloc(7));i=wd.createProgramAddressSync(s,r)}catch(s){if(s instanceof TypeError)throw s;n++;continue}return{publicKey:i,nonce:n}}throw Ad.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import wr from"bn.js";function Qo({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function gn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function kd({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ho({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:s,quoteDecimals:o,programId:a,marketProgramId:u}){let c=gn({name:"amm_associated_seed",programId:a,marketId:t}),l=gn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ho({programId:a}),p=gn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=gn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=gn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=kd({programId:a,marketId:t}),b=gn({name:"target_associated_seed",programId:a,marketId:t}),P=gn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=ku({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:s,quoteDecimals:o,lpDecimals:s,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:g,targetOrders:b,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:hu.default,configId:Qo({programId:a})}}var Yo;async function vh({connection:r,poolKeysList:e,config:t}){Yo||(Yo=new Rn({connection:r}),await Yo.initStableModelLayout());let n=e.map(o=>$a({poolKeys:o}));return(await js(r,n.map(o=>o.instruction),"GetPoolData")).map(o=>{let a=Qs(o,"GetPoolData"),u=new wr(Et(a,"status")),c=Number(Et(a,"coin_decimals")),l=Number(Et(a,"pc_decimals")),m=Number(Et(a,"lp_decimals")),d=new wr(Et(a,"pool_coin_amount")),p=new wr(Et(a,"pool_pc_amount")),y=new wr(Et(a,"pool_lp_supply")),f="0";try{f=Et(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new wr(f)}})}var jo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Iu=r=>{let e={},t=Pd.toBase58();return Object.keys(r).map(n=>{let i=r[n],[s,o]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:cn({address:s,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:cn({address:o,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new V(i.baseReserve.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(i.quoteReserve.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new V(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:jo,week:jo,month:jo,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:hu.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:cn({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())})}}),e};import rt from"bn.js";var Ar=class extends xe{constructor(t){super(t);this.stableLayout=new Rn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:s}){let o=new rt(new V(n).mul(10**t[s?"mintA":"mintB"].decimals).toFixed(0)),a=pi(t[s?"mintB":"mintA"]),[u,c]=[new rt(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new rt(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new rt(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",s?t.mintA.symbol:t.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",s?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=s?"base":"quote";this.logDebug("input side:",m);let d=mt;o.isZero()||(d=m==="base"?Gr(o.mul(c),u):Gr(o.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Gr(o.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new je(new rt(1)).add(i).mul(d).quotient,g=new Ae(a,d),b=new Ae(a,f);return this.logDebug("anotherAmount:",g.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:g,maxAnotherAmount:b,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:s,fixedSide:o,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",s),(i.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:s.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,s.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let b=await l.getCreatedTokenAccount({mint:new Ce(n.lpMint.address)}),P=[p,y],A=[f,g],h=[i.raw,s.raw],I=i.token.mint.toBase58()===n.mintA.address?"base":"quote",T="base";["quote","base"].includes(I)||this.logAndCreateError("invalid fixedSide","fixedSide",o),I==="quote"?(P.reverse(),A.reverse(),h.reverse(),T=o==="a"?"quote":"base"):I==="base"&&(T=o==="a"?"base":"quote");let[S,x]=P,[K,O]=A,[N,U]=h,F=await this.getAmmPoolKeys(n.id),H=this.createTxBuilder(),on=await l.handleTokenAccount({side:"in",amount:N,mint:S.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Z}=on,W=he(on,["tokenAccount"]);H.addInstruction(W);let Mt=await l.handleTokenAccount({side:"in",amount:U,mint:x.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:lt}=Mt,Pn=he(Mt,["tokenAccount"]);H.addInstruction(Pn);let kn=await l.handleTokenAccount({side:"out",amount:0,mint:new Ce(n.lpMint.address),tokenAccount:b,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rn}=kn,Gt=he(kn,["tokenAccount"]);return H.addInstruction(Gt),H.addInstruction({instructions:[Ha({poolInfo:n,poolKeys:F,userKeys:{baseTokenAccount:Z,quoteTokenAccount:lt,lpTokenAccount:rn,owner:this.scope.ownerPubKey},baseAmountIn:N,quoteAmountIn:U,fixedSide:T})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),H.addCustomComputeBudget(c),u===0&&await H.buildV0(),H.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:s,txVersion:o,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Ce(n.mintA.address),new Ce(n.mintB.address),new Ce(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),g=this.createTxBuilder(),{bypassAssociatedCheck:b,checkCreateATAOwner:P}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:A}=S,h=he(S,["tokenAccount"]);g.addInstruction(h);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:I}=x,T=he(x,["tokenAccount"]);return g.addInstruction(T),g.addInstruction({instructions:[Fo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(a),o===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:s,farmInfo:o,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Pi,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder();g.addCustomComputeBudget(c);let b={};for(let W of this.scope.account.tokenAccountRawInfos)(b[W.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,W.accountInfo.mint,Pi).publicKey.equals(W.pubkey))&&(b[W.accountInfo.mint.toString()]=W.pubkey);let P=b[t.lpMint.address];if(P===void 0)throw Error("find lp account error in trade accounts");let A=i.add(a!=null?a:new rt(0)),h=t.mintA.address===Ie.WSOL.mint.toString(),I=t.mintB.address===Ie.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pi,mint:new Ce(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pi,mint:new Ce(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(K||{}),x===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=x,o!==void 0&&!(a!=null&&a.isZero())){let W=dt[o.programId],lt=Ge({programId:new Ce(o.programId),poolId:new Ce(o.id),owner:this.scope.ownerPubKey,version:W}),Pn,rn=await this.scope.connection.getAccountInfo(lt);if(rn&&(Pn=Cn(W).decode(rn.data)),W!==6&&!Pn){let{instruction:Xt,instructionType:Li}=di({id:new Ce(o.id),programId:new Ce(o.programId),version:W,ledger:lt,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[Xt],instructionTypes:[Li]})}let Gt=[];for(let Xt of o.rewardInfos){let Li=Xt.mint.address===Ie.WSOL.mint.toString();if(b[Xt.mint.address])Gt.push(b[Xt.mint.address]);else{let{account:ps,instructionParams:fs}=await this.scope.account.getOrCreateTokenAccount({mint:new Ce(Xt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Li,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});ps||this.logAndCreateError("farm reward account not found:",Xt.mint.address),fs&&g.addInstruction(fs),Gt.push(ps)}}let on=(await this.scope.api.fetchFarmKeysById({ids:o.id}))[0],Mt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:o,farmKeys:on,lpAccount:P,rewardAccounts:Gt},kn=dt[o.programId],tc=kn===6?ar(Mt):kn===5?ur(Mt):cr(Mt),nc={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};g.addInstruction({instructions:[tc],instructionTypes:[nc[kn]]})}let O=await this.getAmmPoolKeys(t.id),N=Fo({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:P,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:A});g.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[U,F]=t.mintA.address===n.mintA.address?[T,x]:[x,T],H=await this.scope.clmm.getClmmPoolKeys(t.id),Z=await Be.openPositionFromBaseInstructions(D(C({poolInfo:n,poolKeys:H,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:F},withMetadata:"create"},s),{base:u,getEphemeralSigners:y}));return g.addInstruction({instructions:[...Z.instructions],signers:Z.signers,instructionTypes:[...Z.instructionTypes],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),f===0?g.sizeCheckBuildV0():g.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:s,baseAmount:o,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var U;let g=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),b=c.useSOLBalance&&i.mint.equals(xu),P=c.useSOLBalance&&s.mint.equals(xu),A=this.createTxBuilder(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:b?{payer:g,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:m});A.addInstruction(I||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:g,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),h===void 0||T===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:s.mint,baseDecimals:i.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:O,instructionType:N}=Za(D(C({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:T,userLpVault:ye(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:o,pcAmount:a}));return A.addInstruction({instructions:[O],instructionTypes:[N]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=Qo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return qa.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:s,slippage:o}){let[a,u]=[i.toString(),s.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.programId===$r.toBase58(),g;if(f)g=new V(y.toString()).div(p.toString());else{let O=Ya(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?g=new V(1e6).div(O*1e6):g=new V(O*1e6).div(1e6)}let b=n,P=new rt(0),A=new rt(0);if(!b.isZero())if(f){A=$n(b.mul(Au),Pu);let O=b.sub(A),N=p.add(O);P=y.mul(O).div(N)}else{A=b.mul(new rt(2)).div(new rt(1e4));let O=b.sub(A);d==="quote"?P=new rt(Xa(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber())):P=new rt(za(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber()))}let h=new rt(new V(P.toString()).mul(1-o).toFixed(0)),I=P,T=h,S=new V(P.toString()).div(new V(b.sub(A).toString()).toFixed(0));!b.isZero()&&!P.isZero()&&(S=new V(P.toString()).div(b.sub(A).toString()));let x=g.sub(S).div(g).mul(100);return{amountOut:I,minAmountOut:T,currentPrice:g,executionPrice:S,priceImpact:x,fee:A}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:s,fixedSide:o,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new Ce(l.address),programId:new Ce(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Ce(m.address),programId:new Ce(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Ce(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=he(h,["tokenAccount"]);c.addInstruction(f);let I=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Ce(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=I,b=he(I,["tokenAccount"]);c.addInstruction(b);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[fi({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:o})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await tt(this.scope.connection,t.map(l=>({pubkey:new Ce(l)})),n),s={},o=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=mr.decode(m.accountInfo.data);s[String(t[l])]=D(C({},d),{programId:m.accountInfo.owner}),o.push(d.baseVault,d.quoteVault)}let a={},u=await tt(this.scope.connection,o.map(l=>({pubkey:new Ce(l)})),n);for(let l=0;l<o.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+o[l]);a[String(o[l])]=new rt(hd.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(s)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=D(C({},m),{baseReserve:d,quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(m.quoteDecimal.toString())).div(new V(d.toString()).div(new V(10).pow(m.baseDecimal.toString())))})}return c}};import{PublicKey as se}from"@solana/web3.js";import ft from"bn.js";import{TOKEN_PROGRAM_ID as Bu}from"@solana/spl-token";var Pr=class extends xe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||se.default,mint1:i,mint2:s,ammConfig:o,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new ft(new se(i.address).toBuffer()).gt(new ft(new se(s.address).toBuffer()))?[s,i,new V(1).div(a)]:[i,s,a],g=ee.priceToSqrtPriceX64(f,p.decimals,y.decimals),b=await Be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:o.id,initialPriceX64:g,startTime:u,forerunCreate:l});return d.addInstruction(b),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:D(C({},b.address),{programId:t.toString(),id:b.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:b.address.mintAVault.toString(),B:b.address.mintBVault.toString()},rewardInfos:[],config:{id:o.id.toString(),index:o.index,protocolFeeRate:o.protocolFeeRate,tradeFeeRate:o.tradeFeeRate,tickSpacing:o.tickSpacing,fundFeeRate:o.fundFeeRate,description:o.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:b.address.poolId.toString(),mintA:p,mintB:y,feeRate:o.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:o.id.toString(),index:o.index,protocolFeeRate:o.protocolFeeRate,tradeFeeRate:o.tradeFeeRate,tickSpacing:o.tickSpacing,fundFeeRate:o.fundFeeRate,description:o.description,defaultRange:0,defaultRangePoint:[]}},lu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,base:o,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),g=null,b=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),A=n.useSOLBalance&&e.mintB.address===J.toString(),[h,I]=o==="MintA"?[a,u]:[u,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(g=T),f.addInstruction(S||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||I.isZero()?{payer:this.scope.ownerPubKey,amount:I}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(K||{}),(!g||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let O=t||await this.getClmmPoolKeys(e.id),N=await Be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:O,ownerInfo:D(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b}),tickLower:i,tickUpper:s,base:o,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(N),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:N.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:s,tickLower:o,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,g=null,b=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:b?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:I,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(g=I),y.addInstruction(T||{}),(f===void 0||g===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},tickLower:o,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:s,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:s,liquidity:o,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:o,amountMaxA:i,amountMaxB:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:s,otherAmountMax:o,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(i==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:s,otherAmountMax:o});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:s,amountMinB:o,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===J.toString(),y=i.useSOLBalance&&t.mintB.address===J.toString(),f,g,{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=b,P&&d.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});g=A,h&&d.addInstruction(h);let I=[];for(let K of t.rewardDefaultInfos){let O=i.useSOLBalance&&K.mint.address===J.toString(),N;if(K.mint.address===t.mintA.address)N=f;else if(K.mint.address===t.mintB.address)N=g;else{let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(K.mint.programId),mint:new se(K.mint.address),notUseTokenAccount:O,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});N=U,F&&d.addInstruction(F)}I.push(N)}!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=await this.getClmmPoolKeys(t.id),S=await Be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:I},liquidity:a,amountMinA:s,amountMinB:o});d.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let x=C({},S.address);if(i.closePosition){let K=await Be.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=C(C({},x),K.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),s=await this.getClmmPoolKeys(e.id),o=Be.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(o).versionBuild({txVersion:n,extInfo:{address:o.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(n.mint.address),mint:new se(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:s});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Be.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new se(n.mint.programId),mint:new se(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(new V(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:s});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=Be.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new se(l.mint.programId),mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});c=C(C({},c),g.address),u.addInstruction(g)}return u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(J),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(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:i,checkCreateATAOwner:s});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Be.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(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:i,checkCreateATAOwner:s});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Be.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});u.addInstruction(f),c=C(C({},c),f.address)}return u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1}){let o=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());o||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(o.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:s});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Be.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1}){let o=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:s});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&o.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Be.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});o.addInstruction(y),a=C(C({},a),y.address)}return o.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:s,observationId:o,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===J.toBase58(),y=a.useSOLBalance&&e.mintB.address===J.toBase58(),f;!s||s.equals(new V(0))?f=t.toString()===e.mintA.address?Lt.add(new ft(1)):Ot.sub(new ft(1)):f=ee.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let g;if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});g=A,h&&d.addInstruction(h)}let b;if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});b=A,h&&d.addInstruction(h)}(!g||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return d.addInstruction(Be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b},inputMint:new se(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,programId:o,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,o).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),y=n.useSOLBalance&&d.mintB.address===J.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new se(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:s});f=A,h&&l.addInstruction(h)}let g=c[d.mintB.address];if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new se(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:s});g=A,h&&l.addInstruction(h)}c[d.mintA.address]=f,c[d.mintB.address]=g;let b=[];for(let A of d.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===J.toString(),I=c[A.mint.address];if(!I){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(A.mint.programId),mint:new se(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});I=T,S&&l.addInstruction(S)}c[A.mint.address]=I,b.push(I)}let P=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let h=Be.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:b},liquidity:new ft(0),amountMinA:new ft(0),amountMinB:new ft(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(pr(e).publicKey);return t?fu.decode(t.data).whitelistMints.filter(i=>!i.equals(se.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(o=>o.accountInfo.amount.eq(new ft(1))).map(o=>pt(new se(e),o.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),s=[];return i.forEach(o=>{if(!o)return;let a=Ai.decode(o.data);s.push(a)}),s}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await tt(this.scope.connection,e.map(s=>({pubkey:new se(s)})),t),i={};for(let s=0;s<e.length;s++){let o=n[s];if(o===null||!o.accountInfo)throw Error("fetch pool info error: "+String(e[s]));let a=yn.decode(o.accountInfo.data),u=ee.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();i[String(e[s])]=D(C({},a),{currentPrice:u,programId:o.accountInfo.owner})}return i}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(u=>e[u].ammConfig.toBase58())),i=await tt(this.scope.connection,Array.from(n).map(u=>({pubkey:new se(u)}))),s={};i.forEach(u=>{!u.accountInfo||(s[u.pubkey.toBase58()]=pu.decode(u.accountInfo.data))});let o=await Ke.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(u=>{var m,d,p,y;let[c,l]=[e[u].mintA.toBase58(),e[u].mintB.toBase58()];return{id:u,programId:e[u].programId.toBase58(),mintA:cn({address:c,decimals:e[u].mintDecimalsA,programId:t[c].programId.toBase58()||Bu.toBase58(),extensions:{feeConfig:(m=t[c])!=null&&m.feeConfig?Lo((d=t[c])==null?void 0:d.feeConfig):void 0}}),mintB:cn({address:l,decimals:e[u].mintDecimalsB,programId:t[l].programId.toBase58()||Bu.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Lo((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[u].currentPrice,config:D(C({},s[e[u].ammConfig.toBase58()]),{id:e[u].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Ke.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(o)});return{computeClmmPoolInfo:o,computePoolTickData:a}}};import{PublicKey as X}from"@solana/web3.js";import{NATIVE_MINT as hi,TOKEN_PROGRAM_ID as nn,AccountLayout as Vd}from"@solana/spl-token";var Td=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Id=Buffer.from("amm_config","utf8"),xd=Buffer.from("pool","utf8"),Bd=Buffer.from("pool_lp_mint","utf8"),Sd=Buffer.from("pool_vault","utf8"),Kd=Buffer.from("observation","utf8");function Cd(r){return oe([Td],r)}function Rd(r,e){return oe([Id,Nd(e)],r)}function Ld(r,e,t,n){return oe([xd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Od(r,e){return oe([Bd,e.toBuffer()],r)}function Su(r,e,t){return oe([Sd,e.toBuffer(),t.toBuffer()],r)}function ki(r,e){return oe([Kd,e.toBuffer()],r)}function Nd(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Ku({programId:r,mintA:e,mintB:t}){let n=Rd(r,0).publicKey,i=Cd(r).publicKey,s=Ld(r,n,e,t).publicKey,o=Od(r,s).publicKey,a=Su(r,s,e).publicKey,u=Su(r,s,t).publicKey,c=ki(r,s).publicKey;return{poolId:s,configId:n,authority:i,lpMint:o,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as kr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo,TOKEN_2022_PROGRAM_ID as Cu,ASSOCIATED_TOKEN_PROGRAM_ID as Md}from"@solana/spl-token";var _d=ae("Raydium_cpmm"),hr={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 Ru(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=_([w("amountMaxA"),w("amountMaxB"),w("openTime")]),I=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Md,isSigner:!1,isWritable:!1},{pubkey:Dr,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],T=Buffer.alloc(h.span);return h.encode({amountMaxA:b,amountMaxB:P,openTime:A},T),new kr({keys:I,programId:r,data:Buffer.from([...hr.initialize,...T])})}function Lu(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Cu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],b=Buffer.alloc(f.span);return _d.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},b),new kr({keys:g,programId:r,data:Buffer.from([...hr.deposit,...b])})}function Ou(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMinA"),w("amountMinB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Cu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Vs,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},b),new kr({keys:g,programId:r,data:Buffer.from([...hr.withdraw,...b])})}function Nu(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y,f){let g=_([w("amountIn"),w("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountIn:y,amounOutMin:f},P),new kr({keys:b,programId:r,data:Buffer.from([...hr.swapBaseInput,...P])})}function Mu(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y,f){let g=_([w("amountInMax"),w("amountOut")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountInMax:y,amountOut:f},P),new kr({keys:b,programId:r,data:Buffer.from([...hr.swapBaseOutput,...P])})}import ze from"bn.js";var _u=_([pe(8),v("bump"),ve("disableCreatePool"),Ct("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),G(w(),16)]),Vu=_([pe(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),v("bump"),v("status"),v("lpDecimals"),v("mintDecimalA"),v("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),G(w(),32)]);var Tr=class extends xe{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await this.scope.connection.getMultipleAccountsInfo(e.map(m=>new X(m))),i={},s=new Set,o=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=Vu.decode(d.data);i[String(e[m])]=p,s.add(String(p.configId)),o.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...s],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new X(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=_u.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(o.map(m=>new X(m)));for(let m=0;m<o.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+o[m]);u[String(o[m])]=new ze(Vd.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(i)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=D(C({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(d.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(d.mintDecimalA)))})}return l}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:s=!1,checkCreateATAOwner:o=!1,txVersion:a,computeBudgetConfig:u}=m,c=he(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var U,F,H;let d=i.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new ze(new X(c.mintA.address).toBuffer()).lte(new ze(new X(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[g,b]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===hi.toBase58(),A=i.useSOLBalance&&f.address===hi.toBase58(),[h,I]=[new X(y.address),new X(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:s,checkCreateATAOwner:o});T.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:new X(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:b}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:o});if(T.addInstruction(O||{}),S===void 0||K===void 0)throw Error("you don't has some token account");let N=Ku({programId:e,mintA:h,mintB:I});return T.addInstruction({instructions:[Ru(e,this.scope.ownerPubKey,N.configId,N.authority,N.poolId,h,I,N.lpMint,S,K,ye(this.scope.ownerPubKey,N.lpMint).publicKey,N.vaultA,N.vaultB,t,new X((F=y.programId)!=null?F:nn),new X((H=f.programId)!=null?H:nn),N.observationId,g,b,n)],instructionTypes:[E.CpmmCreatePool]}),T.addCustomComputeBudget(u),T.versionBuild({txVersion:a,extInfo:{address:D(C({},N),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:s,computeResult:o,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=o?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:g}=o||this.computePairAmount({poolInfo:D(C({},t),{lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new je(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),b=g.amount,P=t.mintA.address===hi.toString(),A=t.mintB.address===hi.toString(),h=this.createTxBuilder(),[I,T]=[new X(t.mintA.address),new X(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:b).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:b}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?b:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?b:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(O||{}),!S&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let N=await l.getCreatedTokenAccount({mint:new X(t.lpMint.address)}),W=await l.handleTokenAccount({side:"out",amount:0,mint:new X(t.lpMint.address),tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:U}=W,F=he(W,["tokenAccount"]);h.addInstruction(F);let H=await this.getCpmmPoolKeys(t.id),Z=new je(new ze(1)).sub(s);return h.addInstruction({instructions:[Lu(new X(t.programId),this.scope.ownerPubKey,new X(H.authority),new X(t.id),U,S,K,new X(H.vault.A),new X(H.vault.B),I,T,new X(t.lpMint.address),o?o==null?void 0:o.liquidity:Z.mul(y).quotient,i?f.amount:b,i?b:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var U,F;let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:s,txVersion:o}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new je(new ze(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[Pe(c,t.mintA.extensions.feeConfig,m,!0),Pe(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[g,b]=[new X(t.mintA.address),new X(t.mintB.address)],P=g.equals(J),A=b.equals(J),h,I,{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=T,S&&f.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});I=x,K&&f.addInstruction(K),(!h||!I)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let O=await y.getCreatedTokenAccount({mint:new X(t.lpMint.address)});O||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let N=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Ou(new X(t.programId),this.scope.ownerPubKey,new X(N.authority),new X(t.id),O,h,I,new X(N.vault.A),new X(N.vault.B),g,b,new X(t.lpMint.address),n,c.sub((U=d.fee)!=null?U:new ze(0)),l.sub((F=p.fee)!=null?F:new ze(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:N.lookupTableAccount?[N.lookupTableAccount]:[]}),f.addCustomComputeBudget(s),f.versionBuild({txVersion:o})}async swap(e){var I,T,K,O,N,U;let{poolInfo:t,baseIn:n,swapResult:i,slippage:s=0,config:o,computeBudgetConfig:a,txVersion:u}=e,{bypassAssociatedCheck:c,checkCreateATAOwner:l}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),m=this.createTxBuilder(),[d,p]=[new X(t.mintA.address),new X(t.mintB.address)],y=await this.scope.account.getCreatedTokenAccount({programId:new X((I=t.mintA.programId)!=null?I:nn),mint:d,associatedOnly:!1}),f=await this.scope.account.getCreatedTokenAccount({programId:new X((T=t.mintB.programId)!=null?T:nn),mint:p,associatedOnly:!1});i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new ze((1-s)*1e4)).div(new ze(1e4));let S=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:0,programId:new X(t.mintA.programId),mint:d,tokenAccount:y,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:g}=S,b=he(S,["tokenAccount"]);m.addInstruction(b);let x=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?0:i.sourceAmountSwapped,programId:new X(t.mintB.programId),mint:p,tokenAccount:f,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:P}=x,A=he(x,["tokenAccount"]);m.addInstruction(A),!g&&!P&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?Nu(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),g,P,new X(h.vault.A),new X(h.vault.B),new X((K=t.mintA.programId)!=null?K:nn),new X((O=t.mintB.programId)!=null?O:nn),d,p,ki(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Mu(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),P,g,new X(h.vault.B),new X(h.vault.A),new X((N=t.mintB.programId)!=null?N:nn),new X((U=t.mintA.programId)!=null?U:nn),p,d,ki(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:u})}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:i,slippage:s,epochInfo:o,baseIn:a}){var P,A,h,I,T,S,x,K;let u=1-Number(s.toSignificant())/100,c=new ze(new V(i).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=Pe(c,e[a?"mintA":"mintB"].extensions.feeConfig,o,!1),m=c.sub((P=l.fee)!=null?P:new ze(0)),d=new ze(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(h=(A=l.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${s.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:mt,fee:void 0,expirationTime:void 0};if(!m.isZero()){let O=Ed(y,t,n,d);this.logDebug("lpAmountData:",{amountA:O.amountA.toString(),amountB:O.amountB.toString()}),f=Pe(O[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,o,!0)}let g=new je(new ze(1)).add(s),b=Pe(g.mul(f.amount.sub((I=f.fee)!=null?I:new ze(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,o,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",b.amount.toString(),"maxAnotherAmountFee:",(K=(x=b.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:b,liquidity:y}}};function Ed(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new ze(1)));let s=r.mul(t).div(n);return!s.isZero()&&!r.mul(t).mod(n).isZero()&&(s=s.add(new ze(1))),{amountA:i,amountB:s}}import{PublicKey as wn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ct,TOKEN_2022_PROGRAM_ID as rs,createTransferInstruction as vd}from"@solana/spl-token";import xi from"bn.js";import{TOKEN_PROGRAM_ID as es,TOKEN_2022_PROGRAM_ID as $o}from"@solana/spl-token";import{PublicKey as yt,TransactionInstruction as ts,SystemProgram as Fu}from"@solana/web3.js";import Jo from"bn.js";function XI(r,e,t,n,i,s,o,a,u,c,l,m){let d=_([v("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Fu.programId,isSigner:!1,isWritable:!1},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:new yt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new yt(t.id),isSigner:!1,isWritable:!0},{pubkey:new yt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new yt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new ts({keys:p,programId:r,data:y})}function zI(r,e,t,n,i,s,o,a,u,c){let l=_([v("instruction")]),m=[{pubkey:Fu.programId,isSigner:!1,isWritable:!1},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:new yt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new yt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new yt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=fe(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=fe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new yt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=fe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new ts({keys:m,programId:r,data:d})}function Eu(r,e,t,n,i,s){if(r.version===4&&r.pooltype.includes("StablePool")){let o=fe(e);return[{pubkey:o.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.authority,isSigner:!1,isWritable:!1},{pubkey:o.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:new yt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:o.openOrders,isSigner:!1,isWritable:!0},{pubkey:o.vault.A,isSigner:!1,isWritable:!0},{pubkey:o.vault.B,isSigner:!1,isWritable:!0},{pubkey:o.marketId,isSigner:!1,isWritable:!0},{pubkey:o.marketBids,isSigner:!1,isWritable:!0},{pubkey:o.marketAsks,isSigner:!1,isWritable:!0},{pubkey:o.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0}]}else if(r.version===6){let o=r,a=fe(e),u=o.mintA.address===t;return[{pubkey:new yt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals($o)||a.mintB.programId.equals($o)?[{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(s!=null?s:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:st(new yt(String(r.programId)),new yt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let o=fe(e);return[{pubkey:o.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.authority,isSigner:!1,isWritable:!1},{pubkey:o.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:o.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:o.openOrders,isSigner:!1,isWritable:!0},{pubkey:o.vault.A,isSigner:!1,isWritable:!0},{pubkey:o.vault.B,isSigner:!1,isWritable:!0},{pubkey:o.marketId,isSigner:!1,isWritable:!0},{pubkey:o.marketBids,isSigner:!1,isWritable:!0},{pubkey:o.marketAsks,isSigner:!1,isWritable:!0},{pubkey:o.marketEventQueue,isSigner:!1,isWritable:!0},...o.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:o.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:o.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0}]]}}function Fd(r,e,t,n,i,s,o,a,u,c,l,m,d,p){let y=_([v("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:es,isSigner:!1,isWritable:!1}];f.push(...Eu(a,c,s,t,n,p[0])),f.push(...Eu(u,l,o,n,i,p[1]));let g=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},g),new ts({keys:f,programId:r,data:g})}function vu({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,s,o,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=fe(m),p=t.equals(d.mintA.address)?Lt.add(at):Ot.sub(at);return Be.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((s=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?s:new Jo(0)),sqrtPriceLimitX64:p,remainingAccounts:(o=n.remainingAccounts[0])!=null?o:[]})}else{let m=n.poolKey[0];return{signers:[],instructions:[fi({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((u=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?u:new Jo(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Fd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new Jo(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var Du={[$i.toBase58()]:3},Wu={3:$i};var ns=_([pe(5),pe(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),qu={3:ns};import{PublicKey as Uu}from"@solana/web3.js";var Ti=ae("Serum"),Ii=class{static getProgramId(e){let t=Wu[e];return t||Ti.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Du[t];return n||Ti.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=qu[e];return t||Ti.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,s;for(;i<100;){try{let o=n.concat(Buffer.from([i]),Buffer.alloc(7));s=Uu.createProgramAddressSync(o,e)}catch(o){if(o instanceof TypeError)throw o;i++;continue}return{publicKey:s,nonce:i}}return Ti.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Uu.default,nonce:i}}};var Ut=new xi(0),Ir=class extends xe{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(J));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:i=1}=e,s=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let a=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(a);let u=j(t);for(let c=0;c<s.length;c++)u.gte(s[c].amount)?(o.addInstruction({instructions:[Ft({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(s[c].amount)):(o.addInstruction({instructions:[Ft({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Jn({destination:a.addresses.newAccount,source:s[c].publicKey,amount:u,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.versionBuild({txVersion:i})}async wrapWSol(e,t,n){let i=await this.getWSolAccounts(),s=this.createTxBuilder(),o=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return s.addInstruction(o),i.length&&s.addInstruction({instructions:[Jn({destination:i[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ft({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),s.versionBuild({txVersion:n!=null?n:1})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts($r,{dataSlice:{offset:mr.offsetOf("baseMint"),length:64}}),t=_([B("baseMint"),B("quoteMint")]),n=e.map(a=>({id:a.pubkey,version:4,mintA:t.decode(a.account.data).baseMint,mintB:t.decode(a.account.data).quoteMint})),i=_([B("mintA"),B("mintB")]);return{clmmPools:(await this.scope.connection.getProgramAccounts(ia,{filters:[{dataSize:yn.span}],dataSlice:{offset:yn.offsetOf("mintA"),length:64}})).map(a=>{let u=i.decode(a.account.data);return{id:a.pubkey,version:6,mintA:u.mintA,mintB:u.mintB}}),ammPools:n}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:i}){e=e.toString()===wn.default.toString()?J:e,t=t.toString()===wn.default.toString()?J:t;let s={},o={},a=[],u={};for(let l of n!=null?n:[]){if((l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),o[l.id.toString()]=l),l.mintA.equals(e)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintB.equals(e)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintA.equals(t)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].out.push(l)}if(l.mintB.equals(t)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].out.push(l)}}let c=[];for(let l of i)(l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),s[l.id.toBase58()]=l,c.push(l)),l.mintA.equals(e)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].in.push(l)),l.mintB.equals(e)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].in.push(l)),l.mintA.equals(t)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].out.push(l)),l.mintB.equals(t)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].out.push(l));for(let l of Object.keys(u)){if(u[l].in.length===1&&u[l].out.length===1&&u[l].in[0].id.equals(u[l].out[0].id)){delete u[l];continue}if(u[l].in.length===0||u[l].out.length===0){delete u[l];continue}let m=u[l];for(let d of m.in)for(let p of m.out)d.version===6&&o[d.id.toString()]===void 0?o[d.id.toString()]=d:d.version!==6&&s[d.id.toString()]===void 0&&(s[d.id.toString()]=d),p.version===6&&o[p.id.toString()]===void 0?o[p.id.toString()]=p:p.version!==6&&s[p.id.toString()]===void 0&&(s[p.id.toString()]=p)}return{directPath:a,addLiquidityPools:c,routePathDict:u,needSimulate:Object.values(s),needTickArray:Object.values(o)}}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:i,epochInfo:s,slippage:o,outputToken:a,amountIn:u}){if(e.version===6){let{allTrade:c,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:g,fee:b,remainingAccounts:P,executionPriceX64:A}=Ke.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:o,epochInfo:s,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(g.toFixed()),fee:[b],remainingAccounts:[P],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<i,poolType:"CLMM",slippage:o,clmmExPriceX64:[A],expirationTime:Kt(l.expirationTime,p)}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:c,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:u.raw,mintIn:u.token.mint,mintOut:a.address,slippage:o});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:Ro(D(C({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Ro(D(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new Ae(u.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<i,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:o,clmmExPriceX64:[void 0]}}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:i,simulateCache:s,tickCache:o,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var b,P,A,h,I,T,S,x,K;let m=l===void 0?new xi(0):e.raw.mul(new xi(l.feeBps.toNumber())).div(new xi(1e4)),d=e.raw.sub(m),p=new Ae(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=D(C({},t),{address:it(t.address).toString()}),g=[];for(let O of n)try{g.push(D(C({},this.computeAmountOut({itemPool:O,tickCache:o,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(N){this.logDebug("direct error",O.version,O.id.toString(),N.message)}this.logDebug("direct done");for(let[O,N]of Object.entries(i)){let U={chainId:101,address:O,programId:N.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:N.mDecimals,tags:[],extensions:{}},F=N.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:o,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:U,amountIn:p})}}catch(W){this.logDebug("route in error",Z.version,Z.id.toString(),W.message);return}}).sort((Z,W)=>{var rn,Gt,on,Mt;let lt=Z===void 0?Ut:Z.data.amountOut.amount.raw.sub((Gt=(rn=Z.data.amountOut.fee)==null?void 0:rn.raw)!=null?Gt:Ut),Pn=W===void 0?Ut:W.data.amountOut.amount.raw.sub((Mt=(on=W.data.amountOut.fee)==null?void 0:on.raw)!=null?Mt:Ut);return lt.lt(Pn)?1:-1})[0];if(F===void 0)continue;let H=new Ae(pi(U),F.data.amountOut.amount.raw.sub((P=(b=F.data.amountOut.fee)==null?void 0:b.raw)!=null?P:Ut));for(let Z of N.out)try{let W=this.computeAmountOut({itemPool:Z,tickCache:o,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:H});g.push(D(C({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new Je({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((h=(A=W.amountOut.fee)==null?void 0:A.raw)!=null?h:Ut)}).toFixed()),priceImpact:new V(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,Z],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(I=W.amountOut.fee)!=null&&I.raw?new Ae(F.data.amountOut.amount.token,((S=(T=F.data.amountOut.fee)==null?void 0:T.raw)!=null?S:Ut).add((K=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?K:Ut)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:Kt(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",Z.version,Z.id.toString(),W.message)}}return g.filter(O=>O.allTrade).sort((O,N)=>O.amountOut.amount.raw.sub(N.amountOut.amount.raw).gt(Ut)?-1:1)}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:i,routeProgram:s,txVersion:o}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(J),m=c.amount.token.mint.equals(J),d=u.amount.token.mint,p=u.amount.token.isToken2022?rs:ct,y=c.amount.token.mint,f=c.amount.token.isToken2022?rs:ct,{account:g,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&a.addInstruction(b),g===void 0)throw Error("input account check error");let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:y,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});A&&a.addInstruction(A);let h;if(e.routeType==="route"){let S=e.middleToken,{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.isToken2022?rs:ct,mint:S.mint,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:n.checkCreateATAOwner});h=x,K&&a.addInstruction(K)}let I=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),T=vu({routeProgram:s,inputMint:d,swapInfo:D(C({},e),{poolInfo:[...e.poolInfoList],poolKey:I}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:h,destinationToken:P}});return e.feeConfig!==void 0&&a.addInstruction({instructions:[vd(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]}),a.addInstruction(T),o===0?a.sizeCheckBuildV0({computeBudgetConfig:i,address:T.address}):a.sizeCheckBuild({computeBudgetConfig:i,address:T.address})}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let i=new Set([...e.needTickArray.map(d=>[d.mintA.toBase58(),d.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let s=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(d=>d.id)),o=Iu(s);Object.values(o).forEach(d=>{i.delete(d.mintA.address),i.delete(d.mintB.address)}),console.log("fetching mints info, total: ",i.size);let a=await Zs({connection:this.scope.connection,mints:Array.from(i).map(d=>new wn(d))});Object.values(o).forEach(d=>{a[d.mintA.address]={address:new wn(d.mintA.address),programId:ct,mintAuthority:null,supply:BigInt(0),decimals:d.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},a[d.mintB.address]={address:new wn(d.mintB.address),programId:ct,mintAuthority:null,supply:BigInt(0),decimals:d.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching clmm pools info, total:",e.needTickArray.length);let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(d=>d.id)}),{computeClmmPoolInfo:c,computePoolTickData:l}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:u,mintInfos:a}),m=Object.keys(e.routePathDict).reduce((d,p)=>D(C({},d),{[p]:D(C({},e.routePathDict[p]),{mintProgram:a[p].programId,mDecimals:a[p].decimals,in:e.routePathDict[p].in.map(y=>o[y.id.toBase58()]||c[y.id.toBase58()]),out:e.routePathDict[p].out.map(y=>o[y.id.toBase58()]||c[y.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:s,ammSimulateCache:o,clmmPoolsRpcInfo:u,computeClmmPoolInfo:c,computePoolTickData:l,routePathDict:m}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let i=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(i.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(i)});Object.keys(c).forEach(l=>{t[l]=c[l]})}if(new Set(e.filter(c=>c.version===4&&!n[c.id.toString()]).map(c=>c.id.toString())).size>0){let c=this.scope.liquidity.getRpcPoolInfos(Array.from(i));Object.keys(c).forEach(l=>{n[l]=c[l]})}let o=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};o.size>0&&(await tt(this.scope.connection,Array.from(o).map(l=>({pubkey:new wn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=ns.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Ii.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let u=[];return e.forEach(c=>{if(c.version===6){let l=t[c.id.toString()],m={programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:D(C({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else{let l=n[c.id.toString()],m=C({programId:c.programId,id:c.id,mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Ho({programId:new wn(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}}),u}};import{TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as Wd,Transaction as is,TransactionInstruction as qd}from"@solana/web3.js";import Gu from"bn.js";var Ye=class extends xe{static getPdaPoolId(e,t){return oe([Ye.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ye.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Gu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:s}){if(n.length===0)return[];let o=n.map(l=>Ye.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ye.VERSION_PROJECT.length;l++)a.push(...o.map(m=>Ye.getPdaOwnerId(t,m,i,l).publicKey));let u=await At(e,[...o,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=o[d],y=a[l],f=u[d],g=u[n.length+l];if(!(f&&g)||f.data.length!==Ye.POOL_LAYOUT.span||g.data.length!==Ye.OWNER_LAYOUT.span)continue;let b=Ye.POOL_LAYOUT.decode(f.data),P=Ye.OWNER_LAYOUT.decode(g.data),A=b.openTime.toNumber(),h=b.endTime.toNumber(),I=P.tokenInfo.map(x=>x.debtAmount.gt(new Gu(0))).filter(x=>!x).length!==3,T=s>A&&s<h&&b.status===1,S=I&&T;c.push({programId:t,poolId:p,ammId:b.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ye.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:S,canClaimErrorType:I?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:b.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,s=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(Ie.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(Ie.WSOL.mint),associatedOnly:u.mintAddress.equals(Ie.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),s.push(c)}n.addInstruction({instructions:[Ye.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:o,signers:a}=n.build();return[{transaction:o,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,s={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(Ie.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(Ie.WSOL.mint),associatedOnly:m.mintAddress.equals(Ie.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(s[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Ye.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:o,signers:a}=n.build(),u=n.allInstructions;return jr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:o,signer:a}]:[{transaction:new is().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new is().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new is().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=_([]),s=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Dd,isSigner:!1,isWritable:!1}],o=Buffer.alloc(i.span);i.encode({},o);let a=Buffer.from([10,66,208,184,161,6,191,98,...o]);return new qd({keys:s,programId:e,data:a})}},bt=Ye;bt.CLAIMED_NUM=3,bt.POOL_LAYOUT=_([pe(8),v("bump"),v("status"),w("openTime"),w("endTime"),B("ammId"),G(_([v("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ye.CLAIMED_NUM,"tokenInfo"),G(w(),10,"padding")]),bt.OWNER_LAYOUT=_([pe(8),v("bump"),v("version"),B("poolId"),B("owner"),w("lpAmount"),G(_([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ye.CLAIMED_NUM,"tokenInfo"),G(w(),4,"padding")]),bt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Wd(e)),bt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},bt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as xr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qu}from"@solana/spl-token";import Br from"bn.js";import{TransactionInstruction as Gd,SYSVAR_RENT_PUBKEY as Xd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xu}from"@solana/spl-token";import{createInitializeAccountInstruction as zu}from"@solana/spl-token";import{SystemProgram as An,Transaction as Yu}from"@solana/web3.js";function Ud(r="accountFlags"){let e=new ii(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var os=_([pe(5),Ud("accountFlags"),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]);function zd({programId:r,marketInfo:e}){let t=_([v("version"),qe("instruction"),w("baseLotSize"),w("quoteLotSize"),Ct("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:Xd,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new Gd({keys:n,programId:r,data:i})}async function ju({connection:r,wallet:e,marketInfo:t}){let n=new Yu,i=await r.getMinimumBalanceForRentExemption(165);n.add(An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Xu}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Xu}),zu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),zu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let s=new Yu;return s.add(An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(os.span),space:os.span,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),zd({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:s,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var Mn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:s,txVersion:o,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ue({fromPublicKey:u,programId:s}),l=Ue({fromPublicKey:u,programId:s}),m=Ue({fromPublicKey:u,programId:s}),d=Ue({fromPublicKey:u,programId:s}),p=Ue({fromPublicKey:u,programId:s}),y=Ue({fromPublicKey:u,programId:Qu}),f=Ue({fromPublicKey:u,programId:Qu}),g=0,b=new Br(100);function P(){let K=new Br(0);for(;;)try{return{vaultOwner:xr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],s),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new Br(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),I=new Br(Math.round(10**e.decimals*n)),T=new Br(Math.round(n*10**t.decimals*i));if(I.eq(mt))throw Error("lot size is too small");if(T.eq(mt))throw Error("tick size or lot size is too small");let S=await ju({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:s,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:g,quoteDustThreshold:b,vaultSignerNonce:h,baseLotSize:I,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let K of S.slice(1,S.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return o===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 xr(e.mint),quoteMin:new xr(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 xr(e.mint),quoteMin:new xr(t.mint)}})}};import{PublicKey as Kr}from"@solana/web3.js";import{TransactionInstruction as as,SYSVAR_CLOCK_PUBKEY as Yd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as us}from"@solana/spl-token";var ss=_([v("instruction"),la("amount")]),Sr=_([v("instruction")]);function KB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:Dr,isSigner:!1,isWritable:!1},{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([s,o])=>({pubkey:o,isSigner:s==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(s)}))],i=Buffer.alloc(ss.span);return ss.encode({instruction:1,amount:Number(e)},i),new as({keys:n,programId:r,data:i})}function Bi({programId:r},e){let t=[{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,s])=>({pubkey:s,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Sr.span);return Sr.encode({instruction:2},n),new as({keys:t,programId:r,data:n})}function cs(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,s=n==="base"?e.baseVault:e.quoteVault,o=Buffer.alloc(Sr.span);Sr.encode({instruction:2},o);let a=[{pubkey:us,isWritable:!1,isSigner:!1},{pubkey:Yd,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new as({programId:e.programId,keys:a,data:o})}import Hu from"bn.js";var jd={[Hn.IDO_PROGRAM_ID_V1.toString()]:1,[Hn.IDO_PROGRAM_ID_V2.toString()]:2,[Hn.IDO_PROGRAM_ID_V3.toString()]:3,[Hn.IDO_PROGRAM_ID_V4.toString()]:4},_n=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:s}){let o=this.createTxBuilder(),a=jd[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new Hu(e.coin).isZero(),!new Hu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(J),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&o.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&g&&o.addInstruction(g),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return o.addInstruction({instructions:[...c?[Bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Kr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Bi({programId:new Kr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Kr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:s});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),o.addInstruction({instructions:[Bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Kr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:s});let b={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new Kr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return o.addInstruction({instructions:[...c?[cs(D(C({},b),{side:"base"}))]:[],...l?[cs(D(C({},b),{side:"quote"}))]:[]]}).versionBuild({txVersion:s})}};import{PublicKey as Qd}from"@solana/web3.js";import{MintLayout as Hd,TOKEN_2022_PROGRAM_ID as ls,TOKEN_PROGRAM_ID as ms}from"@solana/spl-token";var Cr=class extends xe{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:i="strict"}=t||{},{mintList:s,blacklist:o,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(St.address,St),this._mintGroup.official.add(St.address),o.forEach(c=>{this._blackTokenMap.set(c.address,D(C({},c),{priority:-1}))}),s.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?ls.toBase58():ms.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?ls.toBase58():ms.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?ls.toBase58():ms.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(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return St;let s=(await this.scope.api.getTokenInfo([n]))[0];if(s)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(C({},s),{priority:2})),s;let o=await this.scope.connection.getAccountInfo(new Qd(n));if(!o)throw new Error(`mint address not found: ${n}`);let a=Hd.decode(o.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:o.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var Si=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:s,defaultChainTime:o,defaultChainTimeOffset:a,apiCacheTime:u,blockhashCommitment:c="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new Pt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=c,this.api=s,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new lr({scope:this,moduleName:"Raydium_Farm"}),this.account=new er({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Ar({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Cr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Ir({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Pr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Tr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new bt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Mn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new _n({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,value:{chainTime:o||Date.now()-a,offset:a}})}static async load(e){var l;let t=Zd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:s,logRequests:o,urlConfigs:a}=t,u=new ti({cluster:n,timeout:i,urlConfigs:a,logCount:s,logRequests:o}),c=new Si(D(C({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(ni);return this._owner.publicKey}setOwner(e){return this._owner=e?new Pt(e):void 0,this}get connection(){if(!this._connection)throw new Error(aa);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(ni),new Error(ni)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var s;let n=(s=this.apiData.jupTokenList)==null?void 0:s[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import $u from"bn.js";var ds=new $u(1e6);function $d(r,e,t){return r.mul(e).add(t).sub(new $u(1)).div(t)}function Zu(r,e,t){return r.mul(e).div(t)}var Ki=class{static tradingFee(e,t){return $d(e,t,ds)}static protocolFee(e,t){return Zu(e,t,ds)}static fundFee(e,t){return Zu(e,t,ds)}};import Rr from"bn.js";function Ci(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Jd(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=Ci(r,e);return n.gt(Vn)&&(t=t.add(new Rr(1)),e=r.div(t),n=Ci(r,t),n.gt(Vn)&&(e=e.add(new Rr(1)))),[t,e]}var Vn=new Rr(0),Ri=class{static swapWithoutFees(e,t,n){let i=t.mul(n),s=t.add(e),[o,a]=Jd(i,s),u=a.sub(t),c=n.sub(o);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,s){let o=e.mul(n).div(t),a=e.mul(i).div(t);if(s===0)return{tokenAmount0:o,tokenAmount1:a};if(s===1)return Ci(e.mul(n),t).gt(Vn)&&o.gt(Vn)&&(o=o.add(new Rr(1))),Ci(e.mul(i),t).gt(Vn)&&a.gt(Vn)&&(a=a.add(new Rr(1))),{tokenAmount0:o,tokenAmount1:a};throw Error("roundDirection value error")}};var Ju=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Ju||{}),ec=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let s=Ki.tradingFee(e,i),o=e.sub(s),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ri.swapWithoutFees(o,t,n),c=a.add(s);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:s}}};var QS=r=>r;export{nd as AMM_CONFIG_SEED,su as BIT_PRECISION,Pr as Clmm,pu as ClmmConfigLayout,Be as ClmmInstrument,Ri as ConstantProductCurve,_u as CpmmConfigInfoLayout,Ki as CpmmFee,Vu as CpmmPoolInfoLayout,ec as CurveCalculator,Wm as DataElement,Uo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ra as FARM_LOCK_MINT,La as FARM_LOCK_VAULT,dt as FARM_PROGRAM_TO_VERSION,Na as FARM_VERSION_TO_LEDGER_LAYOUT,Oa as FARM_VERSION_TO_STATE_LAYOUT,wi as FEE_RATE_DENOMINATOR,ds as FEE_RATE_DENOMINATOR_VALUE,ld as FETCH_TICKARRAY_COUNT,cd as Fee,Pu as LIQUIDITY_FEES_DENOMINATOR,Au as LIQUIDITY_FEES_NUMERATOR,gd as LIQUIDITY_VERSION_TO_SERUM_VERSION,TP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,au as LOG_B_2_X32,uu as LOG_B_P_ERR_MARGIN_LOWER_X64,cu as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,os as MARKET_STATE_LAYOUT_V2,ns as MARKET_STATE_LAYOUT_V3,qu as MARKET_VERSION_TO_STATE_LAYOUT,Ot as MAX_SQRT_PRICE_X64,He as MAX_TICK,Lt as MIN_SQRT_PRICE_X64,Xe as MIN_TICK,Ln as MODEL_DATA_PUBKEY,Ii as Market,te as MathUtil,qo as MaxU64,ou as MaxUint128,Wt as NEGATIVE_ONE,at as ONE,ad as OPERATION_SEED,Xo as ObservationInfoLayout,pd as ObservationLayout,fu as OperationLayout,od as POOL_REWARD_VAULT_SEED,rd as POOL_SEED,ud as POOL_TICK_ARRAY_BITMAP_SEED,id as POOL_VAULT_SEED,nu as POSITION_SEED,yn as PoolInfoLayout,Ke as PoolUtils,Ai as PositionInfoLayout,yd as PositionRewardInfoLayout,gr as PositionUtils,ah as ProtocolPositionLayout,gi as Q128,ut as Q64,Si as Raydium,fd as RewardInfo,Ju as RoundDirection,Du as SERUM_PROGRAMID_TO_VERSION,Wu as SERUM_VERSION_TO_PROGRAMID,St as SOL_INFO,ZA as SPL_MINT_LAYOUT,ee as SqrtPriceMath,Rn as StableLayout,fn as SwapMath,pn as TICK_ARRAY_BITMAP_SIZE,sd as TICK_ARRAY_SEED,Ne as TICK_ARRAY_SIZE,HP as TICK_SPACINGS,Oe as TOKEN_WSOL,qt as TickArrayBitmap,du as TickArrayBitmapExtensionLayout,br as TickArrayBitmapExtensionUtils,yr as TickArrayLayout,bd as TickLayout,bn as TickMath,ce as TickQuery,z as TickUtils,fr as U64Resolution,$P as U64_IGNORE_RANGE,Ka as Voter,hm as VoterDepositEntry,km as VoterLockup,Sa as VoterRegistrar,Pm as VoterVotingMintConfig,me as ZERO,_o as addLiquidityLayout,po as associatedLedgerAccountLayout,Bo as calFarmRewardAmount,$d as ceilDiv,Sr as claimLayout,Ft as closeAccountInstruction,di as createAssociatedLedgerAccountInstruction,qa as createPoolFeeLayout,Za as createPoolV4InstructionV2,hP as createPoolV4Layout,vt as createWSolAccountInstructions,Qe as dwLayout,go as farmAddRewardLayout,Vw as farmLedgerLayoutV3_1,nr as farmLedgerLayoutV3_2,Ew as farmLedgerLayoutV5_1,xa as farmLedgerLayoutV5_2,Ba as farmLedgerLayoutV6_1,_a as farmRewardInfoToConfig,yo as farmRewardLayout,bo as farmRewardRestartLayout,Am as farmRewardTimeInfoLayout,Ta as farmStateV3Layout,Ia as farmStateV5Layout,tr as farmStateV6Layout,uA as fetchMultipleFarmInfoAndUpdate,vh as fetchMultipleInfo,Oo as fixedSwapInLayout,No as fixedSwapOutLayout,Zu as floorDiv,Zm as formatLayout,Ue as generatePubKey,Ma as getAssociatedAuthority,Qo as getAssociatedConfigId,Ge as getAssociatedLedgerAccount,ir as getAssociatedLedgerPoolAccount,kd as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Rd as getCpmmPdaAmmConfigId,Ld as getCpmmPdaPoolId,Ku as getCreatePoolKeys,So as getDepositEntryIndex,za as getDxByDyBaseIn,Xa as getDyByDxBaseIn,Cn as getFarmLedgerLayout,Tm as getFarmStateLayout,Ho as getLiquidityAssociatedAuthority,gn as getLiquidityAssociatedId,Ek as getLiquidityFromAmounts,YP as getPdaAmmConfigId,st as getPdaExBitmapAccount,Od as getPdaLpMint,bi as getPdaMetadataKey,ki as getPdaObservationId,pr as getPdaOperationAccount,pt as getPdaPersonalPositionAddress,Cd as getPdaPoolAuthority,ru as getPdaPoolId,iu as getPdaPoolRewardVaulId,Wo as getPdaPoolVaultId,dn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,Su as getPdaVault,Po as getRegistrarAddress,Ya as getStablePrice,xo as getTokenOwnerRecordAddress,To as getVoterAddress,Io as getVoterWeightRecordAddress,ho as getVotingMintAuthority,ko as getVotingTokenMint,Om as governanceCreateTokenOwnerRecord,qP as i16ToBytes,yi as i32ToBytes,Mo as initPoolLayout,lo as initTokenAccountInstruction,zd as initializeMarket,wo as isValidFarmVersion,dr as isZero,cA as judgeFarmType,vo as leadingZeros,tu as leastSignificantBit,mr as liquidityStateV4Layout,vm as liquidityStateV5Layout,fi as makeAMMSwapInstruction,Ha as makeAddLiquidityInstruction,Co as makeAddNewRewardInstruction,Bi as makeClaimInstruction,cs as makeClaimInstructionV4,Ru as makeCreateCpmmPoolInInstruction,Va as makeCreateFarmInstruction,ju as makeCreateMarketInstruction,Ea as makeCreatorWithdrawFarmRewardInstruction,Lu as makeDepositCpmmInInstruction,Fa as makeDepositInstructionV3,va as makeDepositInstructionV5,Da as makeDepositInstructionV6,BA as makeDepositTokenInstruction,KA as makeDepositWithdrawInstruction,DP as makeInitPoolInstructionV4,KB as makePurchaseInstruction,Ko as makeRestartRewardInstruction,$a as makeSimulatePoolInfoInstruction,Nu as makeSwapCpmmBaseInInInstruction,Mu as makeSwapCpmmBaseOutInInstruction,ed as makeSwapFixedInInstruction,td as makeSwapFixedOutInstruction,vu as makeSwapInstruction,Jn as makeTransferInstruction,Ou as makeWithdrawCpmmInInstruction,cr as makeWithdrawInstructionV3,ur as makeWithdrawInstructionV5,ar as makeWithdrawInstructionV6,SA as makeWithdrawTokenInstruction,ZP as mockCreatePoolInfo,lu as mockV3CreatePoolInfo,qm as modelDataInfoLayout,eu as mostSignificantBit,ha as parseTokenAccountResp,aP as parseTokenInfo,en as poolTypeV6,ss as purchaseLayout,bm as realFarmStateV3Layout,gm as realFarmStateV5Layout,wm as realFarmV6Layout,Fo as removeLiquidityInstruction,Vo as removeLiquidityLayout,XI as route1Instruction,zI as route2Instruction,Fd as routeInstruction,vP as simulatePoolInfoInstruction,cP as solToWSolToken,Ht as splAccountLayout,Iu as toAmmComputePoolInfo,cn as toApiV3Token,Lo as toFeeConfig,pi as toToken,Ro as toTokenAmount,uP as toTokenInfo,Do as trailingZeros,Ja as u16ToBytes,UP as u32ToBytes,QS as unionArr,Im as updateFarmPoolInfo,Ao as validateFarmRewards,Mm as voterStakeRegistryCreateDepositEntry,Nm as voterStakeRegistryCreateVoter,Cm as voterStakeRegistryDeposit,Rm as voterStakeRegistryUpdateVoterWeightRecord,Lm as voterStakeRegistryWithdraw,lP as wSolToSolToken,fo as withdrawRewardLayout};
1
+ var rc=Object.defineProperty,ic=Object.defineProperties;var oc=Object.getOwnPropertyDescriptors;var Lr=Object.getOwnPropertySymbols;var bs=Object.prototype.hasOwnProperty,gs=Object.prototype.propertyIsEnumerable;var ys=(r,e,t)=>e in r?rc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e)=>{for(var t in e||(e={}))bs.call(e,t)&&ys(r,t,e[t]);if(Lr)for(var t of Lr(e))gs.call(e,t)&&ys(r,t,e[t]);return r},D=(r,e)=>ic(r,oc(e));var he=(r,e)=>{var t={};for(var n in r)bs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Lr)for(var n of Lr(r))e.indexOf(n)<0&&gs.call(r,n)&&(t[n]=r[n]);return t};import{merge as Zd}from"lodash";import sa from"axios";import{get as ws,set as sc}from"lodash";import Ps from"dayjs";import ac from"dayjs/plugin/utc";Ps.extend(ac);var Oi=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 Ps().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}},As={},uc={};function ae(r){let e=ws(As,r);if(!e){let t=ws(uc,r);e=new Oi({name:r,logLevel:t}),sc(As,r,e)}return e}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import fl from"big.js";import Xr from"bn.js";import et from"bn.js";var hn=9e15,Qt=1e9,Ni="0123456789abcdef",Nr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Mi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-hn,maxE:hn,crypto:!1},Is,_t,ne=!0,Vr="[DecimalError] ",jt=Vr+"Invalid argument: ",xs=Vr+"Precision limit exceeded",Bs=Vr+"crypto unavailable",Ss="[object Decimal]",We=Math.floor,Re=Math.pow,cc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,lc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,mc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ks=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,wt=1e7,$=7,dc=9007199254740991,pc=Nr.length-1,_i=Mr.length-1,M={toStringTag:Ss};M.absoluteValue=M.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),Y(r)};M.ceil=function(){return Y(new this.constructor(this),this.e+1,2)};M.clampedTo=M.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(jt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};M.comparedTo=M.cmp=function(r){var e,t,n,i,s=this,o=s.d,a=(r=new s.constructor(r)).d,u=s.s,c=r.s;if(!o||!a)return!u||!c?NaN:u!==c?u:o===a?0:!o^u<0?1:-1;if(!o[0]||!a[0])return o[0]?u:a[0]?-c:0;if(u!==c)return u;if(s.e!==r.e)return s.e>r.e^u<0?1:-1;for(n=o.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(o[e]!==a[e])return o[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};M.cosine=M.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=fc(n,Ns(n,t)),n.precision=r,n.rounding=e,Y(_t==2||_t==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};M.cubeRoot=M.cbrt=function(){var r,e,t,n,i,s,o,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(ne=!1,s=l.s*Re(l.s*l,1/3),!s||Math.abs(s)==1/0?(t=Ve(l.d),r=l.e,(s=(r-t.length+1)%3)&&(t+=s==1||s==-2?"0":"00"),s=Re(t,1/3),r=We((r+1)/3)-(r%3==(r<0?-1:2)),s==1/0?t="5e"+r:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(s.toString()),o=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),o+2,1),Ve(a.d).slice(0,o)===(t=Ve(n.d)).slice(0,o))if(t=t.slice(o-3,o+1),t=="9999"||!i&&t=="4999"){if(!i&&(Y(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}o+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Y(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return ne=!0,Y(n,r,m.rounding,e)};M.decimalPlaces=M.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-We(this.e/$))*$,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};M.dividedBy=M.div=function(r){return we(this,new this.constructor(r))};M.dividedToIntegerBy=M.divToInt=function(r){var e=this,t=e.constructor;return Y(we(e,new t(r),0,1,1),t.precision,t.rounding)};M.equals=M.eq=function(r){return this.cmp(r)===0};M.floor=function(){return Y(new this.constructor(this),this.e+1,3)};M.greaterThan=M.gt=function(r){return this.cmp(r)>0};M.greaterThanOrEqualTo=M.gte=function(r){var e=this.cmp(r);return e==1||e===0};M.hyperbolicCosine=M.cosh=function(){var r,e,t,n,i,s=this,o=s.constructor,a=new o(1);if(!s.isFinite())return new o(s.s?1/0:NaN);if(s.isZero())return a;t=o.precision,n=o.rounding,o.precision=t+Math.max(s.e,s.sd())+4,o.rounding=1,i=s.d.length,i<32?(r=Math.ceil(i/3),e=(1/Fr(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),s=Tn(o,1,s.times(e),new o(1),!0);for(var u,c=r,l=new o(8);c--;)u=s.times(s),s=a.minus(u.times(l.minus(u.times(l))));return Y(s,o.precision=t,o.rounding=n,!0)};M.hyperbolicSine=M.sinh=function(){var r,e,t,n,i=this,s=i.constructor;if(!i.isFinite()||i.isZero())return new s(i);if(e=s.precision,t=s.rounding,s.precision=e+Math.max(i.e,i.sd())+4,s.rounding=1,n=i.d.length,n<3)i=Tn(s,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Fr(5,r)),i=Tn(s,2,i,i,!0);for(var o,a=new s(5),u=new s(16),c=new s(20);r--;)o=i.times(i),i=i.times(a.plus(o.times(u.times(o).plus(c))))}return s.precision=e,s.rounding=t,Y(i,e,t,!0)};M.hyperbolicTangent=M.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};M.inverseCosine=M.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,s=t.rounding;return n!==-1?n===0?e.isNeg()?gt(t,i,s):new t(0):new t(NaN):e.isZero()?gt(t,i+4,s).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=gt(t,i+4,s).times(.5),t.precision=i,t.rounding=s,r.minus(e))};M.inverseHyperbolicCosine=M.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,ne=!1,t=t.times(t).minus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};M.inverseHyperbolicSine=M.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,ne=!1,t=t.times(t).plus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln())};M.inverseHyperbolicTangent=M.atanh=function(){var r,e,t,n,i=this,s=i.constructor;return i.isFinite()?i.e>=0?new s(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=s.precision,e=s.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?Y(new s(i),r,e,!0):(s.precision=t=n-i.e,i=we(i.plus(1),new s(1).minus(i),t+r,1),s.precision=r+4,s.rounding=1,i=i.ln(),s.precision=r,s.rounding=e,i.times(.5))):new s(NaN)};M.inverseSine=M.asin=function(){var r,e,t,n,i=this,s=i.constructor;return i.isZero()?new s(i):(e=i.abs().cmp(1),t=s.precision,n=s.rounding,e!==-1?e===0?(r=gt(s,t+4,n).times(.5),r.s=i.s,r):new s(NaN):(s.precision=t+6,s.rounding=1,i=i.div(new s(1).minus(i.times(i)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=n,i.times(2)))};M.inverseTangent=M.atan=function(){var r,e,t,n,i,s,o,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<=_i)return o=gt(l,m+4,d).times(.25),o.s=c.s,o}else{if(!c.s)return new l(NaN);if(m+4<=_i)return o=gt(l,m+4,d).times(.5),o.s=c.s,o}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/$+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(ne=!1,e=Math.ceil(a/$),n=1,u=c.times(c),o=new l(c),i=c;r!==-1;)if(i=i.times(u),s=o.minus(i.div(n+=2)),i=i.times(u),o=s.plus(i.div(n+=2)),o.d[e]!==void 0)for(r=e;o.d[r]===s.d[r]&&r--;);return t&&(o=o.times(2<<t-1)),ne=!0,Y(o,l.precision=m,l.rounding=d,!0)};M.isFinite=function(){return!!this.d};M.isInteger=M.isInt=function(){return!!this.d&&We(this.e/$)>this.d.length-2};M.isNaN=function(){return!this.s};M.isNegative=M.isNeg=function(){return this.s<0};M.isPositive=M.isPos=function(){return this.s>0};M.isZero=function(){return!!this.d&&this.d[0]===0};M.lessThan=M.lt=function(r){return this.cmp(r)<0};M.lessThanOrEqualTo=M.lte=function(r){return this.cmp(r)<1};M.logarithm=M.log=function(r){var e,t,n,i,s,o,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)s=!0;else{for(i=t[0];i%10===0;)i/=10;s=i!==1}if(ne=!1,a=m+p,o=Yt(c,a),n=e?_r(l,a+10):Yt(r,a),u=we(o,n,a,1),En(u.d,i=m,d))do if(a+=10,o=Yt(c,a),n=e?_r(l,a+10):Yt(r,a),u=we(o,n,a,1),!s){+Ve(u.d).slice(i+1,i+15)+1==1e14&&(u=Y(u,m+1,0));break}while(En(u.d,i+=10,d));return ne=!0,Y(u,m,d)};M.minus=M.sub=function(r){var e,t,n,i,s,o,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return ne?Y(r,a,u):r}if(t=We(r.e/$),l=We(p.e/$),c=c.slice(),s=l-t,s){for(m=s<0,m?(e=c,s=-s,o=d.length):(e=d,t=l,o=c.length),n=Math.max(Math.ceil(a/$),o)+2,s>n&&(s=n,e.length=1),e.reverse(),n=s;n--;)e.push(0);e.reverse()}else{for(n=c.length,o=d.length,m=n<o,m&&(o=n),n=0;n<o;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}s=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),o=c.length,n=d.length-o;n>0;--n)c[o++]=0;for(n=d.length;n>s;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=wt-1;--c[i],c[n]+=wt}c[n]-=d[n]}for(;c[--o]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Er(c,t),ne?Y(r,a,u):r):new y(u===3?-0:0)};M.modulo=M.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?Y(new n(t),n.precision,n.rounding):(ne=!1,n.modulo==9?(e=we(t,r.abs(),0,3,1),e.s*=r.s):e=we(t,r,0,n.modulo,1),e=e.times(r),ne=!0,t.minus(e))};M.naturalExponential=M.exp=function(){return Vi(this)};M.naturalLogarithm=M.ln=function(){return Yt(this)};M.negated=M.neg=function(){var r=new this.constructor(this);return r.s=-r.s,Y(r)};M.plus=M.add=function(r){var e,t,n,i,s,o,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),ne?Y(r,a,u):r;if(s=We(m.e/$),n=We(r.e/$),c=c.slice(),i=s-n,i){for(i<0?(t=c,i=-i,o=l.length):(t=l,n=s,o=c.length),s=Math.ceil(a/$),o=s>o?s+1:o+1,i>o&&(i=o,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(o=c.length,i=l.length,o-i<0&&(i=o,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/wt|0,c[i]%=wt;for(e&&(c.unshift(e),++n),o=c.length;c[--o]==0;)c.pop();return r.d=c,r.e=Er(c,n),ne?Y(r,a,u):r};M.precision=M.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(jt+r);return t.d?(e=Cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};M.round=function(){var r=this,e=r.constructor;return Y(new e(r),r.e+1,e.rounding)};M.sine=M.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+$,n.rounding=1,t=bc(n,Ns(n,t)),n.precision=r,n.rounding=e,Y(_t>2?t.neg():t,r,e,!0)):new n(NaN)};M.squareRoot=M.sqrt=function(){var r,e,t,n,i,s,o=this,a=o.d,u=o.e,c=o.s,l=o.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?o:1/0);for(ne=!1,c=Math.sqrt(+o),c==0||c==1/0?(e=Ve(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=We((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(s=n,n=s.plus(we(o,s,t+2,1)).times(.5),Ve(s.d).slice(0,t)===(e=Ve(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(Y(s,u+1,0),s.times(s).eq(o))){n=s;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Y(n,u+1,1),r=!n.times(n).eq(o));break}return ne=!0,Y(n,u,l.rounding,r)};M.tangent=M.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,Y(_t==2||_t==4?t.neg():t,r,e,!0)):new n(NaN)};M.times=M.mul=function(r){var e,t,n,i,s,o,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=We(l.e/$)+We(r.e/$),u=d.length,c=p.length,u<c&&(s=d,d=p,p=s,o=u,u=c,c=o),s=[],o=u+c,n=o;n--;)s.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=s[i]+p[n]*d[i-n-1]+e,s[i--]=a%wt|0,e=a/wt|0;s[i]=(s[i]+e)%wt|0}for(;!s[--o];)s.pop();return e?++t:s.shift(),r.d=s,r.e=Er(s,t),ne?Y(r,m.precision,m.rounding):r};M.toBinary=function(r,e){return Fi(this,2,r,e)};M.toDecimalPlaces=M.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ze(r,0,Qt),e===void 0?e=n.rounding:Ze(e,0,8),Y(t,r+t.e+1,e))};M.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Bt(n,!0):(Ze(r,0,Qt),e===void 0?e=i.rounding:Ze(e,0,8),n=Y(new i(n),r+1,e),t=Bt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toFixed=function(r,e){var t,n,i=this,s=i.constructor;return r===void 0?t=Bt(i):(Ze(r,0,Qt),e===void 0?e=s.rounding:Ze(e,0,8),n=Y(new s(i),r+i.e+1,e),t=Bt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};M.toFraction=function(r){var e,t,n,i,s,o,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),s=e.e=Cs(y)-p.e-1,o=s%$,e.d[0]=Re(10,o<0?$+o:o),r==null)r=s>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(jt+a);r=a.gt(e)?s>0?e:c:a}for(ne=!1,a=new f(Ve(y)),l=f.precision,f.precision=s=y.length*$*2;m=we(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=we(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=we(c,n,s,1).minus(p).abs().cmp(we(u,t,s,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,ne=!0,d};M.toHexadecimal=M.toHex=function(r,e){return Fi(this,16,r,e)};M.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Ze(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(ne=!1,t=we(t,r,0,e,1).times(r),ne=!0,Y(t)):(r.s=t.s,t=r),t};M.toNumber=function(){return+this};M.toOctal=function(r,e){return Fi(this,8,r,e)};M.toPower=M.pow=function(r){var e,t,n,i,s,o,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Re(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,s=u.rounding,r.eq(1))return Y(a,n,s);if(e=We(r.e/$),e>=r.d.length-1&&(t=c<0?-c:c)<=dc)return i=Rs(u,a,t,n),r.s<0?new u(1).div(i):Y(i,n,s);if(o=a.s,o<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(o=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=o,a}return t=Re(+a,c),e=t==0||!isFinite(t)?We(c*(Math.log("0."+Ve(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?o/0:0):(ne=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Vi(r.times(Yt(a,n+t)),n),i.d&&(i=Y(i,n+5,1),En(i.d,n,s)&&(e=n+10,i=Y(Vi(r.times(Yt(a,e+t)),e),e+5,1),+Ve(i.d).slice(n+1,n+15)+1==1e14&&(i=Y(i,n+1,0)))),i.s=o,ne=!0,u.rounding=s,Y(i,n,s))};M.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Bt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ze(r,1,Qt),e===void 0?e=i.rounding:Ze(e,0,8),n=Y(new i(n),r,e),t=Bt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toSignificantDigits=M.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ze(r,1,Qt),e===void 0?e=n.rounding:Ze(e,0,8)),Y(new n(t),r,e)};M.toString=function(){var r=this,e=r.constructor,t=Bt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};M.truncated=M.trunc=function(){return Y(new this.constructor(this),this.e+1,1)};M.valueOf=M.toJSON=function(){var r=this,e=r.constructor,t=Bt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Ve(r){var e,t,n,i=r.length-1,s="",o=r[0];if(i>0){for(s+=o,e=1;e<i;e++)n=r[e]+"",t=$-n.length,t&&(s+=zt(t)),s+=n;o=r[e],n=o+"",t=$-n.length,t&&(s+=zt(t))}else if(o===0)return"0";for(;o%10===0;)o/=10;return s+o}function Ze(r,e,t){if(r!==~~r||r<e||r>t)throw Error(jt+r)}function En(r,e,t,n){var i,s,o,a;for(s=r[0];s>=10;s/=10)--e;return--e<0?(e+=$,i=0):(i=Math.ceil((e+1)/$),e%=$),s=Re(10,$-e),a=r[i]%s|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),o=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):o=(t<4&&a+1==s||t>3&&a+1==s/2)&&(r[i+1]/s/100|0)==Re(10,e-2)-1||(a==s/2||a==0)&&(r[i+1]/s/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),o=(n||t<4)&&a==9999||!n&&t>3&&a==4999):o=((n||t<4)&&a+1==s||!n&&t>3&&a+1==s/2)&&(r[i+1]/s/1e3|0)==Re(10,e-3)-1,o}function Or(r,e,t){for(var n,i=[0],s,o=0,a=r.length;o<a;){for(s=i.length;s--;)i[s]*=e;for(i[0]+=Ni.indexOf(r.charAt(o++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function fc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Fr(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Tn(r,1,e.times(i),new r(1));for(var s=t;s--;){var o=e.times(e);e=o.times(o).minus(o).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,s){var o,a=0,u=n.length;for(n=n.slice();u--;)o=n[u]*i+a,n[u]=o%s|0,a=o/s|0;return a&&n.unshift(a),n}function e(n,i,s,o){var a,u;if(s!=o)u=s>o?1:-1;else for(a=u=0;a<s;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,s,o){for(var a=0;s--;)n[s]-=a,a=n[s]<i[s]?1:0,n[s]=a*o+n[s]-i[s];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,s,o,a,u){var c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O,N,U,F=n.constructor,H=n.s==i.s?1:-1,Z=n.d,W=i.d;if(!Z||!Z[0]||!W||!W[0])return new F(!n.s||!i.s||(Z?W&&Z[0]==W[0]:!W)?NaN:Z&&Z[0]==0||!W?H*0:H/0);for(u?(p=1,l=n.e-i.e):(u=wt,p=$,l=We(n.e/p)-We(i.e/p)),N=W.length,K=Z.length,b=new F(H),P=b.d=[],m=0;W[m]==(Z[m]||0);m++);if(W[m]>(Z[m]||0)&&l--,s==null?(T=s=F.precision,o=F.rounding):a?T=s+(n.e-i.e)+1:T=s,T<0)P.push(1),y=!0;else{if(T=T/p+2|0,m=0,N==1){for(d=0,W=W[0],T++;(m<K||d)&&T--;m++)S=d*u+(Z[m]||0),P[m]=S/W|0,d=S%W|0;y=d||m<K}else{for(d=u/(W[0]+1)|0,d>1&&(W=r(W,d,u),Z=r(Z,d,u),N=W.length,K=Z.length),x=N,A=Z.slice(0,N),h=A.length;h<N;)A[h++]=0;U=W.slice(),U.unshift(0),O=W[0],W[1]>=u/2&&++O;do d=0,c=e(W,A,N,h),c<0?(I=A[0],N!=h&&(I=I*u+(A[1]||0)),d=I/O|0,d>1?(d>=u&&(d=u-1),f=r(W,d,u),g=f.length,h=A.length,c=e(f,A,g,h),c==1&&(d--,t(f,N<g?U:W,g,u))):(d==0&&(c=d=1),f=W.slice()),g=f.length,g<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(W,A,N,h),c<1&&(d++,t(A,N<h?U:W,h,u))),h=A.length):c===0&&(d++,A=[0]),P[m++]=d,c&&A[0]?A[h++]=Z[x]||0:(A=[Z[x]],h=1);while((x++<K||A[0]!==void 0)&&T--);y=A[0]!==void 0}P[0]||P.shift()}if(p==1)b.e=l,Is=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;b.e=m+l*p-1,Y(b,a?s+b.e+1:s,o,y)}return b}}();function Y(r,e,t,n){var i,s,o,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(s=e-i,s<0)s+=$,o=e,l=m[d=0],u=l/Re(10,i-o-1)%10|0;else if(d=Math.ceil((s+1)/$),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,s%=$,o=s-$+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;s%=$,o=s-$+i,u=o<0?0:l/Re(10,i-o-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(o<0?l:l%Re(10,i-o-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(s>0?o>0?l/Re(10,i-o):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Re(10,($-e%$)%$),r.e=-e||0):m[0]=r.e=0,r;if(s==0?(m.length=d,a=1,d--):(m.length=d+1,a=Re(10,$-s),m[d]=o>0?(l/Re(10,i-o)%Re(10,o)|0)*a:0),c)for(;;)if(d==0){for(s=1,o=m[0];o>=10;o/=10)s++;for(o=m[0]+=a,a=1;o>=10;o/=10)a++;s!=a&&(r.e++,m[0]==wt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=wt)break;m[d--]=0,a=1}for(s=m.length;m[--s]===0;)m.pop()}return ne&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Bt(r,e,t){if(!r.isFinite())return Os(r);var n,i=r.e,s=Ve(r.d),o=s.length;return e?(t&&(n=t-o)>0?s=s.charAt(0)+"."+s.slice(1)+zt(n):o>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(r.e<0?"e":"e+")+r.e):i<0?(s="0."+zt(-i-1)+s,t&&(n=t-o)>0&&(s+=zt(n))):i>=o?(s+=zt(i+1-o),t&&(n=t-i-1)>0&&(s=s+"."+zt(n))):((n=i+1)<o&&(s=s.slice(0,n)+"."+s.slice(n)),t&&(n=t-o)>0&&(i+1===o&&(s+="."),s+=zt(n))),s}function Er(r,e){var t=r[0];for(e*=$;t>=10;t/=10)e++;return e}function _r(r,e,t){if(e>pc)throw ne=!0,t&&(r.precision=t),Error(xs);return Y(new r(Nr),e,1,!0)}function gt(r,e,t){if(e>_i)throw Error(xs);return Y(new r(Mr),e,t,!0)}function Cs(r){var e=r.length-1,t=e*$+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function zt(r){for(var e="";r--;)e+="0";return e}function Rs(r,e,t,n){var i,s=new r(1),o=Math.ceil(n/$+4);for(ne=!1;;){if(t%2&&(s=s.times(e),hs(s.d,o)&&(i=!0)),t=We(t/2),t===0){t=s.d.length-1,i&&s.d[t]===0&&++s.d[t];break}e=e.times(e),hs(e.d,o)}return ne=!0,s}function ks(r){return r.d[r.d.length-1]&1}function Ls(r,e,t){for(var n,i=new r(e[0]),s=0;++s<e.length;)if(n=new r(e[s]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Vi(r,e){var t,n,i,s,o,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(ne=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Re(2,m))/Math.LN10*2+5|0,u+=n,t=s=o=new d(1),d.precision=u;;){if(s=Y(s.times(r),u,1),t=t.times(++l),a=o.plus(we(s,t,u,1)),Ve(a.d).slice(0,u)===Ve(o.d).slice(0,u)){for(i=m;i--;)o=Y(o.times(o),u,1);if(e==null)if(c<3&&En(o.d,u-n,p,c))d.precision=u+=10,t=s=a=new d(1),l=0,c++;else return Y(o,d.precision=y,p,ne=!0);else return d.precision=y,o}o=a}}function Yt(r,e){var t,n,i,s,o,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,b=f.constructor,P=b.rounding,A=b.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new b(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(ne=!1,l=A):l=e,b.precision=l+=y,t=Ve(g),n=t.charAt(0),Math.abs(s=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Ve(f.d),n=t.charAt(0),p++;s=f.e,n>1?(f=new b("0."+t),s++):f=new b(n+"."+t.slice(1))}else return c=_r(b,l+2,A).times(s+""),f=Yt(new b(n+"."+t.slice(1)),l-y).plus(c),b.precision=A,e==null?Y(f,A,P,ne=!0):f;for(m=f,u=o=f=we(f.minus(1),f.plus(1),l,1),d=Y(f.times(f),l,1),i=3;;){if(o=Y(o.times(d),l,1),c=u.plus(we(o,new b(i),l,1)),Ve(c.d).slice(0,l)===Ve(u.d).slice(0,l))if(u=u.times(2),s!==0&&(u=u.plus(_r(b,l+2,A).times(s+""))),u=we(u,new b(p),l,1),e==null)if(En(u.d,l-y,P,a))b.precision=l+=y,c=o=f=we(m.minus(1),m.plus(1),l,1),d=Y(f.times(f),l,1),i=a=1;else return Y(u,b.precision=A,P,ne=!0);else return b.precision=A,u;u=c,i+=2}}function Os(r){return String(r.s*r.s/0)}function Ei(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%$,t<0&&(n+=$),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=$;n<i;)r.d.push(+e.slice(n,n+=$));e=e.slice(n),n=$-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),ne&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function yc(r,e){var t,n,i,s,o,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ks.test(e))return Ei(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(lc.test(e))t=16,e=e.toLowerCase();else if(cc.test(e))t=2;else if(mc.test(e))t=8;else throw Error(jt+e);for(s=e.search(/p/i),s>0?(u=+e.slice(s+1),e=e.substring(2,s)):e=e.slice(2),s=e.indexOf("."),o=s>=0,n=r.constructor,o&&(e=e.replace(".",""),a=e.length,s=a-s,i=Rs(n,new n(t),s,s*2)),c=Or(e,t,wt),l=c.length-1,s=l;c[s]===0;--s)c.pop();return s<0?new n(r.s*0):(r.e=Er(c,l),r.d=c,ne=!1,o&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Re(2,u):Fn.pow(2,u))),ne=!0,r)}function bc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Tn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Fr(5,t)),e=Tn(r,2,e,e);for(var i,s=new r(5),o=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(s.plus(i.times(o.times(i).minus(a))));return e}function Tn(r,e,t,n,i){var s,o,a,u,c=1,l=r.precision,m=Math.ceil(l/$);for(ne=!1,u=t.times(t),a=new r(n);;){if(o=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(o):n.minus(o),n=we(o.times(u),new r(e++*e++),l,1),o=a.plus(n),o.d[m]!==void 0){for(s=m;o.d[s]===a.d[s]&&s--;);if(s==-1)break}s=a,a=n,n=o,o=s,c++}return ne=!0,o.d.length=m+1,o}function Fr(r,e){for(var t=r;--e;)t*=r;return t}function Ns(r,e){var t,n=e.s<0,i=gt(r,r.precision,1),s=i.times(.5);if(e=e.abs(),e.lte(s))return _t=n?4:1,e;if(t=e.divToInt(i),t.isZero())_t=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(s))return _t=ks(t)?n?2:3:n?4:1,e;_t=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Fi(r,e,t,n){var i,s,o,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(Ze(t,1,Qt),n===void 0?n=p.rounding:Ze(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Os(r);else{for(l=Bt(r),o=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,o>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-o,d.d=Or(Bt(d),10,i),d.e=d.d.length),m=Or(l,10,i),s=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(o<0?s--:(r=new p(r),r.d=m,r.e=s,r=we(r,d,t,n,0,i),m=r.d,s=r.e,c=Is),o=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(o!==void 0||c)&&(n===0||n===(r.s<0?3:2)):o>a||o===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++s,m.unshift(1));for(u=m.length;!m[u-1];--u);for(o=0,l="";o<u;o++)l+=Ni.charAt(m[o]);if(y){if(u>1)if(e==16||e==8){for(o=e==16?4:3,--u;u%o;u++)l+="0";for(m=Or(l,i,e),u=m.length;!m[u-1];--u);for(o=1,l="1.";o<u;o++)l+=Ni.charAt(m[o])}else l=l.charAt(0)+"."+l.slice(1);l=l+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)l="0"+l;l="0."+l}else if(++s>u)for(s-=u;s--;)l+="0";else s<u&&(l=l.slice(0,s)+"."+l.slice(s))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function hs(r,e){if(r.length>e)return r.length=e,!0}function gc(r){return new this(r).abs()}function wc(r){return new this(r).acos()}function Ac(r){return new this(r).acosh()}function Pc(r,e){return new this(r).plus(e)}function kc(r){return new this(r).asin()}function hc(r){return new this(r).asinh()}function Tc(r){return new this(r).atan()}function Ic(r){return new this(r).atanh()}function xc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,s=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=gt(this,s,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?gt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=gt(this,s,1).times(.5),t.s=r.s):e.s<0?(this.precision=s,this.rounding=1,t=this.atan(we(r,e,s,1)),e=gt(this,s,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,s,1)),t}function Bc(r){return new this(r).cbrt()}function Sc(r){return Y(r=new this(r),r.e+1,2)}function Kc(r,e,t){return new this(r).clamp(e,t)}function Cc(r){if(!r||typeof r!="object")throw Error(Vr+"Object expected");var e,t,n,i=r.defaults===!0,s=["precision",1,Qt,"rounding",0,8,"toExpNeg",-hn,0,"toExpPos",0,hn,"maxE",0,hn,"minE",-hn,0,"modulo",0,9];for(e=0;e<s.length;e+=3)if(t=s[e],i&&(this[t]=Mi[t]),(n=r[t])!==void 0)if(We(n)===n&&n>=s[e+1]&&n<=s[e+2])this[t]=n;else throw Error(jt+t+": "+n);if(t="crypto",i&&(this[t]=Mi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Bs);else this[t]=!1;else throw Error(jt+t+": "+n);return this}function Rc(r){return new this(r).cos()}function Lc(r){return new this(r).cosh()}function Ms(r){var e,t,n;function i(s){var o,a,u,c=this;if(!(c instanceof i))return new i(s);if(c.constructor=i,Ts(s)){c.s=s.s,ne?!s.d||s.e>i.maxE?(c.e=NaN,c.d=null):s.e<i.minE?(c.e=0,c.d=[0]):(c.e=s.e,c.d=s.d.slice()):(c.e=s.e,c.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){c.s=1/s<0?-1:1,c.e=0,c.d=[0];return}if(s<0?(s=-s,c.s=-1):c.s=1,s===~~s&&s<1e7){for(o=0,a=s;a>=10;a/=10)o++;ne?o>i.maxE?(c.e=NaN,c.d=null):o<i.minE?(c.e=0,c.d=[0]):(c.e=o,c.d=[s]):(c.e=o,c.d=[s]);return}else if(s*0!==0){s||(c.s=NaN),c.e=NaN,c.d=null;return}return Ei(c,s.toString())}else if(u!=="string")throw Error(jt+s);return(a=s.charCodeAt(0))===45?(s=s.slice(1),c.s=-1):(a===43&&(s=s.slice(1)),c.s=1),Ks.test(s)?Ei(c,s):yc(c,s)}if(i.prototype=M,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Cc,i.clone=Ms,i.isDecimal=Ts,i.abs=gc,i.acos=wc,i.acosh=Ac,i.add=Pc,i.asin=kc,i.asinh=hc,i.atan=Tc,i.atanh=Ic,i.atan2=xc,i.cbrt=Bc,i.ceil=Sc,i.clamp=Kc,i.cos=Rc,i.cosh=Lc,i.div=Oc,i.exp=Nc,i.floor=Mc,i.hypot=_c,i.ln=Vc,i.log=Ec,i.log10=vc,i.log2=Fc,i.max=Dc,i.min=Wc,i.mod=qc,i.mul=Uc,i.pow=Gc,i.random=Xc,i.round=zc,i.sign=Yc,i.sin=jc,i.sinh=Qc,i.sqrt=Hc,i.sub=Zc,i.sum=$c,i.tan=Jc,i.tanh=el,i.trunc=tl,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Oc(r,e){return new this(r).div(e)}function Nc(r){return new this(r).exp()}function Mc(r){return Y(r=new this(r),r.e+1,3)}function _c(){var r,e,t=new this(0);for(ne=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return ne=!0,new this(1/0);t=e}return ne=!0,t.sqrt()}function Ts(r){return r instanceof Fn||r&&r.toStringTag===Ss||!1}function Vc(r){return new this(r).ln()}function Ec(r,e){return new this(r).log(e)}function Fc(r){return new this(r).log(2)}function vc(r){return new this(r).log(10)}function Dc(){return Ls(this,arguments,"lt")}function Wc(){return Ls(this,arguments,"gt")}function qc(r,e){return new this(r).mod(e)}function Uc(r,e){return new this(r).mul(e)}function Gc(r,e){return new this(r).pow(e)}function Xc(r){var e,t,n,i,s=0,o=new this(1),a=[];if(r===void 0?r=this.precision:Ze(r,1,Qt),n=Math.ceil(r/$),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));s<n;)i=e[s],i>=429e7?e[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);s<n;)i=e[s]+(e[s+1]<<8)+(e[s+2]<<16)+((e[s+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,s):(a.push(i%1e7),s+=4);s=n/4}else throw Error(Bs);else for(;s<n;)a[s++]=Math.random()*1e7|0;for(n=a[--s],r%=$,n&&r&&(i=Re(10,$-r),a[s]=(n/i|0)*i);a[s]===0;s--)a.pop();if(s<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=$)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<$&&(t-=$-n)}return o.e=t,o.d=a,o}function zc(r){return Y(r=new this(r),r.e+1,this.rounding)}function Yc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function jc(r){return new this(r).sin()}function Qc(r){return new this(r).sinh()}function Hc(r){return new this(r).sqrt()}function Zc(r,e){return new this(r).sub(e)}function $c(){var r=0,e=arguments,t=new this(e[r]);for(ne=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return ne=!0,Y(t,this.precision,this.rounding)}function Jc(r){return new this(r).tan()}function el(r){return new this(r).tanh()}function tl(r){return Y(r=new this(r),r.e+1,1)}M[Symbol.for("nodejs.util.inspect.custom")]=M.toString;M[Symbol.toStringTag]="Decimal";var Fn=M.constructor=Ms(Mi);Nr=new Fn(Nr);Mr=new Fn(Mr);var V=Fn;import{PublicKey as Ui}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as nl}from"@solana/spl-token";import{PublicKey as Te,SystemProgram as _s,SYSVAR_RENT_PUBKEY as rl}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var vi=[k({pubkey:nl,isWritable:!1}),k({pubkey:_s.programId,isWritable:!1}),k({pubkey:rl,isWritable:!1})];function Di({publicKey:r,transformSol:e}){let t=Wi(r.toString());if(t instanceof Te)return e&&t.equals(Le)?J:t;if(e&&t.toString()===Le.toBase58())return J;if(typeof t=="string"){if(t===Te.default.toBase58())return Te.default;try{return new Te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wi(r){try{return new Te(r)}catch{return r}}var In=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vs=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$e=new Te("SysvarRent111111111111111111111111111111111"),qi=new Te("SysvarC1ock11111111111111111111111111111111"),xn=new Te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),vr=new Te("Sysvar1nstructions1111111111111111111111111"),Dr=_s.programId,cp=new Te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),lp=new Te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),mp=new Te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),dp=new Te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),pp=new Te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),fp=new Te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),yp=new Te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),bp=new Te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),gp=new Te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),wp=new Te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ap=new Te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Te("So11111111111111111111111111111111111111112"),Le=Te.default;function it(r){return Di({publicKey:r,transformSol:!0})}import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var St={chainId:101,address:il.default.toBase58(),programId:Es.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Oe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Es.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Gi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:s=!1,isToken2022:o=!1}){if(e===Le.toBase58()||e instanceof Ui&&Le.equals(e)){this.decimals=Oe.decimals,this.symbol=Oe.symbol,this.name=Oe.name,this.mint=new Ui(Oe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=s?Ui.default:Di({publicKey:e}),this.isToken2022=o}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ie=Gi;Ie.WSOL=new Gi(D(C({},Oe),{mint:Oe.address}));import qr from"big.js";import al from"bn.js";import ul from"decimal.js-light";import ol from"toformat";var sl=ol,vn=sl;var Wr=ae("module/fraction"),Xi=vn(qr),Dn=vn(ul),cl={[0]:Dn.ROUND_DOWN,[1]:Dn.ROUND_HALF_UP,[2]:Dn.ROUND_UP},ll={[0]:qr.roundDown,[1]:qr.roundHalfUp,[2]:qr.roundUp},de=class{constructor(e,t=new al(1)){this.numerator=j(e),this.denominator=j(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new de(this.denominator,this.numerator)}add(e){let t=e instanceof de?e:new de(j(e));return this.denominator.eq(t.denominator)?new de(this.numerator.add(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof de?e:new de(j(e));return this.denominator.eq(t.denominator)?new de(this.numerator.sub(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof de?e:new de(j(e));return new de(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof de?e:new de(j(e));return new de(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Wr.logWithError(`${e} is not an integer.`),e<=0&&Wr.logWithError(`${e} is not positive.`),Dn.set({precision:e+1,rounding:cl[n]});let i=new Dn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Wr.logWithError(`${e} is not an integer.`),e<0&&Wr.logWithError(`${e} is negative.`),Xi.DP=e,Xi.RM=ll[n]||1,new Xi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var dl=ae("Raydium_price"),Je=class extends de{constructor(t){let{baseToken:n,quoteToken:i,numerator:s,denominator:o}=t;super(s,o);this.baseToken=n,this.quoteToken=i,this.scalar=new de(zi(n.decimals),zi(i.decimals))}get raw(){return new de(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&&dl.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,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Yi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ur=Yi;Ur.SOL=new Yi(St);import pl from"bn.js";var Fs=new de(new pl(100)),je=class extends de{toSignificant(e=5,t,n){return this.mul(Fs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Fs).toFixed(e,t,n)}};var mt=new et(0),Ds=new et(1),bf=new et(2),gf=new et(3),wf=new et(5),ji=new et(10),Af=new et(100),Pf=new et(1e3),kf=new et(1e4),vs=9007199254740991;function j(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof et)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new et(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=vs||r<=-vs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new et(String(r))):typeof r=="bigint"?new et(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new et(0))}function zi(r){return ji.pow(j(r))}function Gr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var yl=ae("Raydium_amount"),qs=vn(fl);function bl(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):yl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ae=class extends de{constructor(t,n,i=!0,s){let o=new Xr(0),a=ji.pow(new Xr(t.decimals));if(i)o=j(n);else{let u=new Xr(0),c=new Xr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=bl(n.toString(),t.decimals);u=j(l),c=j(m)}u=u.mul(a),o=u.add(c)}super(o,a);this.logger=ae(s||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return qs.DP=this.token.decimals,new qs(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ws(r){return typeof r=="object"&&r!==null&&![Ie,Ae,gl,de,wl,Je,je].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Wi(r):Array.isArray(r)?r.map(e=>fe(e)):Ws(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as Gn,Transaction as Xn,TransactionMessage as zn,VersionedTransaction as Yn}from"@solana/web3.js";import Sl from"axios";var E={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Gs,ComputeBudgetProgram as Us,Transaction as zr,TransactionMessage as Al,Keypair as Xs,VersionedTransaction as zs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pl}from"@solana/spl-token";var Vt=ae("Raydium_txUtil"),Ys=1644;function Yr(r){let e=[],t=[];return r.microLamports&&(e.push(Us.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(Us.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Bn(r,e){var n,i;let t=e!=null?e:"confirmed";try{return((i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function jr(r,e){r.length<1&&Vt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Vt.logWithError(`no signers provided:, ${e.toString()}`);let t=new zr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ys}catch{return!1}}async function js(r,e,t,n=!0){let i=new Gs("RaydiumSimuLateTransaction11111111111111111"),s=[],o=new zr;o.feePayer=i;for(let c of e)jr([...o.instructions,c],[i])||(s.push(o),o=new zr,o.feePayer=i),o.add(c);o.instructions.length>0&&s.push(o);let a=[];try{if(a=await kl(r,s,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Vt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Vt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Vt.debug("filteredLog:",u),l.length||Vt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Qs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Vt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Et(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Vt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=Gs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function kl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),s=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),p=c._serialize(m).toString("base64");s.push(p)}let o=s.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(o.length/u);c++)a.push(o.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Vt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Wn({instructions:r,payer:e,signers:t}){return jr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xs.generate().publicKey.toString()}){let s=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zs(s).serialize()).toString("base64").length<Ys}catch{return!1}}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function sn(r){let e=[];return r.forEach(t=>{t instanceof zr&&(t.recentBlockhash||(t.recentBlockhash=Pl.toBase58()),t.feePayer||(t.feePayer=Xs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zs&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as $s,AddressLookupTableAccount as Qr}from"@solana/web3.js";import{PublicKey as Hs}from"@solana/web3.js";import{MINT_SIZE as Tl,TOKEN_PROGRAM_ID as Il,getTransferFeeConfig as xl,unpackMint as Bl}from"@solana/spl-token";var Qi=ae("Raydium_accountInfo_util");async function At(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:s=100}=C({batchRequest:!1},t),o=Hi(e,s),a=new Array(o.length).fill([]);if(n){let u=o.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Hi(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Qi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:g,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&Qi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new Hs(g),rentEpoch:b}}return null})))}else try{a=await Promise.all(o.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Qi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function tt(r,e,t){let n=await At(r,e.map(i=>i.pubkey),t);return e.map((i,s)=>D(C({},i),{accountInfo:n[s]}))}async function Zs({connection:r,mints:e,config:t}){var s,o,a;if(e.length===0)return{};let n=await tt(r,e.map(u=>({pubkey:it(u)})),t),i={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Tl){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=Bl(u.pubkey,u.accountInfo,(s=u.accountInfo)==null?void 0:s.owner);i[u.pubkey.toString()]=D(C({},c),{programId:((o=u.accountInfo)==null?void 0:o.owner)||Il,feeConfig:(a=xl(c))!=null?a:void 0})}return i[Hs.default.toBase58()]=i[J.toBase58()],i}async function Zi({connection:r,address:e}){let t=await At(r,[...new Set(e.map(i=>i.toString()))].map(i=>new $s(i))),n={};for(let i=0;i<e.length;i++){let s=t[i],o=e[i];if(!s)continue;let a=new Qr({key:o,state:Qr.deserialize(s.data)});n[o.toString()]=a,Hr[o.toString()]=a}return n}var Hr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Qr({key:new $s("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Qr.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 Zr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Sl.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Yr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:s=[],lookupTableAddress:o=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...o.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){let t=new Xn;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:i,skipPreflight:s=!0}=n||{},o=i!=null?i:await Bn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=o,this.signers.length&&t.sign(...this.signers),sn([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Gn(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:s}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),s=t.filter(c=>c.transaction.instructions.length>0),o=[i,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:o,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 Bn(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let g=[];for(let b of o){let P=await Gn(this.connection,b,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});g.push(P)}return{txIds:g,signedTxs:o}}return{txIds:await await Promise.all(o.map(async(g,b)=>(g.recentBlockhash=y,await Gn(this.connection,g,a[b].find(P=>P.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer],{skipPreflight:p})))),signedTxs:o}}if(this.signAllTransactions){let g=o.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));sn(g);let b=await this.signAllTransactions(g);if(l){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:p});A.push({txId:I,status:"sent",signedTx:b[P]}),m==null||m([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),m==null||m([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:p});P.push(h)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,s=he(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),o=C(C({},this.cluster==="devnet"?{}:Hr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)o[p]===void 0&&u.push(new Un(p));let c=await Zi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))o[p]=y;let l=new zn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Bn(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(o)),m=new Yn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var g;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),sn([m]),(g=this.owner)!=null&&g.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let b=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:b},"confirmed"),{txId:b,signedTx:m}}if(this.signAllTransactions){let b=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(b[0],{skipPreflight:f}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),s=t.filter(c=>c.builder.instructions.length>0),o=[i,...s.map(c=>c.transaction)],a=[this.signers,...s.map(c=>c.signers)],u=[...this.instructionTypes,...s.map(c=>c.instructionTypes).flat()];return o.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:o,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&o.forEach(f=>f.message.recentBlockhash=d),sn(o),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:g}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(o.forEach((b,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||b.sign([this.owner.signer])}),l){let b=[];for(let P of o){let A=await this.connection.sendTransaction(P,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:A},"confirmed"),b.push(A)}return{txIds:b,signedTxs:o}}return{txIds:await Promise.all(o.map(async b=>{let P=await this.connection.sendTransaction(b,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:g,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:o}}if(this.signAllTransactions){let f=await this.signAllTransactions(o);if(l){let g=0,b=[],P=async()=>{if(!f[g])return;let A=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push({txId:A,status:"sent",signedTx:f[g]}),m==null||m([...b]),g++,this.connection.onSignature(A,h=>{let I=b.findIndex(T=>T.txId===A);I>-1&&(b[I].status=h.err?"error":"success"),m==null||m([...b]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let g=[];for(let b=0;b<f.length;b+=1){let P=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push(P)}return{txIds:g,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=he(c,["computeBudgetConfig"]),i=t?Yr(t):{instructions:[],instructionTypes:[]},s=this.signers.reduce((l,m)=>D(C({},l),{[m.publicKey.toBase58()]:m}),{}),o=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Wn({instructions:d,payer:this.feePayer,signers:y})||Wn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Wn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?o.push(new Xn().add(...i.instructions,...u)):o.push(new Xn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(f=>s[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>s[d]).filter(d=>d!==void 0);Wn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?o.push(new Xn().add(...i.instructions,...u)):o.push(new Xn().add(...u)),a.push(m)}return o.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:o,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Bn(this.connection,this.blockhashCommitment);if(o.forEach(async(b,P)=>{b.recentBlockhash=f,a[P].length&&b.sign(...a[P])}),sn(o),(g=this.owner)!=null&&g.isKeyPair){if(m){let b=[];for(let P of o){let A=await Gn(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});b.push(A)}return{txIds:b,signedTxs:o}}return{txIds:await Promise.all(o.map(async(b,P)=>await Gn(this.connection,b,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:o}}if(this.signAllTransactions){let b=await this.signAllTransactions(o);if(m){let P=0,A=[],h=async()=>{if(!b[P])return;let I=await this.connection.sendRawTransaction(b[P].serialize(),{skipPreflight:y});A.push({txId:I,status:"sent",signedTx:b[P]}),d==null||d([...A]),P++,this.connection.onSignature(I,T=>{let S=A.findIndex(x=>x.txId===I);S>-1&&(A[S].status=T.err?"error":"success"),d==null||d([...A]),T.err||h()},"processed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:A.map(I=>I.txId),signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let h=await this.connection.sendRawTransaction(b[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=g,s=he(g,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),o=C(C({},this.cluster==="devnet"?{}:Hr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let b of a)o[b]===void 0&&u.push(new Un(b));let c=await Zi({connection:this.connection,address:u});for(let[b,P]of Object.entries(c))o[b]=P;let l=t?Yr(t):{instructions:[],instructionTypes:[]},m=await Bn(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,P)=>D(C({},b),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(b=>{let P=[...f,b],A=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:o})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:o}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let h={};for(let I of[...new Set(a)])o[I]!==void 0&&(h[I]=o[I]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:o,recentBlockhash:m})){let I=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(o));p.push(new Yn(I))}else{let I=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(o));p.push(new Yn(I))}y.push(Array.from(new Set(f.map(I=>I.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(I=>d[I]).filter(I=>I!==void 0)),f=[b]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:o,recentBlockhash:m})){let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(o));p.push(new Yn(A))}else{let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(o));p.push(new Yn(A))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async b=>{var T;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:I=!0}=b||{};if(p.map(async(S,x)=>{y[x].length&&S.sign(y[x]),h&&(S.message.recentBlockhash=h)}),sn(p),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:S,blockhash:x}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((K,O)=>{y[O].find(N=>N.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let O of p){let N=await this.connection.sendTransaction(O,{skipPreflight:I}),{lastValidBlockHeight:U,blockhash:F}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:F,lastValidBlockHeight:U,signature:N},"confirmed"),K.push(N)}return{txIds:K,signedTxs:p}}return{txIds:await Promise.all(p.map(async K=>{let O=await this.connection.sendTransaction(K,{skipPreflight:I});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:S,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(P){let x=0,K=[],O=async()=>{if(!S[x])return;let N=await this.connection.sendTransaction(S[x],{skipPreflight:I});K.push({txId:N,status:"sent",signedTx:S[x]}),A==null||A([...K]),x++,this.connection.onSignature(N,U=>{let F=K.findIndex(H=>H.txId===N);F>-1&&(K[F].status=U.err?"error":"success"),A==null||A([...K]),U.err||O()},"processed"),this.connection.getSignatureStatus(N)};return O(),{txIds:[],signedTxs:S}}else{let x=[];for(let K=0;K<S.length;K+=1){let O=await this.connection.sendTransaction(S[K],{skipPreflight:I});x.push(O)}return{txIds:x,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var Pt=class{constructor(e){this._owner=e}get publicKey(){return Pt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return Pt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return Pt.isKeyPair(this._owner)}get isPublicKey(){return Pt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!Pt.isKeyPair(e)}};function Hi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Js=r=>typeof r=="number";function ea(r,e,t){let n=Js(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ta(r,e,t){let n=Js(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as le}from"@solana/web3.js";var na=new le("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ra=new le("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Qn=new le("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ly=new le("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Oy=new le("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),$i=new le("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$r=new le("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ny=new le("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ia=new le("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),My=new le("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),_y=new le("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Kl=new le("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Cl=new le("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Rl=new le("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ll=new le("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Vy=new le("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ey=new le("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fy=new le("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ol=new le("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Nl=new le("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Ml=new le("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Hn={IDO_PROGRAM_ID_V1:Kl,IDO_PROGRAM_ID_V2:Cl,IDO_PROGRAM_ID_V3:Rl,IDO_PROGRAM_ID_V4:Ll};var vy={SERUM_MARKET:le.default,OPENBOOK_MARKET:new le("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:le.default,FarmV3:new le("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new le("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new le("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new le("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new le("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new le("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new le("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ol,CREATE_CPMM_POOL_AUTH:Nl,CREATE_CPMM_POOL_FEE_ACC:Ml,FEE_DESTINATION_ID:new le("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as _l}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vl}from"@solana/spl-token";function ye(r,e,t){return oe([r.toBuffer(),(t!=null?t:Vl).toBuffer(),e.toBuffer()],new _l("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import kt from"bn.js";var Zn=1e4;function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(C({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),s=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,o=new kt(s.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(s.transferFeeBasisPoints===Zn){let u=new kt(s.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=$n(r.mul(new kt(Zn)),new kt(Zn-s.transferFeeBasisPoints)),c=new kt(s.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=$n(l.mul(new kt(s.transferFeeBasisPoints)),new kt(Zn)),d=m.gt(o)?o:m;return{amount:l,fee:d,expirationTime:a}}else{let u=$n(r.mul(new kt(s.transferFeeBasisPoints)),new kt(Zn)),c=u.gt(o)?o:u;return{amount:r,fee:c,expirationTime:a}}}function Kt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function $n(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new kt(0))?t.add(new kt(1)):t}var Ee={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"},mb=C({},Ee);var oa="ray_tab_hash",Ji="ray_req_hash",El=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(oa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(oa,r)),r},Jr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=he(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(o=>o());let s=JSON.parse(localStorage.getItem(Ji)||"[]").slice(0,r-1);e&&s.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),s.unshift(D(C({},t),{time:Date.now(),session:El()}));try{localStorage.setItem(Ji,JSON.stringify(s))}catch{if(e){let o=!1,a=JSON.stringify(t.data).substring(0,100);for(s[0].data=a+(a.length>100?"...":"");!o;){s.pop();let u=JSON.stringify(t.data).substring(0,100);s[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Ji,JSON.stringify(s)),o=!0}catch{o=!1}}return new Promise(u=>u())}return Jr(D(C({},t),{logCount:r,removeLastLog:!0}))}};var ei=ae("Raydium_Api"),eo=new Map;var ti=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:s}){this.cluster=e,this.urlConfigs=s||{},this.logCount=i||1e3,this.api=sa.create({baseURL:this.urlConfigs.BASE_HOST||Ee.BASE_HOST,timeout:t}),this.api.interceptors.request.use(o=>{let{method:a,baseURL:u,url:c}=o;return ei.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),o},o=>(ei.error("Request failed"),Promise.reject(o))),this.api.interceptors.response.use(o=>{let{config:a,data:u,status:c}=o,{method:l,baseURL:m,url:d}=a;return n&&Jr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),ei.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},o=>{let{config:a,response:u={}}=o,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&Jr({status:c,url:`${m}${d}`,params:a.params,data:o.message,logCount:this.logCount}),ei.error(`${l.toUpperCase()} ${m}${d} ${c||o.message}`),Promise.reject(o)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ee.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ee.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await sa.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,s)=>i+s,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ee.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ee.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ee.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ee.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ee.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:s=0,pageSize:o=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ee.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${s}&pageSize=${o}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ee.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(o=>eo.has(o)?(n.push(eo.get(o)),!1):!0),s=[];return i.length&&(s=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ee.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),s.forEach(a=>{eo.set(a.id,a)})),n.concat(s)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:s="default",order:o="desc",page:a=1}=e,[u,c]=[t&&it(t).toBase58(),n&&n!=="undefined"?it(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ee.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${s}&sortType=${o}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Ee.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ee.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ee.CHECK_AVAILABILITY)).data}};var ni="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",aa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as mo,TOKEN_PROGRAM_ID as Jt,AccountLayout as Kn,TOKEN_2022_PROGRAM_ID as pm}from"@solana/spl-token";import{PublicKey as li,SystemProgram as fm}from"@solana/web3.js";var to=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),xe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(to(e))}logInfo(...e){this.logger.info(to(e))}logAndCreateError(...e){let t=to(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as am,createCloseAccountInstruction as um,createTransferInstruction as cm,TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";import{PublicKey as lm,SystemProgram as mm}from"@solana/web3.js";import dm from"bn.js";import{PublicKey as ka,Keypair as rm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as im}from"@solana/spl-token";import om from"bn.js";import{PublicKey as Hl}from"@solana/web3.js";import da,{isBN as pa}from"bn.js";import{bits as vl,BitStructure as Xb,blob as Dl,Blob as zb,cstr as Yb,f32 as jb,f32be as Qb,f64 as Hb,f64be as Zb,greedy as $b,Layout as Wl,ns64 as Jb,ns64be as eg,nu64 as ql,nu64be as tg,offset as ng,s16 as rg,s16be as ig,s24 as og,s24be as sg,s32 as Ul,s32be as ag,s40 as ug,s40be as cg,s48 as lg,s48be as mg,s8 as dg,seq as Gl,struct as pg,Structure as Xl,u16 as zl,u16be as fg,u24 as yg,u24be as bg,u32 as Yl,u32be as gg,u40 as wg,u40be as Ag,u48 as Pg,u48be as kg,u8 as jl,UInt as Ql,union as hg,Union as Tg,unionLayoutDiscriminator as Ig,utf8 as xg}from"@solana/buffer-layout";var ri=Wl,ua=Xl;var no=Ql;var ca=jl,Ct=zl;var ro=Yl;var la=ql;var Fe=Ul;var ma=Gl;var pe=Dl;var io=vl;var an=class extends ri{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new da(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new da(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},ii=class extends ri{constructor(t){super(8,t);this._lower=io(ro(),!1),this._upper=io(ro(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),s=this._upper.decode(t,n+this._lower.span);return C(C({},i),s)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function v(r){return new no(1,r)}function qe(r){return new no(4,r)}function w(r){return new an(8,!1,r)}function Q(r){return new an(16,!1,r)}function fa(r){return new an(1,!0,r)}function si(r){return new an(8,!0,r)}function ya(r){return new an(16,!0,r)}var oi=class extends ri{constructor(t,n,i,s){super(t.span,s);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new oi(pe(32),e=>new Hl(e),e=>e.toBuffer(),r)}function ve(r){return new oi(ca(),Zl,$l,r)}function Zl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function $l(r){return r?1:0}var oo=class extends ua{decode(e,t){return super.decode(e,t)}};function _(r,e,t){return new oo(r,e,t)}function G(r,e,t){let n,i=typeof e=="number"?e:pa(e)?e.toNumber():new Proxy(e,{get(s,o){if(!n){let a=Reflect.get(s,"count");n=pa(a)?a.toNumber():a,Reflect.set(s,"count",n)}return Reflect.get(s,o)},set(s,o,a){return o==="count"&&(n=a),Reflect.set(s,o,a)}});return ma(r,i,t)}var Ht=_([B("mint"),B("owner"),w("amount"),qe("delegateOption"),B("delegate"),v("state"),qe("isNativeOption"),w("isNative"),w("delegatedAmount"),qe("closeAuthorityOption"),B("closeAuthority")]);function Jl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function so(r,...e){if(!Jl(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function ao(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ba(r,e){so(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ui=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),ht=(r,e)=>r<<32-e|r>>>e;var Dg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function em(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function uo(r){return typeof r=="string"&&(r=em(r)),so(r),r}var ai=class{clone(){return this._cloneInto()}},Wg={}.toString;function ga(r){let e=n=>r().update(uo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function tm(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),s=BigInt(4294967295),o=Number(t>>i&s),a=Number(t&s),u=n?4:0,c=n?0:4;r.setUint32(e+u,o,n),r.setUint32(e+c,a,n)}var wa=(r,e,t)=>r&e^~r&t,Aa=(r,e,t)=>r&e^r&t^e&t,ci=class extends ai{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ui(this.buffer)}update(e){ao(this);let{view:t,buffer:n,blockLen:i}=this;e=uo(e);let s=e.length;for(let o=0;o<s;){let a=Math.min(i-this.pos,s-o);if(a===i){let u=ui(e);for(;i<=s-o;o+=i)this.process(u,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ao(this),ba(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:s}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>i-o&&(this.process(n,0),o=0);for(let m=o;m<i;m++)t[m]=0;tm(n,i-8,BigInt(this.length*8),s),this.process(n,0);let a=ui(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:s,destroyed:o,pos:a}=this;return e.length=i,e.pos=a,e.finished=s,e.destroyed=o,i%t&&e.buffer.set(n),e}};var nm=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]),Zt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),$t=new Uint32Array(64),co=class extends ci{constructor(){super(64,32,8,!1),this.A=Zt[0]|0,this.B=Zt[1]|0,this.C=Zt[2]|0,this.D=Zt[3]|0,this.E=Zt[4]|0,this.F=Zt[5]|0,this.G=Zt[6]|0,this.H=Zt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:s,F:o,G:a,H:u}=this;return[e,t,n,i,s,o,a,u]}set(e,t,n,i,s,o,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=s|0,this.F=o|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=ht(d,7)^ht(d,18)^d>>>3,f=ht(p,17)^ht(p,19)^p>>>10;$t[m]=f+$t[m-7]+y+$t[m-16]|0}let{A:n,B:i,C:s,D:o,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ht(a,6)^ht(a,11)^ht(a,25),p=l+d+wa(a,u,c)+nm[m]+$t[m]|0,f=(ht(n,2)^ht(n,13)^ht(n,22))+Aa(n,i,s)|0;l=c,c=u,u=a,a=o+p|0,o=s,s=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,s,o,a,u,c,l)}roundClean(){$t.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Pa=ga(()=>new co);var iw=ae("Raydium_Util");function ha({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:s,account:o}of t.value){let a=Ht.decode(o.data),{mint:u,amount:c}=a;n.push({publicKey:s,mint:u,amount:c,isAssociated:ye(r,u,o.owner).publicKey.equals(s),isNative:!1,programId:o.owner}),i.push({pubkey:s,accountInfo:a,programId:o.owner})}return e&&n.push({mint:ka.default,amount:new om(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ue({fromPublicKey:r,programId:e=im}){let t=rm.generate().publicKey.toBase58().slice(0,32);return{publicKey:sm(r,t,e),seed:t}}function sm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Pa(n);return new ka(i)}function lo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=Sn}=r;return am(t,e,n,i)}function Ft(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:s=Sn}=r;return um(e,t,i,n,s)}async function vt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:s,skipCloseAccount:o}=r,a=await e.getMinimumBalanceForRentExemption(Ht.span,n),u=j(t).add(new dm(a)),c=Ue({fromPublicKey:i,programId:Sn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[mm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Ht.span,programId:Sn}),lo({mint:new lm(Oe.address),tokenAccount:c.publicKey,owner:s,programId:Sn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:o?[]:[E.CloseAccount],endInstructions:o?[]:[Ft({tokenAccount:c.publicKey,payer:i,owner:s})]}}function Jn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:s=Sn}){return cm(r,e,t,BigInt(String(n)),i,s)}var er=class extends xe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ye(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=C(C({},{}),t),[s,o,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Jt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:pm},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ha({owner:this.scope.ownerPubKey,solAccountResp:s,tokenAccountResp:{context:o.context,value:[...o.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Jt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let s=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),o=this.getAssociatedTokenAccount(t,n);for(let a of s){let{publicKey:u}=a;if(u&&(!i||i&&o.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,g,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:s,owner:o,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new li(t.tokenProgram||Jt),m=this.getAssociatedTokenAccount(n,new li(l)),d=(a?[]:this.tokenAccountRawInfos).filter(P=>P.accountInfo.mint.equals(n)&&(!s||P.pubkey.equals(m))).sort((P,A)=>P.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(i===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(s){let P=mo(o,m,o,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(P),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&Kn.decode(A.data).mint.equals(n)&&Kn.decode(A.data).owner.equals(o)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(P),p.instructionTypes.push(E.CreateATA);if(n.equals(J)&&i.amount){let A=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),i.amount&&(p.instructions.push(Jn({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Jt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(Ft({owner:o,payer:i.payer||o,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let P=Ue({fromPublicKey:o,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(Kn.span),h=fm.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:P.seed,newAccountPubkey:P.publicKey,lamports:A+Number((b=(g=i.amount)==null?void 0:g.toString())!=null?b:0),space:Kn.span,programId:l});return p.instructions.push(h,lo({mint:n,tokenAccount:P.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(Ft({owner:o,payer:i.payer||o,tokenAccount:P.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:P.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Jt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let s=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,o=this.scope.ownerPubKey,a={};if(!s){let c=this.getAssociatedTokenAccount(t,n),l=await mo(o,c,o,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],s=c}return i&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Ft({owner:o,payer:o,tokenAccount:s,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:s,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:s,programId:o=Jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(s,o);if(new li(J).equals(s)){let p=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=mo(this.scope.ownerPubKey,d,this.scope.ownerPubKey,s,o);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Jt)&&Kn.decode(f.data).mint.equals(s)&&Kn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${s.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Jt,amount:s,useSOLBalance:o,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new li(J))&&o){let l=await this.handleTokenAccount({side:"in",amount:s||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=l,p=he(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:d}=m,p=he(m,["tokenAccount"]);u=d,c.addInstruction(p)}return C({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as _m}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Vm}from"@solana/web3.js";import{PublicKey as Ca}from"@solana/web3.js";var po=_([v("instruction")]),fo=_([v("instruction")]),ym=_([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Q("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),G(w(),15,"padding")]),bm=_([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),Q("perShareReward"),w("lastSlot"),w("perSlotReward")]),gm=_([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),Q("perShareRewardA"),w("perSlotRewardA"),v("option"),B("rewardVaultB"),pe(7),w("totalRewardB"),Q("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),wm=_([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Q("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),G(ym,5,"rewardInfos"),B("creator"),B(),G(w(),32,"padding")]),Ta=new Proxy(bm,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(C({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ia=new Proxy(gm,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(C({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),tr=new Proxy(wm,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(C({},i),{version:6,rewardInfos:i.rewardInfos.map(s=>{var o;return D(C({},s),{rewardType:((o=Object.entries(en).find(a=>String(a[1])===s.rewardType.toString()))!=null?o:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Am=_([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),yo=_([v("instruction"),w("nonce"),G(Am,5,"rewardTimeInfo")]),bo=_([v("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),go=_([v("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Vw=_([w("state"),B("id"),B("owner"),w("deposited"),G(w(),1,"rewardDebts")]),nr=_([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),1,"rewardDebts"),w(""),w("voteLockedBalance"),G(w(),15)]),Ew=_([w("state"),B("id"),B("owner"),w("deposited"),G(w(),2,"rewardDebts")]),xa=_([w("state"),B("id"),B("owner"),w("deposited"),G(Q(),2,"rewardDebts"),G(w(),17)]),Ba=_([w(),w("state"),B("id"),B("owner"),w("deposited"),G(Q(),5,"rewardDebts"),G(w(),16)]),Qe=_([v("instruction"),w("amount")]),Pm=_([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),fa("digitShift"),G(v(),7,"reserved1"),G(w(),7,"reserved2")]),Sa=_([pe(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),G(v(),32,"reserved1"),G(Pm,4,"votingMints"),si("timeOffset"),v("bump"),G(v(),7,"reserved2"),G(w(),11,"reserved3")]),km=_([si("startTime"),si("endTime"),v("kind"),G(v(),15,"reserved")]),hm=_([G(km,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),ve("isUsed"),ve("allowClawback"),v("votingMintConfigIdx"),G(v(),29,"reserved")]),Ka=_([pe(8),B("voterAuthority"),B("registrar"),G(hm,32,"deposits"),v("voterBump"),v("voterWweightRecordBump"),G(v(),94,"reserved")]);var Xw=ae("Raydium_farm_config"),Ra=new Ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),La=new Ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Oa={3:Ta,5:Ia,6:tr},Na={3:nr,5:xa,6:Ba},wo=r=>[3,5,6].indexOf(r)!==-1,Ao=r=>{var o;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,s={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(o=s[e])==null?void 0:o.call(s)},en={"Standard SPL":0,"Option tokens":1},dt={[na.toString()]:3,[ra.toString()]:5,[Qn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as xm,SYSVAR_CLOCK_PUBKEY as or,TransactionInstruction as Me}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Bm,TOKEN_PROGRAM_ID as ot,ASSOCIATED_TOKEN_PROGRAM_ID as Sm}from"@solana/spl-token";import mi from"bn.js";function Po(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function ko(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function ho(r,e){return oe([e.toBuffer()],r)}function To(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Io(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function xo(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var rr=ae("Raydium.farm.util");function ir({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Ge({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Ma=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function _a(r){return{isSet:new nt(1),rewardPerSecond:j(r.perSecond),rewardOpenTime:j(r.openTime),rewardEndTime:j(r.endTime),rewardType:j(en[r.rewardType])}}function Bo(r){return j(r.endTime).sub(j(r.openTime)).mul(j(r.perSecond))}function Cn(r){let e=Na[r];return e||rr.logWithError("invalid version",r),e}function Tm(r){let e=Oa[r];return e||rr.logWithError("invalid version",r),e}function Im(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new nt(t)))return r;let i=new nt(t).sub(r.lastSlot);r.lastSlot=new nt(t);for(let s of r.rewardInfos){if(e.amount.eq(new nt(0)))continue;let o=s.perSlotReward.mul(i);s.perShareReward=s.perShareReward.add(o.mul(new nt(10).pow(new nt(r.version===3?9:15))).div(e.amount)),s.totalReward=s.totalReward.add(o)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new nt(0)))continue;let s=nt.min(new nt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(s))continue;let a=s.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=s,!e.amount.eq(new nt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function uA({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let s=!1,o=!1,a=new nt(10),u=[];for(let d of e){let p=fe(d);p.version===6?o=!0:s=!0,u.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&u.push({pubkey:Ge({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let c={},l=await tt(r,u,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:g}of l){let b=f.toBase58();if(c[b]=C({},c[b]),y==="state"){let P=Tm(p);(!g||!g.data||g.data.length!==P.span)&&rr.logWithError(`invalid farm state account info, pools.id, ${d}`),c[b].state=P.decode(g.data)}else if(y==="lpVault")(!g||!g.data||g.data.length!==Ht.span)&&rr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),c[b].lpVault=Ht.decode(g.data);else if(y==="ledger"){let P=Cn(p);g&&g.data&&(g.data.length!==P.span&&rr.logWithError(`invalid farm ledger account info, ledger, ${d}`),c[b].ledger=P.decode(g.data))}}let m=o||s?await r.getSlot():0;for(let d of Object.keys(c))c[d]!==void 0&&(c[d].state=Im(c[d].state,c[d].lpVault,m,i));for(let[d,{state:p,ledger:y}]of Object.entries(c))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new nt(9)):a.pow(new nt(15)),g=p.rewardInfos.map((b,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(p.version===6?b.accRewardPerShare:b.perShareReward).div(f).sub(A)});c[d].wrapped=D(C({},c[d].wrapped),{pendingRewards:g})}return c}function cA(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ea(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ta(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function So(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let o=Sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(o===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:o,isInit:!1};let c=Ka.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===o);return c===-1?{index:o,isInit:!1}:{index:c,isInit:!0}}var Km=ae("Raydium_farm_instruction"),sr={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 di(r){let{version:e,id:t,ledger:n,programId:i,owner:s}=r,o={3:9,5:10}[e];o||Km.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(po.span);po.encode({instruction:o},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:s,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:xm,isWritable:!1})];return{instruction:new Me({programId:i,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Va(r){var n;let e=Buffer.alloc(yo.span);yo.encode({instruction:0,nonce:new mi(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...vi,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Le}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Me({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function Ea(r){let e=Buffer.alloc(fo.span);fo.encode({instruction:5},e);let t=[k({pubkey:ot,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Me({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Cm(r,e,t,n,i,s,o,a,u,c,l,m,d){let p=_([v("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let g=Buffer.from([...sr.voterStakeRegistryDeposit,...f]);return new Me({keys:y,programId:r,data:g})}function Rm(r,e,t,n){let i=_([]),s=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],o=Buffer.alloc(i.span);i.encode({},o);let a=Buffer.from([...sr.voterStakeRegistryUpdateVoterWeightRecord,...o]);return new Me({keys:s,programId:r,data:a})}function Lm(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([v("depositEntryIndex"),w("amount")]),g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},b);let P=Buffer.from([...sr.voterStakeRegistryWithdraw,...b]);return new Me({keys:g,programId:r,data:P})}function Om(r,e,t,n,i,s){let o=_([v("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(o.span);return o.encode({ins:23},u),new Me({keys:a,programId:r,data:u})}function Nm(r,e,t,n,i,s,o,a){let u=_([v("voterBump"),v("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:o,voterWeightRecordBump:a},l);let m=Buffer.from([...sr.voterStakeRegistryCreateVoter,...l]);return new Me({keys:c,programId:r,data:m})}function Mm(r,e,t,n,i,s,o,a,u,c,l,m){let d=_([v("depositEntryIndex"),v("kind"),v("option"),w("startTs"),qe("periods"),ve("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:Sm,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...sr.voterStakeRegistryCreateDepositEntry,...y]);return new Me({keys:p,programId:r,data:f})}async function BA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:s,owner:o,poolId:a,tokenProgram:u}){let c=Po(n,i,s).publicKey,l=Ge({programId:e,poolId:a,owner:o,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=nr.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new mi(0)))throw Error("user do not has new stake amount");let y=ko(e,a).publicKey,f=ho(e,a).publicKey,{publicKey:g,nonce:b}=To(n,c,o),P=ye(g,y,u).publicKey,{publicKey:A,nonce:h}=Io(n,c,o),I=xo(t,i,s,o).publicKey,T=[],S=ye(o,y,u).publicKey;if(await r.getAccountInfo(S)===null&&T.push(Bm(o,S,o,y)),await r.getAccountInfo(g)===null){let U=Om(t,i,o,s,o,I);T.push(U,Nm(n,c,g,A,o,o,b,h))}let{index:O,isInit:N}=await So(r,c,g,y);return N||T.push(Mm(n,c,g,P,o,o,y,O,0,void 0,0,!1)),T.push(Cm(n,c,g,P,S,o,l,a,y,f,e,O,p),Rm(n,c,g,A)),T}async function SA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:s,owner:o,poolId:a,tokenProgram:u}){let c=Po(n,i,s).publicKey,l=Ge({programId:e,poolId:a,owner:o,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=nr.decode(m.data);if(d.voteLockedBalance.eq(new mi(0)))throw Error("user has vote locked balance = 0");let p=ko(e,a).publicKey,y=ho(e,a).publicKey,{publicKey:f}=To(n,c,o),g=ye(f,p,u).publicKey,{publicKey:b}=Io(n,c,o),P=xo(t,i,s,o).publicKey,A=[],{index:h,isInit:I}=await So(r,c,f,p);if(!I)throw Error("deposit entry index check error");return A.push(Lm(n,c,f,o,P,b,g,ye(o,p,u).publicKey,l,a,p,y,e,h,d.voteLockedBalance)),A}function Ko({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let s=Buffer.alloc(bo.span);bo.encode({instruction:3,rewardReopenTime:j(i.openTime),rewardEndTime:j(i.endTime),rewardPerSecond:j(i.perSecond)},s);let o=[k({pubkey:ot,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Me({programId:n.programId,keys:o,data:s})}function Co({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let s=Buffer.alloc(go.span);go.encode({instruction:4,isSet:new mi(1),rewardPerSecond:j(i.perSecond),rewardOpenTime:j(i.openTime),rewardEndTime:j(i.endTime),rewardType:j(en[i.rewardType])},s);let o=[...vi,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Me({programId:t.programId,keys:o,data:s})}function KA(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:s,owner:o,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],d=Ge({programId:l,poolId:m,owner:o,version:n}),p=Buffer.alloc(Qe.span);Qe.encode({instruction:a,amount:u},p);let y=n===6?[k({pubkey:ot,isWritable:!1}),...c?[k({pubkey:un.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:d}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:d}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new ie(t.lpVault)}),k({pubkey:s[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:s[f]})),y.push(k({pubkey:new ie(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new ie(t.rewardInfos[f].vault)})),y.push(k({pubkey:s[f]}));return new Me({programId:l,keys:y,data:p})}function ar(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=Ge({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:2,amount:j(o)},l);let m=[k({pubkey:ot,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Me({programId:a,keys:m,data:l})}function ur(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:12,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function cr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function Fa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:3}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:10,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=Ge({programId:u,poolId:c,owner:s,version:5}),m=Buffer.alloc(Qe.span);Qe.encode({instruction:11,amount:j(o)},m);let d=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new ie(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:or,isWritable:!1}),k({pubkey:ot,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(k({pubkey:i[p]})),d.push(k({pubkey:new ie(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(k({pubkey:p}));return new Me({programId:u,keys:d,data:m})}function Da(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:s,amount:o}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=Ge({programId:a,poolId:u,owner:s,version:6}),l=Buffer.alloc(Qe.span);Qe.encode({instruction:1,amount:j(o)},l);let m=[k({pubkey:ot,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(k({pubkey:new ie(t.rewardInfos[d].vault)})),m.push(k({pubkey:i[d]}));return new Me({programId:a,keys:m,data:l})}var lr=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Le)){let n=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Bo(D(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Qn,txVersion:s}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:Ra,lockVault:La},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ue({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(tr.span);u.addInstruction({instructions:[Vm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:tr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ma({programId:new ke(a.programId),poolId:l.publicKey}),y=ir({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],g=[];for(let I of a.rewardInfos){I.openTime>=I.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",I.openTime.toString()),isNaN(en[I.rewardType])&&this.logAndCreateError("rewardType error",I.rewardType),Number(I.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",I.perSecond),f.push(_a(I));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:I,payer:c});S&&u.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=I.mint.equals(Le)?new ke(Oe.address):I.mint;g.push({rewardMint:x,rewardVault:ir({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});P&&u.addInstruction(P),b||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:h}=Va({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:b,programId:a.programId,rewardInfo:g,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[h]}).versionBuild({txVersion:s,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:b,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var g;let s=dt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let o=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:o.id,rewardInfos:e.rewardInfos,lpVault:o.lpVault,programId:o.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Le)?new ke(Oe.address):n.mint,l=a.rewardInfos.findIndex(b=>new ke(b.mint.address).equals(c)),m=o.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(g=m.vault)!=null?g:Le,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:[Ko({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let s=dt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let o=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:o.id,rewardInfos:e.rewardInfos,lpVault:o.lpVault,programId:o.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(Le)?new ke(Oe.address):m.mint,p=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(d)),y=o.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Le,{rewardPubKey:g,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:m,payer:u});b&&c.addInstruction(b),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Ko({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:g,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:s}=e,o=dt[n.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Le)?new ke(Oe.address):i.mint,m=ir({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Co({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:s}=e,o=dt[n.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=s!=null?s:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Le)?new ke(Oe.address):l.mint,d=ir({programId:new ke(n.programId),poolId:new ke(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=Co({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:D(C({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:s,useSOLBalance:o,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=dt[d];wo(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=Ge({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let F of this.scope.account.tokenAccounts)if(a){let H=ye(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&H.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let h=g.lpMint,I=A[h.address];I||this.logAndCreateError("you don't have any lp","lp zero",A);let T=[];for(let F of m){let H=o&&F.mint.address===J.toString(),Z=A[F.mint.address];if(!Z){let{account:W,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new ke(F.mint.address),notUseTokenAccount:H,createInfo:{payer:s||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!H,associatedOnly:H?!1:a,checkCreateATAOwner:u});Z=W,lt&&P.addInstruction(lt)}A[F.mint.address]=Z,T.push(Z)}let S,x=await this.scope.connection.getAccountInfo(b);if(x&&(S=Cn(p).decode(x.data)),n.programId!==Qn.toString()&&!S){let{instruction:F,instructionType:H}=di({id:f,programId:y,version:p,ledger:b,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[F],instructionTypes:[H]})}let K=Ao({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});K&&this.logAndCreateError(K);let O={amount:j(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:I,rewardAccounts:T,userAuxiliaryLedgers:c==null?void 0:c.map(F=>new ke(F))},N=p===6?Da(O):p===5?va(O):Fa(O),U={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return P.addInstruction({instructions:[N],instructionTypes:[U[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:s,useSOLBalance:o,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=dt[n.programId];wo(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let g={};for(let K of this.scope.account.tokenAccounts)if(u){let O=ye(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&O.equals(K.publicKey)&&(g[K.mint.toString()]=K.publicKey)}else g[K.mint.toString()]=K.publicKey;if(s)s.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=Ge({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),O=await this.scope.connection.getAccountInfo(K);O||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:O}),Cn(p).decode(O.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let b=y.lpMint.address,P=o&&b===J.toString(),A=g[b.toString()];if(!A){let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(b),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,O&&f.addInstruction(O)}g[b.toString()]=A;let h=[];for(let K of d){let O=o&&K.mint.address===J.toString(),N=g[K.mint.address];if(!N){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new ke(K.mint.address),notUseTokenAccount:O,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});N=U,F&&f.addInstruction(F)}g[K.mint.address]=N,h.push(N)}let I=Ao({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:h});I&&this.logAndCreateError(I);let T={amount:j(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new ke(K))},S=p===6?ar(T):p===5?ur(T):cr(T),x={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let i=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),s=dt[e.programId];s!==6&&this.logAndCreateError("invalid farm version",s);let o=e.rewardInfos.findIndex(y=>y.mint.address===Le.toString()?new ke(Oe.address):t),a=i.rewardInfos[o];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Le,c=this.createTxBuilder(),l;if(t.equals(Le)){let y=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Bo(D(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[_m(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ea({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:s=!0,checkCreateATAOwner:o=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(s){let f=ye(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:g,rewardInfos:b,id:P}=y,A=dt[f],h=g.address,I=n&&h===J.toString(),T=m[h];if(!T){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.programId,mint:new ke(h),notUseTokenAccount:I,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:I?!1:s,checkCreateATAOwner:o});T=U,F&&l.addInstruction(F)}m[h.toString()]=T;let S=[];for(let U of b){let F=n&&U.mint.address===J.toString(),H=m[U.mint.address];if(!H){let{account:Z,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:U.mint.programId,mint:new ke(U.mint.address),notUseTokenAccount:F,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:s,checkCreateATAOwner:o});H=Z,W&&l.addInstruction(W)}m[U.mint.address]=H,S.push(H)}let x=p[P],K={amount:mt,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(U=>new ke(U))},O=A===6?ar(K):A===5?ur(K):cr(K),N={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[O],instructionTypes:[N[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Ce}from"@solana/web3.js";import{AccountLayout as hd,NATIVE_MINT as xu,TOKEN_PROGRAM_ID as Pi}from"@solana/spl-token";var ZA=_([qe("mintAuthorityOption"),B("mintAuthority"),w("supply"),v("decimals"),v("isInitialized"),qe("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as Em}from"@solana/web3.js";import{MintLayout as Wa,TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";var aP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new Em(e));return!t||t.data.length!==Wa.span?void 0:Wa.decode(t.data)},uP=({mint:r,decimals:e,programId:t=Fm,logoURI:n="",priority:i=3})=>{let s=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:s,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:s,tags:[],priority:i}},pi=r=>new Ie({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),Ro=i=>{var s=i,{amount:r,isRaw:e,name:t}=s,n=he(s,["amount","isRaw","name"]);return new Ae(new Ie({mint:it(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function cP(r){return r.address===St.address?Oe:r}function lP(r){return r.address===Oe.address?St:r}var cn=i=>{var s=i,{address:r,programId:e,decimals:t}=s,n=he(s,["address","programId","decimals"]);return C({chainId:101,address:it(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Lo=r=>r?D(C({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:D(C({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:D(C({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as On,ASSOCIATED_TOKEN_PROGRAM_ID as $m}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Dt,SystemProgram as Qa,SYSVAR_RENT_PUBKEY as Jm}from"@solana/web3.js";var Oo=_([v("instruction"),w("amountIn"),w("minAmountOut")]),No=_([v("instruction"),w("maxAmountIn"),w("amountOut")]),hP=_([v("instruction"),v("nonce")]),Mo=_([v("instruction"),v("nonce"),w("startTime")]),mr=_([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),G(w(),3,"padding")]),vm=_([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),G(w(),64,"padding")]),_o=_([v("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Vo=_([v("instruction"),w("amountIn")]),TP={4:mr,5:vm},qa=_([w("fee")]);import{PublicKey as Dm}from"@solana/web3.js";var Ln=new Dm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),mn=5e4,Wm=_([w("x"),w("y"),w("price")]),qm=_([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),G(Wm,mn,"DataElement")]);function Um(r,e){return[0,mn-2]}function Gm(r){return[0,mn-2]}function Xm(r){return[0,mn-2]}function zm(r,e,t){let[n,i]=Um(e,t),s=n,o=i,a=0,u=e*r.multiplier/t;for(;s<=o;){if(a=Math.floor((o+s)/2),a===0||a>=mn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)o=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];s=a+1}}return[a,a,!1]}function Eo(r,e,t){let[n,i,s]=zm(r,e,t);if(!s)return 0;if(n===i){let o=r.DataElement[n].x;return e*r.multiplier/o}else{let o=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-o*c),m=o*l,d=(u-o)*(e*a-o*t)*c,p=m+d;return e*r.multiplier*l/p}}function ln(r,e,t){return e*r.multiplier/t}function Ua(r,e,t){return e*t/r.multiplier}function Ym(r,e){let[t,n]=Gm(e),i=t,s=n,o=0,a=e;for(;i<s;){if(o=Math.floor((s+i)/2),o<=0||o>mn-2)return[o,o,!1];let u=r.DataElement[o].x,c=r.DataElement[o-1].x,l=r.DataElement[o+1].x;if(a===u)return[o,o,!0];if(a===c)return[o-1,o-1,!0];if(a===l)return[o+1,o+1,!0];if(a<c)s=o-1;else{if(a>c&&a<u)return[o-1,o,!0];if(a>u&&a<l)return[o,o+1,!0];i=o+1}}return[o,o,!1]}function jm(r,e){let[t,n]=Xm(e),i=t,s=n,o=0,a=e;for(;i<=s;){if(o=Math.floor((s+i)/2),o<=0||o>=mn-2)return[o,o,!1];let u=r.DataElement[o].y,c=r.DataElement[o-1].y,l=r.DataElement[o+1].y;if(a===u)return[o,o,!0];if(a===c)return[o-1,o-1,!0];if(a===l)return[o+1,o+1,!0];if(a<l)i=o+1;else{if(a<c&&a>u)return[o-1,o,!0];if(a<u&&a>l)return[o,o+1,!0];s=o-1}}return[o,o,!1]}function Ga(r,e,t,n){let i=n?e+t:e-t,[s,o,a]=Ym(r,i);if(!a)return[0,0,!1,a];if(s===o)return[r.DataElement[o].price,r.DataElement[o].y,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[o].x,l=r.DataElement[s].price,m=r.DataElement[o].price,d=r.DataElement[s].y,p=r.DataElement[o].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Qm(r,e,t,n){let i=n?e-t:e+t,[s,o,a]=jm(r,i);if(!a)return[0,0,!1,a];if(s===o)return[r.DataElement[o].price,r.DataElement[o].x,!1,a];{let u=r.DataElement[s].x,c=r.DataElement[o].x,l=r.DataElement[s].price,m=r.DataElement[o].price,d=r.DataElement[s].y,p=r.DataElement[o].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[y,f,!1,a]}}}function Hm(r,e){let t=Ga(r,e,0,!1);return t[3]?t[0]:0}function Xa(r,e,t,n){let i=Eo(r,e,t),s=ln(r,e,i),o=ln(r,t,i),a=ln(r,n,i),u=!0,[c,l,m,d]=Ga(r,s,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=o-l;return Ua(r,p,i)}}function za(r,e,t,n){let i=Eo(r,e,t),s=ln(r,e,i),o=ln(r,t,i),a=ln(r,n,i),u=!1,[c,l,m,d]=Qm(r,o,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=s-l;return Ua(r,p,i)}}function Zm(r){let e=qm.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ya(r,e,t,n){let i=Hm(r,ln(r,e,Eo(r,e,t)))/r.multiplier;return n?i:1/i}var Rn=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=Zm(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Ha(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:s,fixedSide:o}=r,a=Buffer.alloc(_o.span);_o.encode({instruction:3,baseAmountIn:j(i),quoteAmountIn:j(s),fixedSide:o==="base"?mt:Ds},a);let u=[k({pubkey:On,isWritable:!1}),k({pubkey:new be(e.id)}),k({pubkey:new be(t.authority),isWritable:!1}),k({pubkey:new be(t.openOrders),isWritable:!1}),k({pubkey:new be(t.targetOrders)}),k({pubkey:new be(e.lpMint.address)}),k({pubkey:new be(t.vault.A)}),k({pubkey:new be(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Ln})),u.push(k({pubkey:new be(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new be(t.marketEventQueue),isWritable:!1})),new Dt({programId:new be(e.programId),keys:u,data:a})}function Fo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,s=fe(t),o=4;if(e.pooltype.includes("StablePool")&&(o=5),o===4||o===5){let a=Buffer.alloc(Vo.span);Vo.encode({instruction:4,amountIn:j(i)},a);let u=[k({pubkey:On,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.mintLp.address}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return o===5?u.push(k({pubkey:Ln})):(u.push(k({pubkey:s.id})),u.push(k({pubkey:s.id}))),u.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks})),new Dt({programId:s.programId,keys:u,data:a})}return new Dt({programId:s.programId,keys:[]})}function Za({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:s,pcMint:o,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:g,userLpVault:b,nonce:P,openTime:A,coinAmount:h,pcAmount:I,ammConfigId:T,feeDestinationId:S}){let x=_([v("instruction"),v("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:On,isSigner:!1,isWritable:!1},{pubkey:$m,isSigner:!1,isWritable:!1},{pubkey:Qa.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0}],O=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:I},O),{instruction:new Dt({keys:K,programId:r,data:O}),instructionType:E.AmmV4CreatePool}}function vP(r){let e=_([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return new Dt({programId:new be(r.programId),keys:n,data:t})}function ed({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let s=fe(r),o=Buffer.alloc(Oo.span);Oo.encode({instruction:9,amountIn:j(t),minAmountOut:j(n)},o);let a=[k({pubkey:On,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders})];return i===4&&a.push(k({pubkey:s.targetOrders})),a.push(k({pubkey:s.vault.A}),k({pubkey:s.vault.B})),i===5&&a.push(k({pubkey:Ln})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Dt({programId:s.programId,keys:a,data:o})}function td({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let s=fe(r),o=Buffer.alloc(No.span);No.encode({instruction:11,maxAmountIn:j(t),amountOut:j(n)},o);let a=[k({pubkey:On,isWritable:!1}),k({pubkey:s.id}),k({pubkey:s.authority,isWritable:!1}),k({pubkey:s.openOrders}),k({pubkey:s.targetOrders}),k({pubkey:s.vault.A}),k({pubkey:s.vault.B})];return i===5&&a.push(k({pubkey:Ln})),a.push(k({pubkey:s.marketProgramId,isWritable:!1}),k({pubkey:s.marketId}),k({pubkey:s.marketBids}),k({pubkey:s.marketAsks}),k({pubkey:s.marketEventQueue}),k({pubkey:s.marketBaseVault}),k({pubkey:s.marketQuoteVault}),k({pubkey:s.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Dt({programId:s.programId,keys:a,data:o})}function fi(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:s,fixedSide:o}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(o==="in")return ed(D(C({},a),{amountIn:i,minAmountOut:s}),t);if(o==="out")return td(D(C({},a),{maxAmountIn:i,amountOut:s}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function DP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Mo.span);Mo.encode({instruction:0,nonce:5,startTime:j(t)},n);let i=fe(r),s=[k({pubkey:On,isWritable:!1}),k({pubkey:Qa.programId,isWritable:!1}),k({pubkey:Jm,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Dt({programId:i.programId,keys:s,data:n})}function $a({poolKeys:r}){let e=_([v("instruction"),v("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return{instruction:new Dt({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as De,TOKEN_2022_PROGRAM_ID as tn,ASSOCIATED_TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as It,SystemProgram as Nn,Keypair as zo}from"@solana/web3.js";import bu from"bn.js";import dd from"bn.js";function Ja(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function qP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function UP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function yi(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function vo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Do(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function dr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function eu(r,e){return dr(r,e)?null:vo(r,e)}function tu(r,e){return dr(r,e)?null:Do(r,e)}var nd=Buffer.from("amm_config","utf8"),rd=Buffer.from("pool","utf8"),id=Buffer.from("pool_vault","utf8"),od=Buffer.from("pool_reward_vault","utf8"),nu=Buffer.from("position","utf8"),sd=Buffer.from("tick_array","utf8"),ad=Buffer.from("operation","utf8"),ud=Buffer.from("pool_tick_array_bitmap_extension","utf8");function YP(r,e){return oe([nd,Ja(e)],r)}function ru(r,e,t,n){return oe([rd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Wo(r,e,t){return oe([id,e.toBuffer(),t.toBuffer()],r)}function iu(r,e,t){return oe([od,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return oe([sd,e.toBuffer(),yi(t)],r)}function dn(r,e,t,n){return oe([nu,e.toBuffer(),yi(t),yi(n)],r)}function pt(r,e){return oe([nu,e.toBuffer()],r)}function bi(r){return oe([Buffer.from("metadata","utf8"),xn.toBuffer(),r.toBuffer()],xn)}function pr(r){return oe([ad],r)}function st(r,e){return oe([ud,e.toBuffer()],r)}import Rt from"bn.js";var me=new Rt(0),at=new Rt(1),Wt=new Rt(-1),ut=new Rt(1).shln(64),gi=new Rt(1).shln(128),qo=ut.sub(at),fr=64,ou=gi.subn(1),Xe=-443636,He=-Xe,Lt=new Rt("4295048016"),Ot=new Rt("79226673521066979257578248091"),su=16,au="59543866431248",uu="184467440737095516",cu="15793534762490258745",wi=new Rt(10).pow(new Rt(6)),cd=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(cd||{}),HP={[500]:10,[3e3]:60,[1e4]:200},ZP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},lu={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},$P=new Rt("18446744073700000000");var ld=15,ce=class{static async getTickArrays(e,t,n,i,s,o,a){let u=[],c=z.getTickArrayStartIndexByTick(i,s),l=z.getInitializedTickArrayInRange(o,a,s,c,Math.floor(ld/2));for(let p=0;p<l.length;p++){let{publicKey:y}=ge(t,n,l[p]);u.push(y)}let m=(await At(e,u)).map(p=>p!==null?yr.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=D(C({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,s,o){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,s,o);for(;a==null||a.liquidityGross.lten(0);){if(c=z.getNextTickArrayStartIndex(c,s,o),this.checkIsValidStartIndex(c,s))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,o);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,s){let o=Math.floor(e/ce.tickCount(t)),a=n?z.searchLowBitFromStart(i,s,o-1,1,t):z.searchHightBitFromStart(i,s,o+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let s;if(i){let a=Ne-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a-1}}else{let a=0;for(;a<Ne;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){s=u;break}a=a+1}}let{publicKey:o}=ge(e,t,n.startTickIndex);return{nextTick:s,tickArrayAddress:o,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,s,o){let a=z.getTickArrayStartIndexByTick(i,s),u=Math.floor((i-a)/s),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(o)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<Ne;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=ge(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(z.checkIsOutOfBoundary(e)){if(e>He)return!1;let n=z.getTickArrayStartIndexByTick(Xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ne*e}};import re from"bn.js";import{PublicKey as Tt}from"@solana/web3.js";import Se from"bn.js";var Uo=14,qt=class{static maxTickInTickarrayBitmap(e){return e*Ne*pn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let s=n*i;return e<0?{minValue:-s,maxValue:-s+n}:{minValue:s,maxValue:s+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let s=this.maxTickInTickarrayBitmap(n),o=i?t-ce.tickCount(n):t+ce.tickCount(n);if(o<-s||o>=s)return{isInit:!1,tickIndex:t};let a=n*Ne,u=o/a+512;o<0&&o%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=eu(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-s}}else{let l=e.shrn(c),m=tu(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}},br=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=qt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=qt.maxTickInTickarrayBitmap(e),n=-t;if(He<=t)throw Error(`extensionTickBoundary check error: ${He}, ${t}`);if(n<=Xe)throw Error(`extensionTickBoundary check error: ${n}, ${Xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),s=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:z.mergeTickArrayBitmap(i).testn(s),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let s=ce.tickCount(t),o=n?e-s:e+s,{tickarrayBitmap:a}=this.getBitmap(o,t,i);return this.nextInitializedTickArrayInBitmap(a,o,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:s,maxValue:o}=qt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=z.mergeTickArrayBitmap(e).shln(pn-1-a),c=dr(512,u)?null:vo(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s}}else{let u=z.mergeTickArrayBitmap(e).shrn(a),c=dr(512,u)?null:Do(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%qt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=pn-i),i}};import Nt from"bn.js";var gr=class{static getfeeGrowthInside(e,t,n){let i=new Nt(0),s=new Nt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,s=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),s=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let o=new Nt(0),a=new Nt(0);e.tickCurrent<n.tick?(o=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(o=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64A,i),o),c=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64B,s),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:o}=this.getfeeGrowthInside(e,n,i),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(o,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:s,feeGrowthInsideBX64:o}=this.getfeeGrowthInside(e,n,i),a=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(o,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let s=[],o=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<o.length;a++){let u=o[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static GetPositionRewards(e,t,n,i){let s=[],o=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<o.length;a++){let u=o[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,ut),d=c.rewardAmountOwed.add(m);s.push(d)}return s}static getRewardGrowthInside(e,t,n,i){let s=[];for(let o=0;o<i.length;o++){let a=new Nt(0);t.liquidityGross.eqn(0)?a=i[o].rewardGrowthGlobalX64:e<t.tick?a=i[o].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[o]):a=t.rewardGrowthsOutsideX64[o];let u=new Nt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[o]:u=i[o].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[o])),s.push(te.wrappingSubU128(te.wrappingSubU128(i[o].rewardGrowthGlobalX64,a),u))}return s}static getRewardGrowthInsideV2(e,t,n,i){let s=[];for(let o=0;o<i.length;o++){let a=new Nt(0);t.liquidityGross.eqn(0)?a=i[o].rewardGrowthGlobalX64:e<t.tick?a=i[o].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[o]):a=t.rewardGrowthsOutsideX64[o];let u=new Nt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[o]:u=i[o].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[o])),s.push(te.wrappingSubU128(te.wrappingSubU128(i[o].rewardGrowthGlobalX64,a),u))}return s}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:s,epochInfo:o}){var g,b,P,A;let a=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),u=ee.getSqrtPriceX64FromTick(t.tickLower),c=ee.getSqrtPriceX64FromTick(t.tickUpper),l=s?1+i:1-i,m=ue.getAmountsFromLiquidity(a,u,c,n,s),[d,p]=[Pe(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,o,!0),Pe(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,o,!0)],[y,f]=[Pe(new Nt(new V(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,o,!0),Pe(new Nt(new V(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,o,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Kt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as mu}from"@solana/spl-token";var Ke=class{static getOutputAmountAndRemainAccounts(e,t,n,i,s,o=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:g}=fn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,s,o);return u.push(...y),{allTrade:d,expectedAmountOut:p.mul(Wt),remainingAccounts:u,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,i,s){let o=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,o);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,o);if(f.isExist){let{publicKey:g}=ge(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=fn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,o,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Wt),c,s);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ke.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?br.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):z.checkTickArrayIsInitialized(z.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:s,nextStartIndex:o}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(s){let{publicKey:a}=ge(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ce.tickCount(e.tickSpacing)),i=t?z.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):z.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:s}=qt.nextInitializedTickArrayStartIndex(z.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:s};t=s;let{isInit:o,tickIndex:a}=br.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(o)return{isExist:!0,nextStartIndex:a};if(t=a,t<Xe||t>He)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:s}){var a,u,c;let o=[];for(let l=0;l<s.length;l++){let m=s[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=D(C({},m),{perSecond:te.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Tt(d)});if(p.tokenMint.equals(Tt.default))continue;if(n<=p.openTime.toNumber()||i.eq(me)){o.push(p);continue}let y=new Se(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=te.mulDivFloor(f,p.emissionsPerSecondX64,i),b=p.rewardGrowthGlobalX64.add(g),P=te.mulDivFloor(f,p.emissionsPerSecondX64,ut),A=p.rewardTotalEmissioned.add(P);o.push(D(C({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:A,lastUpdateTime:y}))}return o}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let s of t){let o=z.getTickArrayStartIndexByTick(s,e);if(o>=n||o<i)return!0}return!1}static tickRange(e){let t=qt.maxTickInTickarrayBitmap(e),n=-t;return t>He&&(t=ce.getArrayStartIndex(He,e)+ce.tickCount(e)),n<Xe&&(n=ce.getArrayStartIndex(Xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*pn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await tt(e,t.map(o=>({pubkey:o})),{batchRequest:n}),s={};for(let o of i)o.accountInfo!==null&&(s[o.pubkey.toString()]=du.decode(o.accountInfo.data));return s}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},s=[];for(let u of t){let c=z.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=z.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=ge(u.programId,u.id,m);s.push({pubkey:d}),i[d.toString()]=u.id}}let o=await tt(e,s,{batchRequest:n}),a={};for(let u of o){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=yr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(C({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:s=!0}){var a;let o=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(o.find(l=>l.equals(c.state.programId))||o.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 o)c.push(pt(p,d).publicKey);let l=await At(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Ai.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,b=z._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),P=z._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ue.getAmountsFromLiquidity(g.sqrtPriceX64,b.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),I=1/(1-Math.sqrt(Math.sqrt(b.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>D(C({},x),{pendingReward:new Se(0)})),leverage:I,tokenFeeAmountA:new Se(0),tokenFeeAmountB:new Se(0)}];let T=await z.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await z.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(s){let d=Object.values(m),p=await At(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let b=d[f].toString();y[b]=yr.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let b of g){let P=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,h=y[m[P].toString()],I=y[m[A].toString()],T=h.ticks[z.getTickOffsetInArray(b.tickLower,f.tickSpacing)],S=I.ticks[z.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await gr.GetPositionFees(f,b,T,S),O=await gr.GetPositionRewards(f,b,T,S);b.tokenFeeAmountA=x.gte(new Se(0))?x:new Se(0),b.tokenFeeAmountB=K.gte(new Se(0))?K:new Se(0);for(let N=0;N<O.length;N++)b.rewardInfos[N].pendingReward=O[N].gte(new Se(0))?O[N]:new Se(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:s,slippage:o,priceLimit:a=new V(0),catchLiquidityInsufficient:u=!1}){var U;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new V(0))?c=l?Lt.add(new Se(1)):Ot.sub(new Se(1)):c=ee.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Pe(s,m,i,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:g,executionPrice:b,feeAmount:P}=Ke.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((U=p.fee)!=null?U:me),c,u),A=Pe(f,d,i,!1),h=ee.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),I=l?h:new V(1).div(h),T=f.mul(new Se(Math.floor((1-o)*1e10))).div(new Se(1e10)),S=Pe(T,d,i,!1),x=l?e.currentPrice:new V(1).div(e.currentPrice),K=new V(I).sub(x).abs(),O=x,N=new je(new V(K).mul(10**15).toFixed(0),new V(O).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:Kt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:N,fee:P,remainingAccounts:g,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:s,epochInfo:o,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ie(D(C({},c),{mint:c.address,isToken2022:c.programId===mu.toBase58()})),new Ie(D(C({},l),{mint:l.address,isToken2022:l.programId===mu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:g,expirationTime:b,currentPrice:P,executionPrice:A,priceImpact:h,fee:I,remainingAccounts:T,executionPriceX64:S}=Ke.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Tt(c.address),amountIn:n,slippage:s,epochInfo:o,catchLiquidityInsufficient:a}),x=D(C({},y),{amount:new Ae(m,y.amount),fee:y.fee===void 0?void 0:new Ae(m,y.fee)}),K=D(C({},f),{amount:new Ae(d,f.amount),fee:f.fee===void 0?void 0:new Ae(d,f.fee)}),O=D(C({},g),{amount:new Ae(d,g.amount),fee:g.fee===void 0?void 0:new Ae(d,g.fee)}),N=new Je({baseToken:m,denominator:new Se(10).pow(new Se(20+m.decimals)),quoteToken:d,numerator:P.mul(new V(10**(20+d.decimals))).toFixed(0)}),U=new Je({baseToken:m,denominator:new Se(10).pow(new Se(20+m.decimals)),quoteToken:d,numerator:A.mul(new V(10**(20+d.decimals))).toFixed(0)}),F=new Ae(m,I);return{allTrade:p,realAmountIn:x,amountOut:K,minAmountOut:O,expirationTime:b,currentPrice:N,executionPrice:U,priceImpact:h,fee:F,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,g;let s=e[t],o=z.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=z.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(o,s.priceMin),l=Math.min(a,s.priceMax)-u,m=a-o,d=s.priceMax-s.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:s.feeApr*p,rewardsApr:[(y=s.rewardApr[0])!=null?y:0*p,(f=s.rewardApr[1])!=null?f:0*p,(g=s.rewardApr[2])!=null?g:0*p],apr:s.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:s,positionTickLowerIndex:o,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[it(e.mintA.address).toString()],d=i[it(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),g=ee.getSqrtPriceX64FromTick(o),b=ee.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ue.getAmountsFromLiquidityWithSlippage(f,g,b,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:I}=ue.getAmountsFromLiquidityWithSlippage(f,g,b,s,!1,!1,0),T=new V(P.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(d.value)),S=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(I.toString()).div(new V(10).pow(y)).mul(d.value)),x=S.div(T.add(S)).div(S),O=new V(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),N=3600*24*365,U=e.rewardDefaultInfos.map(F=>{var W,lt;let H=F.mint.decimals,Z=i[F.mint.address];return u<((W=F.startTime)!=null?W:0)||u>((lt=F.endTime)!=null?lt:0)||!F.perSecond||!Z||H===void 0?0:new V(Z.value).mul(new V(F.perSecond).mul(N)).div(new V(10).pow(H)).mul(x).mul(100).toNumber()});return{feeApr:O,rewardsApr:U,apr:O+U.reduce((F,H)=>F+H,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:s,slippage:o,add:a,epochInfo:u,amountHasFee:c}){var b,P;let l=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=ee.getSqrtPriceX64FromTick(n),d=ee.getSqrtPriceX64FromTick(i),p=a?1-o:1+o,y=Pe(s,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new Se(new V(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?ue.getLiquidityFromTokenAmountA(m,d,f,!a):new Se(0);else if(l.lte(d)){let A=ue.getLiquidityFromTokenAmountA(l,d,f,!a),h=ue.getLiquidityFromTokenAmountB(m,l,f);g=t?A:h}else g=t?new Se(0):ue.getLiquidityFromTokenAmountB(m,d,f);return Ke.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:g,slippage:o,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:s,slippage:o,add:a}){var g,b,P,A;let u=ee.getSqrtPriceX64FromTick(n),c=ee.getSqrtPriceX64FromTick(i),l=a?1+o:1-o,m=ue.getAmountsFromLiquidity(ee.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),u,c,s,a),[d,p]=[Pe(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),Pe(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:s,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Kt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Tt(u.id));(await At(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=yn.decode(u.data))});let o=t.map(u=>st(new Tt(u.programId),new Tt(u.id)).publicKey),a=await Ke.fetchExBitmaps({connection:e,exBitmapAddress:o,batchRequest:!1});return t.reduce((u,c)=>D(C({},u),{[c.id]:D(C({},n[c.id]),{id:new Tt(c.id),version:6,programId:new Tt(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:D(C({},c.config),{id:new Tt(c.config.id),fundOwner:""}),currentPrice:new V(c.price),exBitmapInfo:a[st(new Tt(c.programId),new Tt(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function Ek({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:s,add:o,epochInfo:a,amountHasFee:u}){var A,h,I,T;let[c,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=ee.priceToSqrtPriceX64(new V(r.price),r.mintA.decimals,r.mintB.decimals),y=ee.getSqrtPriceX64FromTick(c),f=ee.getSqrtPriceX64FromTick(l),[g,b]=[Pe(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Pe(d,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(p,y,f,g.amount.sub((I=g.fee)!=null?I:me),b.amount.sub((T=b.fee)!=null?T:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:s,add:o,epochInfo:a,amountAddFee:!u})}var te=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),s=i.div(n);return i.mod(n).eq(me)||(s=s.add(at)),s}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(at)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(gi).sub(t).mod(gi)}};function _e(r,e){return Go(r.mul(e),64,256)}function md(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Go(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ee=class{static sqrtPriceX64ToPrice(e,t,n){return te.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return te.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let s=t.shln(fr);if(i){let o=s,a=s.add(n.mul(e));return a.gte(o)?te.mulDivCeil(o,e,a):te.mulDivRoundingUp(o,at,o.div(e).add(n))}else{let o=n.mul(e);if(!s.gt(o))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=s.sub(o);return te.mulDivCeil(s,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let s=n.shln(fr);if(i)return e.add(s.div(t));{let o=te.mulDivRoundingUp(s,at,t);if(!e.gt(o))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(o)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Xe||e>He)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=_e(n,new re("18444899583751176192"))),(t&4)!=0&&(n=_e(n,new re("18443055278223355904"))),(t&8)!=0&&(n=_e(n,new re("18439367220385607680"))),(t&16)!=0&&(n=_e(n,new re("18431993317065453568"))),(t&32)!=0&&(n=_e(n,new re("18417254355718170624"))),(t&64)!=0&&(n=_e(n,new re("18387811781193609216"))),(t&128)!=0&&(n=_e(n,new re("18329067761203558400"))),(t&256)!=0&&(n=_e(n,new re("18212142134806163456"))),(t&512)!=0&&(n=_e(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=_e(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=_e(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=_e(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=_e(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=_e(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=_e(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=_e(n,new re("696457651848324352"))),(t&131072)!=0&&(n=_e(n,new re("26294789957507116"))),(t&262144)!=0&&(n=_e(n,new re("37481735321082"))),e>0&&(n=ou.div(n)),n}static getTickFromPrice(e,t,n){return ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ot)||e.lt(Lt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=md(n,32,128),s=new re("8000000000000000","hex"),o=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;s.gt(new re(0))&&o<su;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(s.mul(y)),s=s.shrn(1),o+=1}let c=a.shrn(32),m=i.add(c).mul(new re(au)),d=Go(m.sub(new re(uu)),64,128).toNumber(),p=Go(m.add(new re(cu)),64,128).toNumber();return d==p?d:ee.getSqrtPriceX64FromTick(p).lte(e)?p:d}},bn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let o=ee.getTickFromSqrtPriceX64(ee.priceToSqrtPriceX64(e,n,i))/t;return o<0?o=Math.floor(o):o=Math.ceil(o),o*t}static roundPriceWithTickspacing(e,t,n,i){let s=bn.getTickWithPriceAndTickspacing(e,t,n,i),o=ee.getSqrtPriceX64FromTick(s);return ee.sqrtPriceX64ToPrice(o,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let s=n.ushln(fr),o=t.sub(e);return i?te.mulDivRoundingUp(te.mulDivCeil(s,o,t),at,e):te.mulDivFloor(s,o,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?te.mulDivCeil(n,t.sub(e),ut):te.mulDivFloor(n,t.sub(e),ut)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let s=n.mul(e).mul(t),o=t.sub(e),a=s.div(o);return i?te.mulDivRoundingUp(a,at,qo):a.shrn(fr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),te.mulDivFloor(n,qo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let o=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,s);return o.lt(a)?o:a}else return ue.getLiquidityFromTokenAmountB(t,n,s)}static getAmountsFromLiquidity(e,t,n,i,s){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,s),amountB:new re(0)};if(e.lt(n)){let o=ue.getTokenAmountAFromLiquidity(e,n,i,s),a=ue.getTokenAmountBFromLiquidity(t,e,i,s);return{amountA:o,amountB:a}}else return{amountA:new re(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,s)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,s,o,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,o),l=s?1+a:1-a,m=new re(new V(u.toString()).mul(l).toFixed(0)),d=new re(new V(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:s,add:o,epochInfo:a,amountAddFee:u}){var P,A,h,I;let c=ee.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=ee.getSqrtPriceX64FromTick(t),m=ee.getSqrtPriceX64FromTick(n),d=o?1+s:1-s,p=ue.getAmountsFromLiquidity(c,l,m,i,o),[y,f]=[Pe(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Pe(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,b]=[Pe(new re(new V(p.amountA.toString()).mul(d).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Pe(new re(new V(p.amountB.toString()).mul(d).toFixed(0)),(I=e.mintB.extensions)==null?void 0:I.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:b,expirationTime:Kt(y.expirationTime,f.expirationTime)}}},fn=class{static swapCompute(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f=!1){if(d.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=o?Lt.add(at):Ot.sub(at)),o){if(y.lt(Lt))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(Ot))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let g=d.gt(me),b={amountSpecifiedRemaining:d,amountCalculated:me,sqrtPriceX64:m,tick:c>p?Math.min(p+ce.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},P=p,A=n[p],h=0,I=!o&&A.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){h>10;let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let S=z.nextInitTick(A,b.tick,l,o,I),x=S||null,K=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let N=Ke.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:s},P,o);if(!N.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}P=N.nextStartIndex;let{publicKey:U}=ge(e,t,P);K=U,A=n[P];try{x=z.firstInitializedTick(A,o)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==P&&K&&(b.accounts.push(K),p=P),T.tickNext<Xe?T.tickNext=Xe:T.tickNext>He&&(T.tickNext=He),T.sqrtPriceNextX64=ee.getSqrtPriceX64FromTick(T.tickNext);let O;if(o&&T.sqrtPriceNextX64.lt(y)||!o&&T.sqrtPriceNextX64.gt(y)?O=y:O=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=fn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),g?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=x.liquidityNet;o&&(N=N.mul(Wt)),b.liquidity=ue.addDelta(b.liquidity,N)}I=T.tickNext!=b.tick&&!o&&A.startTickIndex===T.tickNext,b.tick=o?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let N=ee.getTickFromSqrtPriceX64(b.sqrtPriceX64);I=N!=b.tick&&!o&&A.startTickIndex===N,b.tick=N}++h}try{let{nextStartIndex:T,isExist:S}=ce.nextInitializedTickArray(b.tick,l,o,i,s);S&&p!==T&&(b.accounts.push(ge(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:me,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,s){let o={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=i.gte(me);if(u){let l=te.mulDivFloor(i,wi.sub(new re(s.toString())),wi);o.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(o.amountIn)?o.sqrtPriceX64Next=t:o.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromInput(e,n,l,a)}else o.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Wt).gte(o.amountOut)?o.sqrtPriceX64Next=t:o.sqrtPriceX64Next=ee.getNextSqrtPriceX64FromOutput(e,n,i.mul(Wt),a);let c=t.eq(o.sqrtPriceX64Next);return a?(c&&u||(o.amountIn=ue.getTokenAmountAFromLiquidity(o.sqrtPriceX64Next,e,n,!0)),c&&!u||(o.amountOut=ue.getTokenAmountBFromLiquidity(o.sqrtPriceX64Next,e,n,!1))):(o.amountIn=c&&u?o.amountIn:ue.getTokenAmountBFromLiquidity(e,o.sqrtPriceX64Next,n,!0),o.amountOut=c&&!u?o.amountOut:ue.getTokenAmountAFromLiquidity(e,o.sqrtPriceX64Next,n,!1)),!u&&o.amountOut.gt(i.mul(Wt))&&(o.amountOut=i.mul(Wt)),u&&!o.sqrtPriceX64Next.eq(t)?o.feeAmount=i.sub(o.amountIn):o.feeAmount=te.mulDivCeil(o.amountIn,new re(s),wi.sub(new re(s))),[o.sqrtPriceX64Next,o.amountIn,o.amountOut,o.feeAmount]}};var Ne=60,pn=512,z=class{static getTickArrayAddressByTick(e,t,n,i){let s=z.getTickArrayStartIndexByTick(n,i),{publicKey:o}=ge(e,t,s);return o}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=z.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Ne)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ne,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Ne,s=Math.floor(t/i)+512,o=Math.abs(s);return{isInitialized:e.testn(o),startIndex:(o-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ne:e+t*Ne}static mergeTickArrayBitmap(e){let t=new dd(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,s){let o=Math.floor(i/(n*Ne));return[...z.searchLowBitFromStart(e,t,o-1,s,n),...z.searchHightBitFromStart(e,t,o,s,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return z.searchHightBitFromStart(e,t,0,pn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,s){let o=[],a=z.getAllInitializedTickArrayStartIndex(n,i,s);for(let u of a){let{publicKey:c}=ge(e,t,u);o.push({tickArrayStartIndex:u,tickArrayAddress:c})}return o}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,s){let o=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>z.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(o[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(s);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,s){let o=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>z.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(o[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(s);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Xe||e>He}static nextInitTick(e,t,n,i,s){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(s||(a=a+1);a<Ne;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ne-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ne;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:i}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new V(1).div(t),s=bn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),o=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=ee.getSqrtPriceX64FromTick(t),s=ee.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:s,tickSqrtPriceX64:i}:{tick:t,price:new V(1).div(s),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new V(1).div(t),s=bn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),o=ee.getSqrtPriceX64FromTick(s),a=ee.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:s,price:a}:{tick:s,price:new V(1).div(a)}}};var pu=_([pe(8),v("bump"),Ct("index"),B(""),qe("protocolFeeRate"),qe("tradeFeeRate"),Ct("tickSpacing"),G(w(),8,"")]),pd=_([qe("blockTimestamp"),Q("sqrtPriceX64"),Q("cumulativeTimePriceX64"),G(Q(),1,"")]),Xo=_([pe(8),ve("initialized"),B("poolId"),G(pd,1e3,"observations"),G(Q(),5,"")]),fd=_([v("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Q("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),Q("rewardGrowthGlobalX64")]),yn=_([pe(8),v("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),v("mintDecimalsA"),v("mintDecimalsB"),Ct("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Fe("tickCurrent"),Ct("observationIndex"),Ct("observationUpdateDuration"),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),v("status"),G(v(),7,""),G(fd,3,"rewardInfos"),G(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),G(w(),15*4-3,"padding")]),yd=_([Q("growthInsideLastX64"),w("rewardAmountOwed")]),Ai=_([pe(8),v("bump"),B("nftMint"),B("poolId"),Fe("tickLower"),Fe("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(yd,3,"rewardInfos"),G(w(),8,"")]),ah=_([pe(8),v("bump"),B("poolId"),Fe("tickLowerIndex"),Fe("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),G(Q(),3,"rewardGrowthInside"),G(w(),8,"")]),bd=_([Fe("tick"),ya("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),G(Q(),3,"rewardGrowthsOutsideX64"),G(qe(),13,"")]),yr=_([pe(8),B("poolId"),Fe("startTickIndex"),G(bd,Ne,"ticks"),v("initializedTickCount"),G(v(),115,"")]),fu=_([pe(329),G(B(),100,"whitelistMints")]),du=_([pe(8),B("poolId"),G(G(w(),8),Uo,"positiveTickArrayBitmap"),G(G(w(),8),Uo,"negativeTickArrayBitmap")]);var gu=ae("Raydium_Clmm"),xt={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]},Be=class{static createPoolInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([Q("sqrtPriceX64"),w("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},b);let P=Buffer.from([...xt.createPool,...b]);return new It({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:s,mintB:o,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ue({fromPublicKey:i,programId:n}),[d,p]=[new q(s.address),new q(o.address)],y=[Nn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Xo.span),space:Xo.span,programId:n})],{publicKey:f}=ru(n,a,d,p),{publicKey:g}=Wo(n,f,d),{publicKey:b}=Wo(n,f,p);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,g,new q(s.programId||De),p,b,new q(o.programId||De),st(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let N=_([Fe("tickLowerIndex"),Fe("tickUpperIndex"),Fe("tickArrayLowerStartIndex"),Fe("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),ve("withMetadata"),v("optionBaseFlag"),ve("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,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:$e,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:yu,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(N.span);N.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},H);let Z=Buffer.from([...xt.openPosition,...H]);return new It({keys:F,programId:e,data:Z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,liquidity:o,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=zo.generate();m.push(x),y=x.publicKey}let f=z.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=z.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=ge(d,p,f),{publicKey:P}=ge(d,p,g),{publicKey:A}=ye(n.wallet,y,De),{publicKey:h}=bi(y),{publicKey:I}=pt(d,y),{publicKey:T}=dn(d,p,i,s),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,f,g,o,a,u,c);return{signers:m,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,base:o,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=zo.generate();m.push(x),y=x.publicKey}let f=z.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=z.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=ge(d,p,f),{publicKey:P}=ge(d,p,g),{publicKey:A}=ye(n.wallet,y,De),{publicKey:h}=bi(y),{publicKey:I}=pt(d,y),{publicKey:T}=dn(d,p,i,s),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,f,g,c,o,a,u,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?st(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A,h,I,T,S,x,K,O){let N=_([Fe("tickLowerIndex"),Fe("tickUpperIndex"),Fe("tickArrayLowerStartIndex"),Fe("tickArrayUpperStartIndex"),Q("liquidity"),w("amountMaxA"),w("amountMaxB"),ve("withMetadata"),v("optionBaseFlag"),ve("baseFlag")]),U=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,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:$e,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:yu,isSigner:!1,isWritable:!1},{pubkey:xn,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...U],H=Buffer.alloc(N.span);N.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:I,liquidity:new bu(0),amountMaxA:S==="MintA"?x:K,amountMaxB:S==="MintA"?K:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},H);let Z=Buffer.from([...xt.openPosition,...H]);return new It({keys:F,programId:e,data:Z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,liquidity:o,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new q((await l(1))[0]);else{let x=zo.generate();d.push(x),m=x.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=z.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=z.getTickArrayStartIndexByTick(s,e.config.tickSpacing),{publicKey:b}=ge(p,y,f),{publicKey:P}=ge(p,y,g),{publicKey:A}=ye(n.wallet,m,De),{publicKey:h}=bi(m),{publicKey:I}=pt(p,m),{publicKey:T}=dn(p,y,i,s),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,h,T,b,P,I,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(t.mintA.address),new q(t.mintB.address),i,s,f,g,o,a,u,c,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?st(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:I,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,s){let o=_([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1}],u=Buffer.alloc(o.span);o.encode({},u);let c=Buffer.from([...xt.closePosition,...u]);return new It({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let s=new q(e.programId),{publicKey:o}=ye(n.wallet,i.nftMint,De),{publicKey:a}=pt(s,i.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,i.nftMint,o,a)),{address:{positionNftAccount:o,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P){let A=_([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),ve("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...xt.increaseLiquidity,...T]);return new It({keys:I,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:s,amountMaxA:o,amountMaxB:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=z.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=z.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(u,c,l),{publicKey:p}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,De),{publicKey:f}=pt(u,n.nftMint),{publicKey:g}=dn(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,o,a,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[b],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:s,baseAmount:o,otherAmountMax:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=z.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=z.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(u,c,l),{publicKey:p}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,De),{publicKey:f}=pt(u,n.nftMint),{publicKey:g}=dn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),s,o,a,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?st(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P){let A=_([Q("liquidity"),w("amountMaxA"),w("amountMaxB"),v("optionBaseFlag"),ve("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(A.span);A.encode({liquidity:new bu(0),amountMaxA:f==="MintA"?g:b,amountMaxB:f==="MintA"?b:g,baseFlag:f==="MintA",optionBaseFlag:1},T);let S=Buffer.from([...xt.increaseLiquidity,...T]);return new It({keys:I,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=_([Q("liquidity"),w("amountMinA"),w("amountMinB")]),I=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,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:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I],S=Buffer.alloc(h.span);h.encode({liquidity:g,amountMinA:b,amountMinB:P},S);let x=Buffer.from([...xt.decreaseLiquidity,...S]);return new It({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:s,amountMinA:o,amountMinB:a,programId:u}){let[c,l]=[new q(e.programId),new q(e.id)],m=z.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=z.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(c,l,m),{publicKey:y}=ge(c,l,d),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:g}=pt(c,n.nftMint),{publicKey:b}=dn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new q(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new q(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,g,l,b,p,y,i.tokenAccountA,i.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),P,s,o,a,Ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?st(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:b},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b){let P=_([w("amount"),w("otherAmountThreshold"),Q("sqrtPriceLimitX64"),ve("isBaseInput")]),A=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],I=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},I);let T=Buffer.from([...xt.swap,...I]);return new It({keys:h,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:s,amountIn:o,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new q(e.programId),new q(e.id)],[d,p]=[new q(t.vault.A),new q(t.vault.B)],[y,f]=[new q(e.mintA.address),new q(e.mintB.address)],g=e.mintA.address===s.toString(),b=[this.swapInstruction(l,i.wallet,m,new q(e.config.id),g?i.tokenAccountA:i.tokenAccountB,g?i.tokenAccountB:i.tokenAccountA,g?d:p,g?p:d,g?y:f,g?f:y,c,n,o,a,u,!0,st(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,s,o,a,u,c,l,m,d){let p=_([w("openTime"),w("endTime"),Q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:j(l),endTime:j(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...xt.initReward,...f]);return new It({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[s,o]=[new q(e.programId),new q(e.id)],a=iu(s,o,i.mint).publicKey,u=pr(s).publicKey,c=[this.initRewardInstruction(s,n.wallet,o,u,new q(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,s,o,a,u,c,l,m,d){let p=_([v("rewardIndex"),Q("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:j(l),endTime:j(m)},f);let g=Buffer.from([...xt.setRewardEmissions,...f]);return new It({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[s,o]=[new q(e.programId),new q(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new q(t.rewardInfos[d].vault),c=new q(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&gu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=pr(s).publicKey,m=[this.setRewardInstruction(s,n.wallet,o,l,new q(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,s,o,a){let u=_([v("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...xt.collectReward,...l]);return new It({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[s,o]=[new q(e.programId),new q(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new q(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&gu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(s,n.wallet,o,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:s,amountInMax:o,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new q(e.programId),new q(e.id)],[m,d]=[new q(t.vault.A),new q(t.vault.B)],[p,y]=[new q(e.mintA.address),new q(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new q(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,s,o,a,!1)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as hu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pd}from"@solana/spl-token";import{PublicKey as wd}from"@solana/web3.js";import wu from"bn.js";var Au=new wu(25),Pu=new wu(1e4),gd={4:3,5:3};var Ad=ae("Raydium_liquidity_serum");function ku({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let s=t.concat(Buffer.from([n]),Buffer.alloc(7));i=wd.createProgramAddressSync(s,r)}catch(s){if(s instanceof TypeError)throw s;n++;continue}return{publicKey:i,nonce:n}}throw Ad.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import wr from"bn.js";function Qo({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function gn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function kd({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ho({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:s,quoteDecimals:o,programId:a,marketProgramId:u}){let c=gn({name:"amm_associated_seed",programId:a,marketId:t}),l=gn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ho({programId:a}),p=gn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=gn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=gn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=kd({programId:a,marketId:t}),b=gn({name:"target_associated_seed",programId:a,marketId:t}),P=gn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=ku({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:s,quoteDecimals:o,lpDecimals:s,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:g,targetOrders:b,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:hu.default,configId:Qo({programId:a})}}var Yo;async function vh({connection:r,poolKeysList:e,config:t}){Yo||(Yo=new Rn({connection:r}),await Yo.initStableModelLayout());let n=e.map(o=>$a({poolKeys:o}));return(await js(r,n.map(o=>o.instruction),"GetPoolData")).map(o=>{let a=Qs(o,"GetPoolData"),u=new wr(Et(a,"status")),c=Number(Et(a,"coin_decimals")),l=Number(Et(a,"pc_decimals")),m=Number(Et(a,"lp_decimals")),d=new wr(Et(a,"pool_coin_amount")),p=new wr(Et(a,"pool_pc_amount")),y=new wr(Et(a,"pool_lp_supply")),f="0";try{f=Et(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new wr(f)}})}var jo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Iu=r=>{let e={},t=Pd.toBase58();return Object.keys(r).map(n=>{let i=r[n],[s,o]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:cn({address:s,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:cn({address:o,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new V(i.baseReserve.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(i.quoteReserve.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new V(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:jo,week:jo,month:jo,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:hu.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:cn({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())})}}),e};import rt from"bn.js";var Ar=class extends xe{constructor(t){super(t);this.stableLayout=new Rn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:s}){let o=new rt(new V(n).mul(10**t[s?"mintA":"mintB"].decimals).toFixed(0)),a=pi(t[s?"mintB":"mintA"]),[u,c]=[new rt(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new rt(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new rt(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",s?t.mintA.symbol:t.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",s?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=s?"base":"quote";this.logDebug("input side:",m);let d=mt;o.isZero()||(d=m==="base"?Gr(o.mul(c),u):Gr(o.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Gr(o.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new je(new rt(1)).add(i).mul(d).quotient,g=new Ae(a,d),b=new Ae(a,f);return this.logDebug("anotherAmount:",g.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:g,maxAnotherAmount:b,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:s,fixedSide:o,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",s),(i.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:s.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[i.token,s.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let b=await l.getCreatedTokenAccount({mint:new Ce(n.lpMint.address)}),P=[p,y],A=[f,g],h=[i.raw,s.raw],I=i.token.mint.toBase58()===n.mintA.address?"base":"quote",T="base";["quote","base"].includes(I)||this.logAndCreateError("invalid fixedSide","fixedSide",o),I==="quote"?(P.reverse(),A.reverse(),h.reverse(),T=o==="a"?"quote":"base"):I==="base"&&(T=o==="a"?"base":"quote");let[S,x]=P,[K,O]=A,[N,U]=h,F=await this.getAmmPoolKeys(n.id),H=this.createTxBuilder(),on=await l.handleTokenAccount({side:"in",amount:N,mint:S.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Z}=on,W=he(on,["tokenAccount"]);H.addInstruction(W);let Mt=await l.handleTokenAccount({side:"in",amount:U,mint:x.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:lt}=Mt,Pn=he(Mt,["tokenAccount"]);H.addInstruction(Pn);let kn=await l.handleTokenAccount({side:"out",amount:0,mint:new Ce(n.lpMint.address),tokenAccount:b,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rn}=kn,Gt=he(kn,["tokenAccount"]);return H.addInstruction(Gt),H.addInstruction({instructions:[Ha({poolInfo:n,poolKeys:F,userKeys:{baseTokenAccount:Z,quoteTokenAccount:lt,lpTokenAccount:rn,owner:this.scope.ownerPubKey},baseAmountIn:N,quoteAmountIn:U,fixedSide:T})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),H.addCustomComputeBudget(c),u===0&&await H.buildV0(),H.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:s,txVersion:o,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new Ce(n.mintA.address),new Ce(n.mintB.address),new Ce(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),g=this.createTxBuilder(),{bypassAssociatedCheck:b,checkCreateATAOwner:P}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),S=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:A}=S,h=he(S,["tokenAccount"]);g.addInstruction(h);let x=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:b,checkCreateATAOwner:P}),{tokenAccount:I}=x,T=he(x,["tokenAccount"]);return g.addInstruction(T),g.addInstruction({instructions:[Fo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:I,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(a),o===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:s,farmInfo:o,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Pi,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder();g.addCustomComputeBudget(c);let b={};for(let W of this.scope.account.tokenAccountRawInfos)(b[W.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,W.accountInfo.mint,Pi).publicKey.equals(W.pubkey))&&(b[W.accountInfo.mint.toString()]=W.pubkey);let P=b[t.lpMint.address];if(P===void 0)throw Error("find lp account error in trade accounts");let A=i.add(a!=null?a:new rt(0)),h=t.mintA.address===Ie.WSOL.mint.toString(),I=t.mintB.address===Ie.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pi,mint:new Ce(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pi,mint:new Ce(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(K||{}),x===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=x,o!==void 0&&!(a!=null&&a.isZero())){let W=dt[o.programId],lt=Ge({programId:new Ce(o.programId),poolId:new Ce(o.id),owner:this.scope.ownerPubKey,version:W}),Pn,rn=await this.scope.connection.getAccountInfo(lt);if(rn&&(Pn=Cn(W).decode(rn.data)),W!==6&&!Pn){let{instruction:Xt,instructionType:Li}=di({id:new Ce(o.id),programId:new Ce(o.programId),version:W,ledger:lt,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[Xt],instructionTypes:[Li]})}let Gt=[];for(let Xt of o.rewardInfos){let Li=Xt.mint.address===Ie.WSOL.mint.toString();if(b[Xt.mint.address])Gt.push(b[Xt.mint.address]);else{let{account:ps,instructionParams:fs}=await this.scope.account.getOrCreateTokenAccount({mint:new Ce(Xt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Li,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});ps||this.logAndCreateError("farm reward account not found:",Xt.mint.address),fs&&g.addInstruction(fs),Gt.push(ps)}}let on=(await this.scope.api.fetchFarmKeysById({ids:o.id}))[0],Mt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:o,farmKeys:on,lpAccount:P,rewardAccounts:Gt},kn=dt[o.programId],tc=kn===6?ar(Mt):kn===5?ur(Mt):cr(Mt),nc={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};g.addInstruction({instructions:[tc],instructionTypes:[nc[kn]]})}let O=await this.getAmmPoolKeys(t.id),N=Fo({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:P,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:A});g.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[U,F]=t.mintA.address===n.mintA.address?[T,x]:[x,T],H=await this.scope.clmm.getClmmPoolKeys(t.id),Z=await Be.openPositionFromBaseInstructions(D(C({poolInfo:n,poolKeys:H,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:F},withMetadata:"create"},s),{base:u,getEphemeralSigners:y}));return g.addInstruction({instructions:[...Z.instructions],signers:Z.signers,instructionTypes:[...Z.instructionTypes],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),f===0?g.sizeCheckBuildV0():g.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:s,baseAmount:o,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var U;let g=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),b=c.useSOLBalance&&i.mint.equals(xu),P=c.useSOLBalance&&s.mint.equals(xu),A=this.createTxBuilder(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:b?{payer:g,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:m});A.addInstruction(I||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:g,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),h===void 0||T===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:s.mint,baseDecimals:i.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:O,instructionType:N}=Za(D(C({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:T,userLpVault:ye(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:o,pcAmount:a}));return A.addInstruction({instructions:[O],instructionTypes:[N]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=Qo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return qa.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:s,slippage:o}){let[a,u]=[i.toString(),s.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.programId===$r.toBase58(),g;if(f)g=new V(y.toString()).div(p.toString());else{let O=Ya(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?g=new V(1e6).div(O*1e6):g=new V(O*1e6).div(1e6)}let b=n,P=new rt(0),A=new rt(0);if(!b.isZero())if(f){A=$n(b.mul(Au),Pu);let O=b.sub(A),N=p.add(O);P=y.mul(O).div(N)}else{A=b.mul(new rt(2)).div(new rt(1e4));let O=b.sub(A);d==="quote"?P=new rt(Xa(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber())):P=new rt(za(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),O.toNumber()))}let h=new rt(new V(P.toString()).mul(1-o).toFixed(0)),I=P,T=h,S=new V(P.toString()).div(new V(b.sub(A).toString()).toFixed(0));!b.isZero()&&!P.isZero()&&(S=new V(P.toString()).div(b.sub(A).toString()));let x=g.sub(S).div(g).mul(100);return{amountOut:I,minAmountOut:T,currentPrice:g,executionPrice:S,priceImpact:x,fee:A}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:s,fixedSide:o,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new Ce(l.address),programId:new Ce(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Ce(m.address),programId:new Ce(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Ce(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=he(h,["tokenAccount"]);c.addInstruction(f);let I=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Ce(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=I,b=he(I,["tokenAccount"]);c.addInstruction(b);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[fi({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:o})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await tt(this.scope.connection,t.map(l=>({pubkey:new Ce(l)})),n),s={},o=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=mr.decode(m.accountInfo.data);s[String(t[l])]=D(C({},d),{programId:m.accountInfo.owner}),o.push(d.baseVault,d.quoteVault)}let a={},u=await tt(this.scope.connection,o.map(l=>({pubkey:new Ce(l)})),n);for(let l=0;l<o.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+o[l]);a[String(o[l])]=new rt(hd.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(s)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=D(C({},m),{baseReserve:d,quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(m.quoteDecimal.toString())).div(new V(d.toString()).div(new V(10).pow(m.baseDecimal.toString())))})}return c}};import{PublicKey as se}from"@solana/web3.js";import ft from"bn.js";import{TOKEN_PROGRAM_ID as Bu}from"@solana/spl-token";var Pr=class extends xe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||se.default,mint1:i,mint2:s,ammConfig:o,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new ft(new se(i.address).toBuffer()).gt(new ft(new se(s.address).toBuffer()))?[s,i,new V(1).div(a)]:[i,s,a],g=ee.priceToSqrtPriceX64(f,p.decimals,y.decimals),b=await Be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:o.id,initialPriceX64:g,startTime:u,forerunCreate:l});return d.addInstruction(b),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:D(C({},b.address),{programId:t.toString(),id:b.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:b.address.mintAVault.toString(),B:b.address.mintBVault.toString()},rewardInfos:[],config:{id:o.id.toString(),index:o.index,protocolFeeRate:o.protocolFeeRate,tradeFeeRate:o.tradeFeeRate,tickSpacing:o.tickSpacing,fundFeeRate:o.fundFeeRate,description:o.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:b.address.poolId.toString(),mintA:p,mintB:y,feeRate:o.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:o.id.toString(),index:o.index,protocolFeeRate:o.protocolFeeRate,tradeFeeRate:o.tradeFeeRate,tickSpacing:o.tickSpacing,fundFeeRate:o.fundFeeRate,description:o.description,defaultRange:0,defaultRangePoint:[]}},lu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:s,base:o,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),g=null,b=null,P=n.useSOLBalance&&e.mintA.address===J.toString(),A=n.useSOLBalance&&e.mintB.address===J.toString(),[h,I]=o==="MintA"?[a,u]:[u,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(g=T),f.addInstruction(S||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||I.isZero()?{payer:this.scope.ownerPubKey,amount:I}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(K||{}),(!g||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let O=t||await this.getClmmPoolKeys(e.id),N=await Be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:O,ownerInfo:D(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b}),tickLower:i,tickUpper:s,base:o,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(N),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:N.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:s,tickLower:o,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,g=null,b=n.useSOLBalance&&e.mintA.address===J.toBase58(),P=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:b?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:I,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(g=I),y.addInstruction(T||{}),(f===void 0||g===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},tickLower:o,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:s,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:s,liquidity:o,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:o,amountMaxA:i,amountMaxB:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:s,otherAmountMax:o,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),g=a.useSOLBalance&&t.mintB.address===J.toString(),{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(i==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});b&&(p=b),d.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(h||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=await this.getClmmPoolKeys(t.id),T=Be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:i,baseAmount:s,otherAmountMax:o});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:s,amountMinB:o,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===J.toString(),y=i.useSOLBalance&&t.mintB.address===J.toString(),f,g,{account:b,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=b,P&&d.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});g=A,h&&d.addInstruction(h);let I=[];for(let K of t.rewardDefaultInfos){let O=i.useSOLBalance&&K.mint.address===J.toString(),N;if(K.mint.address===t.mintA.address)N=f;else if(K.mint.address===t.mintB.address)N=g;else{let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(K.mint.programId),mint:new se(K.mint.address),notUseTokenAccount:O,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!O,associatedOnly:O?!1:u,checkCreateATAOwner:c});N=U,F&&d.addInstruction(F)}I.push(N)}!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=await this.getClmmPoolKeys(t.id),S=await Be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:I},liquidity:a,amountMinA:s,amountMinB:o});d.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let x=C({},S.address);if(i.closePosition){let K=await Be.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=C(C({},x),K.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),s=await this.getClmmPoolKeys(e.id),o=Be.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(o).versionBuild({txVersion:n,extInfo:{address:o.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(n.mint.address),mint:new se(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:s});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Be.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new se(n.mint.programId),mint:new se(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(new V(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:s});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=Be.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new se(l.mint.programId),mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});c=C(C({},c),g.address),u.addInstruction(g)}return u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(J),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(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:i,checkCreateATAOwner:s});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Be.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:o,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ft(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:i,checkCreateATAOwner:s});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Be.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:te.decimalToX64(l.perSecond)}});u.addInstruction(f),c=C(C({},c),f.address)}return u.addCustomComputeBudget(o),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1}){let o=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());o||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(J),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(o.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:s});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Be.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1}){let o=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:s});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&o.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Be.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});o.addInstruction(y),a=C(C({},a),y.address)}return o.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:s,observationId:o,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===J.toBase58(),y=a.useSOLBalance&&e.mintB.address===J.toBase58(),f;!s||s.equals(new V(0))?f=t.toString()===e.mintA.address?Lt.add(new ft(1)):Ot.sub(new ft(1)):f=ee.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let g;if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});g=A,h&&d.addInstruction(h)}let b;if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});b=A,h&&d.addInstruction(h)}(!g||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return d.addInstruction(Be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:b},inputMint:new se(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:s=!1,programId:o,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,o).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),y=n.useSOLBalance&&d.mintB.address===J.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new se(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:s});f=A,h&&l.addInstruction(h)}let g=c[d.mintB.address];if(!g){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new se(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:s});g=A,h&&l.addInstruction(h)}c[d.mintA.address]=f,c[d.mintB.address]=g;let b=[];for(let A of d.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===J.toString(),I=c[A.mint.address];if(!I){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(A.mint.programId),mint:new se(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});I=T,S&&l.addInstruction(S)}c[A.mint.address]=I,b.push(I)}let P=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let h=Be.decreaseLiquidityInstructions({poolInfo:d,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g,rewardAccounts:b},liquidity:new ft(0),amountMinA:new ft(0),amountMinB:new ft(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(pr(e).publicKey);return t?fu.decode(t.data).whitelistMints.filter(i=>!i.equals(se.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(o=>o.accountInfo.amount.eq(new ft(1))).map(o=>pt(new se(e),o.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),s=[];return i.forEach(o=>{if(!o)return;let a=Ai.decode(o.data);s.push(a)}),s}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await tt(this.scope.connection,e.map(s=>({pubkey:new se(s)})),t),i={};for(let s=0;s<e.length;s++){let o=n[s];if(o===null||!o.accountInfo)throw Error("fetch pool info error: "+String(e[s]));let a=yn.decode(o.accountInfo.data),u=ee.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();i[String(e[s])]=D(C({},a),{currentPrice:u,programId:o.accountInfo.owner})}return i}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(u=>e[u].ammConfig.toBase58())),i=await tt(this.scope.connection,Array.from(n).map(u=>({pubkey:new se(u)}))),s={};i.forEach(u=>{!u.accountInfo||(s[u.pubkey.toBase58()]=pu.decode(u.accountInfo.data))});let o=await Ke.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(u=>{var m,d,p,y;let[c,l]=[e[u].mintA.toBase58(),e[u].mintB.toBase58()];return{id:u,programId:e[u].programId.toBase58(),mintA:cn({address:c,decimals:e[u].mintDecimalsA,programId:t[c].programId.toBase58()||Bu.toBase58(),extensions:{feeConfig:(m=t[c])!=null&&m.feeConfig?Lo((d=t[c])==null?void 0:d.feeConfig):void 0}}),mintB:cn({address:l,decimals:e[u].mintDecimalsB,programId:t[l].programId.toBase58()||Bu.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Lo((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[u].currentPrice,config:D(C({},s[e[u].ammConfig.toBase58()]),{id:e[u].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Ke.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(o)});return{computeClmmPoolInfo:o,computePoolTickData:a}}};import{PublicKey as X}from"@solana/web3.js";import{NATIVE_MINT as hi,TOKEN_PROGRAM_ID as nn,AccountLayout as Vd}from"@solana/spl-token";var Td=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Id=Buffer.from("amm_config","utf8"),xd=Buffer.from("pool","utf8"),Bd=Buffer.from("pool_lp_mint","utf8"),Sd=Buffer.from("pool_vault","utf8"),Kd=Buffer.from("observation","utf8");function Cd(r){return oe([Td],r)}function Rd(r,e){return oe([Id,Nd(e)],r)}function Ld(r,e,t,n){return oe([xd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Od(r,e){return oe([Bd,e.toBuffer()],r)}function Su(r,e,t){return oe([Sd,e.toBuffer(),t.toBuffer()],r)}function ki(r,e){return oe([Kd,e.toBuffer()],r)}function Nd(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Ku({programId:r,mintA:e,mintB:t}){let n=Rd(r,0).publicKey,i=Cd(r).publicKey,s=Ld(r,n,e,t).publicKey,o=Od(r,s).publicKey,a=Su(r,s,e).publicKey,u=Su(r,s,t).publicKey,c=ki(r,s).publicKey;return{poolId:s,configId:n,authority:i,lpMint:o,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as kr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo,TOKEN_2022_PROGRAM_ID as Cu,ASSOCIATED_TOKEN_PROGRAM_ID as Md}from"@solana/spl-token";var _d=ae("Raydium_cpmm"),hr={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 Ru(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y,f,g,b,P,A){let h=_([w("amountMaxA"),w("amountMaxB"),w("openTime")]),I=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Md,isSigner:!1,isWritable:!1},{pubkey:Dr,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1}],T=Buffer.alloc(h.span);return h.encode({amountMaxA:b,amountMaxB:P,openTime:A},T),new kr({keys:I,programId:r,data:Buffer.from([...hr.initialize,...T])})}function Lu(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Cu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],b=Buffer.alloc(f.span);return _d.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},b),new kr({keys:g,programId:r,data:Buffer.from([...hr.deposit,...b])})}function Ou(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMinA"),w("amountMinB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Cu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Vs,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},b),new kr({keys:g,programId:r,data:Buffer.from([...hr.withdraw,...b])})}function Nu(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y,f){let g=_([w("amountIn"),w("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountIn:y,amounOutMin:f},P),new kr({keys:b,programId:r,data:Buffer.from([...hr.swapBaseInput,...P])})}function Mu(r,e,t,n,i,s,o,a,u,c,l,m,d,p,y,f){let g=_([w("amountInMax"),w("amountOut")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],P=Buffer.alloc(g.span);return g.encode({amountInMax:y,amountOut:f},P),new kr({keys:b,programId:r,data:Buffer.from([...hr.swapBaseOutput,...P])})}import ze from"bn.js";var _u=_([pe(8),v("bump"),ve("disableCreatePool"),Ct("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),G(w(),16)]),Vu=_([pe(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),v("bump"),v("status"),v("lpDecimals"),v("mintDecimalA"),v("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),G(w(),32)]);var Tr=class extends xe{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await this.scope.connection.getMultipleAccountsInfo(e.map(m=>new X(m))),i={},s=new Set,o=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=Vu.decode(d.data);i[String(e[m])]=p,s.add(String(p.configId)),o.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...s],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new X(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=_u.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(o.map(m=>new X(m)));for(let m=0;m<o.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+o[m]);u[String(o[m])]=new ze(Vd.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(i)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=D(C({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(d.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(d.mintDecimalA)))})}return l}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:s=!1,checkCreateATAOwner:o=!1,txVersion:a,computeBudgetConfig:u}=m,c=he(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var U,F,H;let d=i.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new ze(new X(c.mintA.address).toBuffer()).lte(new ze(new X(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[g,b]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===hi.toBase58(),A=i.useSOLBalance&&f.address===hi.toBase58(),[h,I]=[new X(y.address),new X(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:s,checkCreateATAOwner:o});T.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:new X(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:b}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:o});if(T.addInstruction(O||{}),S===void 0||K===void 0)throw Error("you don't has some token account");let N=Ku({programId:e,mintA:h,mintB:I});return T.addInstruction({instructions:[Ru(e,this.scope.ownerPubKey,N.configId,N.authority,N.poolId,h,I,N.lpMint,S,K,ye(this.scope.ownerPubKey,N.lpMint).publicKey,N.vaultA,N.vaultB,t,new X((F=y.programId)!=null?F:nn),new X((H=f.programId)!=null?H:nn),N.observationId,g,b,n)],instructionTypes:[E.CpmmCreatePool]}),T.addCustomComputeBudget(u),T.versionBuild({txVersion:a,extInfo:{address:D(C({},N),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:s,computeResult:o,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=o?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:g}=o||this.computePairAmount({poolInfo:D(C({},t),{lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new je(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),b=g.amount,P=t.mintA.address===hi.toString(),A=t.mintB.address===hi.toString(),h=this.createTxBuilder(),[I,T]=[new X(t.mintA.address),new X(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:b).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:b}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(x||{});let{account:K,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?b:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?b:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});h.addInstruction(O||{}),!S&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let N=await l.getCreatedTokenAccount({mint:new X(t.lpMint.address)}),W=await l.handleTokenAccount({side:"out",amount:0,mint:new X(t.lpMint.address),tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:U}=W,F=he(W,["tokenAccount"]);h.addInstruction(F);let H=await this.getCpmmPoolKeys(t.id),Z=new je(new ze(1)).sub(s);return h.addInstruction({instructions:[Lu(new X(t.programId),this.scope.ownerPubKey,new X(H.authority),new X(t.id),U,S,K,new X(H.vault.A),new X(H.vault.B),I,T,new X(t.lpMint.address),o?o==null?void 0:o.liquidity:Z.mul(y).quotient,i?f.amount:b,i?b:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var U,F;let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:s,txVersion:o}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new je(new ze(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[Pe(c,t.mintA.extensions.feeConfig,m,!0),Pe(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[g,b]=[new X(t.mintA.address),new X(t.mintB.address)],P=g.equals(J),A=b.equals(J),h,I,{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new X(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=T,S&&f.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new X(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});I=x,K&&f.addInstruction(K),(!h||!I)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let O=await y.getCreatedTokenAccount({mint:new X(t.lpMint.address)});O||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let N=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Ou(new X(t.programId),this.scope.ownerPubKey,new X(N.authority),new X(t.id),O,h,I,new X(N.vault.A),new X(N.vault.B),g,b,new X(t.lpMint.address),n,c.sub((U=d.fee)!=null?U:new ze(0)),l.sub((F=p.fee)!=null?F:new ze(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:N.lookupTableAccount?[N.lookupTableAccount]:[]}),f.addCustomComputeBudget(s),f.versionBuild({txVersion:o})}async swap(e){var I,T,K,O,N,U;let{poolInfo:t,baseIn:n,swapResult:i,slippage:s=0,config:o,computeBudgetConfig:a,txVersion:u}=e,{bypassAssociatedCheck:c,checkCreateATAOwner:l}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),m=this.createTxBuilder(),[d,p]=[new X(t.mintA.address),new X(t.mintB.address)],y=await this.scope.account.getCreatedTokenAccount({programId:new X((I=t.mintA.programId)!=null?I:nn),mint:d,associatedOnly:!1}),f=await this.scope.account.getCreatedTokenAccount({programId:new X((T=t.mintB.programId)!=null?T:nn),mint:p,associatedOnly:!1});i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new ze((1-s)*1e4)).div(new ze(1e4));let S=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:0,programId:new X(t.mintA.programId),mint:d,tokenAccount:y,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:g}=S,b=he(S,["tokenAccount"]);m.addInstruction(b);let x=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?0:i.sourceAmountSwapped,programId:new X(t.mintB.programId),mint:p,tokenAccount:f,bypassAssociatedCheck:c,checkCreateATAOwner:l}),{tokenAccount:P}=x,A=he(x,["tokenAccount"]);m.addInstruction(A),!g&&!P&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?Nu(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),g,P,new X(h.vault.A),new X(h.vault.B),new X((K=t.mintA.programId)!=null?K:nn),new X((O=t.mintB.programId)!=null?O:nn),d,p,ki(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Mu(new X(t.programId),this.scope.ownerPubKey,new X(h.authority),new X(h.config.id),new X(t.id),P,g,new X(h.vault.B),new X(h.vault.A),new X((N=t.mintB.programId)!=null?N:nn),new X((U=t.mintA.programId)!=null?U:nn),p,d,ki(new X(t.programId),new X(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:u})}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:i,slippage:s,epochInfo:o,baseIn:a}){var P,A,h,I,T,S,x,K;let u=1-Number(s.toSignificant())/100,c=new ze(new V(i).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=Pe(c,e[a?"mintA":"mintB"].extensions.feeConfig,o,!1),m=c.sub((P=l.fee)!=null?P:new ze(0)),d=new ze(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(h=(A=l.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${s.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:mt,fee:void 0,expirationTime:void 0};if(!m.isZero()){let O=Ed(y,t,n,d);this.logDebug("lpAmountData:",{amountA:O.amountA.toString(),amountB:O.amountB.toString()}),f=Pe(O[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,o,!0)}let g=new je(new ze(1)).add(s),b=Pe(g.mul(f.amount.sub((I=f.fee)!=null?I:new ze(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,o,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",b.amount.toString(),"maxAnotherAmountFee:",(K=(x=b.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:b,liquidity:y}}};function Ed(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new ze(1)));let s=r.mul(t).div(n);return!s.isZero()&&!r.mul(t).mod(n).isZero()&&(s=s.add(new ze(1))),{amountA:i,amountB:s}}import{PublicKey as wn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ct,TOKEN_2022_PROGRAM_ID as rs,createTransferInstruction as vd}from"@solana/spl-token";import xi from"bn.js";import{TOKEN_PROGRAM_ID as es,TOKEN_2022_PROGRAM_ID as $o}from"@solana/spl-token";import{PublicKey as yt,TransactionInstruction as ts,SystemProgram as Fu}from"@solana/web3.js";import Jo from"bn.js";function XI(r,e,t,n,i,s,o,a,u,c,l,m){let d=_([v("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:Fu.programId,isSigner:!1,isWritable:!1},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:new yt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new yt(t.id),isSigner:!1,isWritable:!0},{pubkey:new yt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new yt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:c,amountOut:l},y),new ts({keys:p,programId:r,data:y})}function zI(r,e,t,n,i,s,o,a,u,c){let l=_([v("instruction")]),m=[{pubkey:Fu.programId,isSigner:!1,isWritable:!1},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:new yt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new yt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new yt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=fe(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(u)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=fe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new yt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=fe(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new ts({keys:m,programId:r,data:d})}function Eu(r,e,t,n,i,s){if(r.version===4){let o=fe(e);return[{pubkey:o.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.authority,isSigner:!1,isWritable:!1},{pubkey:o.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:o.marketAuthority,isSigner:!1,isWritable:!0},{pubkey:o.openOrders,isSigner:!1,isWritable:!0},{pubkey:o.vault.A,isSigner:!1,isWritable:!0},{pubkey:o.vault.B,isSigner:!1,isWritable:!0},{pubkey:o.marketId,isSigner:!1,isWritable:!0},{pubkey:o.marketBids,isSigner:!1,isWritable:!0},{pubkey:o.marketAsks,isSigner:!1,isWritable:!0},{pubkey:o.marketEventQueue,isSigner:!1,isWritable:!0},...o.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:o.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:o.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0}]]}else if(r.version===5){let o=fe(e);return[{pubkey:o.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.authority,isSigner:!1,isWritable:!1},{pubkey:o.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:new yt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:o.openOrders,isSigner:!1,isWritable:!0},{pubkey:o.vault.A,isSigner:!1,isWritable:!0},{pubkey:o.vault.B,isSigner:!1,isWritable:!0},{pubkey:o.marketId,isSigner:!1,isWritable:!0},{pubkey:o.marketBids,isSigner:!1,isWritable:!0},{pubkey:o.marketAsks,isSigner:!1,isWritable:!0},{pubkey:o.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0},{pubkey:o.id,isSigner:!1,isWritable:!0}]}else if(r.version===6){let o=r,a=fe(e),u=o.mintA.address===t;return[{pubkey:new yt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:r.observationId,isSigner:!1,isWritable:!0},...a.mintA.programId.equals($o)||a.mintB.programId.equals($o)?[{pubkey:$o,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(s!=null?s:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:st(new yt(String(r.programId)),new yt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else throw Error("make swap ins error")}function Fd(r,e,t,n,i,s,o,a,u,c,l,m,d,p){let y=_([v("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:es,isSigner:!1,isWritable:!1}];f.push(...Eu(a,c,s,t,n,p[0])),f.push(...Eu(u,l,o,n,i,p[1]));let g=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:d},g),new ts({keys:f,programId:r,data:g})}function vu({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,s,o,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=fe(m),p=t.equals(d.mintA.address)?Lt.add(at):Ot.sub(at);return Be.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((s=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?s:new Jo(0)),sqrtPriceLimitX64:p,remainingAccounts:(o=n.remainingAccounts[0])!=null?o:[]})}else{let m=n.poolKey[0];return{signers:[],instructions:[fi({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((u=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?u:new Jo(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Fd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new Jo(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var Du={[$i.toBase58()]:3},Wu={3:$i};var ns=_([pe(5),pe(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),qu={3:ns};import{PublicKey as Uu}from"@solana/web3.js";var Ti=ae("Serum"),Ii=class{static getProgramId(e){let t=Wu[e];return t||Ti.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Du[t];return n||Ti.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=qu[e];return t||Ti.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,s;for(;i<100;){try{let o=n.concat(Buffer.from([i]),Buffer.alloc(7));s=Uu.createProgramAddressSync(o,e)}catch(o){if(o instanceof TypeError)throw o;i++;continue}return{publicKey:s,nonce:i}}return Ti.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Uu.default,nonce:i}}};var Ut=new xi(0),Ir=class extends xe{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(J));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:i=1}=e,s=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let a=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(a);let u=j(t);for(let c=0;c<s.length;c++)u.gte(s[c].amount)?(o.addInstruction({instructions:[Ft({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(s[c].amount)):(o.addInstruction({instructions:[Ft({tokenAccount:s[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Jn({destination:a.addresses.newAccount,source:s[c].publicKey,amount:u,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.versionBuild({txVersion:i})}async wrapWSol(e,t,n){let i=await this.getWSolAccounts(),s=this.createTxBuilder(),o=await vt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return s.addInstruction(o),i.length&&s.addInstruction({instructions:[Jn({destination:i[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Ft({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),s.versionBuild({txVersion:n!=null?n:1})}async fetchRoutePoolBasicInfo(){let e=await this.scope.connection.getProgramAccounts($r,{dataSlice:{offset:mr.offsetOf("baseMint"),length:64}}),t=_([B("baseMint"),B("quoteMint")]),n=e.map(a=>({id:a.pubkey,version:4,mintA:t.decode(a.account.data).baseMint,mintB:t.decode(a.account.data).quoteMint})),i=_([B("mintA"),B("mintB")]);return{clmmPools:(await this.scope.connection.getProgramAccounts(ia,{filters:[{dataSize:yn.span}],dataSlice:{offset:yn.offsetOf("mintA"),length:64}})).map(a=>{let u=i.decode(a.account.data);return{id:a.pubkey,version:6,mintA:u.mintA,mintB:u.mintB}}),ammPools:n}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:i}){e=e.toString()===wn.default.toString()?J:e,t=t.toString()===wn.default.toString()?J:t;let s={},o={},a=[],u={};for(let l of n!=null?n:[]){if((l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),o[l.id.toString()]=l),l.mintA.equals(e)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintB.equals(e)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].in.push(l)}if(l.mintA.equals(t)){let m=l.mintB.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].out.push(l)}if(l.mintB.equals(t)){let m=l.mintA.toString();u[m]===void 0&&(u[m]={mintProgram:ct,in:[],out:[],mDecimals:0}),u[m].out.push(l)}}let c=[];for(let l of i)(l.mintA.equals(e)&&l.mintB.equals(t)||l.mintA.equals(t)&&l.mintB.equals(e))&&(a.push(l),s[l.id.toBase58()]=l,c.push(l)),l.mintA.equals(e)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].in.push(l)),l.mintB.equals(e)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].in.push(l)),l.mintA.equals(t)&&(u[l.mintB.toBase58()]===void 0&&(u[l.mintB.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintB.toBase58()].out.push(l)),l.mintB.equals(t)&&(u[l.mintA.toBase58()]===void 0&&(u[l.mintA.toBase58()]={skipMintCheck:!0,mintProgram:ct,in:[],out:[],mDecimals:0}),u[l.mintA.toBase58()].out.push(l));for(let l of Object.keys(u)){if(u[l].in.length===1&&u[l].out.length===1&&u[l].in[0].id.equals(u[l].out[0].id)){delete u[l];continue}if(u[l].in.length===0||u[l].out.length===0){delete u[l];continue}let m=u[l];for(let d of m.in)for(let p of m.out)d.version===6&&o[d.id.toString()]===void 0?o[d.id.toString()]=d:d.version!==6&&s[d.id.toString()]===void 0&&(s[d.id.toString()]=d),p.version===6&&o[p.id.toString()]===void 0?o[p.id.toString()]=p:p.version!==6&&s[p.id.toString()]===void 0&&(s[p.id.toString()]=p)}return{directPath:a,addLiquidityPools:c,routePathDict:u,needSimulate:Object.values(s),needTickArray:Object.values(o)}}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:i,epochInfo:s,slippage:o,outputToken:a,amountIn:u}){if(e.version===6){let{allTrade:c,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:g,fee:b,remainingAccounts:P,executionPriceX64:A}=Ke.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:o,epochInfo:s,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(g.toFixed()),fee:[b],remainingAccounts:[P],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<i,poolType:"CLMM",slippage:o,clmmExPriceX64:[A],expirationTime:Kt(l.expirationTime,p)}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:c,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:u.raw,mintIn:u.token.mint,mintOut:a.address,slippage:o});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:Ro(D(C({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Ro(D(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new Ae(u.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<i,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:o,clmmExPriceX64:[void 0]}}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:i,simulateCache:s,tickCache:o,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var b,P,A,h,I,T,S,x,K;let m=l===void 0?new xi(0):e.raw.mul(new xi(l.feeBps.toNumber())).div(new xi(1e4)),d=e.raw.sub(m),p=new Ae(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=D(C({},t),{address:it(t.address).toString()}),g=[];for(let O of n)try{g.push(D(C({},this.computeAmountOut({itemPool:O,tickCache:o,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(N){this.logDebug("direct error",O.version,O.id.toString(),N.message)}this.logDebug("direct done");for(let[O,N]of Object.entries(i)){let U={chainId:101,address:O,programId:N.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:N.mDecimals,tags:[],extensions:{}},F=N.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:o,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:U,amountIn:p})}}catch(W){this.logDebug("route in error",Z.version,Z.id.toString(),W.message);return}}).sort((Z,W)=>{var rn,Gt,on,Mt;let lt=Z===void 0?Ut:Z.data.amountOut.amount.raw.sub((Gt=(rn=Z.data.amountOut.fee)==null?void 0:rn.raw)!=null?Gt:Ut),Pn=W===void 0?Ut:W.data.amountOut.amount.raw.sub((Mt=(on=W.data.amountOut.fee)==null?void 0:on.raw)!=null?Mt:Ut);return lt.lt(Pn)?1:-1})[0];if(F===void 0)continue;let H=new Ae(pi(U),F.data.amountOut.amount.raw.sub((P=(b=F.data.amountOut.fee)==null?void 0:b.raw)!=null?P:Ut));for(let Z of N.out)try{let W=this.computeAmountOut({itemPool:Z,tickCache:o,simulateCache:s,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:H});g.push(D(C({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new Je({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((h=(A=W.amountOut.fee)==null?void 0:A.raw)!=null?h:Ut)}).toFixed()),priceImpact:new V(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,Z],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(I=W.amountOut.fee)!=null&&I.raw?new Ae(F.data.amountOut.amount.token,((S=(T=F.data.amountOut.fee)==null?void 0:T.raw)!=null?S:Ut).add((K=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?K:Ut)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:Kt(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",Z.version,Z.id.toString(),W.message)}}return g.filter(O=>O.allTrade).sort((O,N)=>O.amountOut.amount.raw.sub(N.amountOut.amount.raw).gt(Ut)?-1:1)}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:i,routeProgram:s,txVersion:o}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(J),m=c.amount.token.mint.equals(J),d=u.amount.token.mint,p=u.amount.token.isToken2022?rs:ct,y=c.amount.token.mint,f=c.amount.token.isToken2022?rs:ct,{account:g,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&a.addInstruction(b),g===void 0)throw Error("input account check error");let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:y,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});A&&a.addInstruction(A);let h;if(e.routeType==="route"){let S=e.middleToken,{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.isToken2022?rs:ct,mint:S.mint,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:n.checkCreateATAOwner});h=x,K&&a.addInstruction(K)}let I=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),T=vu({routeProgram:s,inputMint:d,swapInfo:D(C({},e),{poolInfo:[...e.poolInfoList],poolKey:I}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:g,routeToken:h,destinationToken:P}});return e.feeConfig!==void 0&&a.addInstruction({instructions:[vd(g,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]}),a.addInstruction(T),o===0?a.sizeCheckBuildV0({computeBudgetConfig:i,address:T.address}):a.sizeCheckBuild({computeBudgetConfig:i,address:T.address})}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let i=new Set([...e.needTickArray.map(d=>[d.mintA.toBase58(),d.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let s=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(d=>d.id)),o=Iu(s);Object.values(o).forEach(d=>{i.delete(d.mintA.address),i.delete(d.mintB.address)}),console.log("fetching mints info, total: ",i.size);let a=await Zs({connection:this.scope.connection,mints:Array.from(i).map(d=>new wn(d))});Object.values(o).forEach(d=>{a[d.mintA.address]={address:new wn(d.mintA.address),programId:ct,mintAuthority:null,supply:BigInt(0),decimals:d.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},a[d.mintB.address]={address:new wn(d.mintB.address),programId:ct,mintAuthority:null,supply:BigInt(0),decimals:d.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching clmm pools info, total:",e.needTickArray.length);let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(d=>d.id)}),{computeClmmPoolInfo:c,computePoolTickData:l}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:u,mintInfos:a}),m=Object.keys(e.routePathDict).reduce((d,p)=>D(C({},d),{[p]:D(C({},e.routePathDict[p]),{mintProgram:a[p].programId,mDecimals:a[p].decimals,in:e.routePathDict[p].in.map(y=>o[y.id.toBase58()]||c[y.id.toBase58()]),out:e.routePathDict[p].out.map(y=>o[y.id.toBase58()]||c[y.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:s,ammSimulateCache:o,clmmPoolsRpcInfo:u,computeClmmPoolInfo:c,computePoolTickData:l,routePathDict:m}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let i=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(i.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(i)});Object.keys(c).forEach(l=>{t[l]=c[l]})}if(new Set(e.filter(c=>c.version===4&&!n[c.id.toString()]).map(c=>c.id.toString())).size>0){let c=this.scope.liquidity.getRpcPoolInfos(Array.from(i));Object.keys(c).forEach(l=>{n[l]=c[l]})}let o=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};o.size>0&&(await tt(this.scope.connection,Array.from(o).map(l=>({pubkey:new wn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=ns.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Ii.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let u=[];return e.forEach(c=>{if(c.version===6){let l=t[c.id.toString()],m={programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:D(C({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else{let l=n[c.id.toString()],m=C({programId:c.programId,id:c.id,mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Ho({programId:new wn(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}}),u}};import{TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as Wd,Transaction as is,TransactionInstruction as qd}from"@solana/web3.js";import Gu from"bn.js";var Ye=class extends xe{static getPdaPoolId(e,t){return oe([Ye.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ye.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Gu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:s}){if(n.length===0)return[];let o=n.map(l=>Ye.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ye.VERSION_PROJECT.length;l++)a.push(...o.map(m=>Ye.getPdaOwnerId(t,m,i,l).publicKey));let u=await At(e,[...o,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=o[d],y=a[l],f=u[d],g=u[n.length+l];if(!(f&&g)||f.data.length!==Ye.POOL_LAYOUT.span||g.data.length!==Ye.OWNER_LAYOUT.span)continue;let b=Ye.POOL_LAYOUT.decode(f.data),P=Ye.OWNER_LAYOUT.decode(g.data),A=b.openTime.toNumber(),h=b.endTime.toNumber(),I=P.tokenInfo.map(x=>x.debtAmount.gt(new Gu(0))).filter(x=>!x).length!==3,T=s>A&&s<h&&b.status===1,S=I&&T;c.push({programId:t,poolId:p,ammId:b.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ye.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:S,canClaimErrorType:I?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:b.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,s=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(Ie.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(Ie.WSOL.mint),associatedOnly:u.mintAddress.equals(Ie.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),s.push(c)}n.addInstruction({instructions:[Ye.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:o,signers:a}=n.build();return[{transaction:o,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,s={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(Ie.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(Ie.WSOL.mint),associatedOnly:m.mintAddress.equals(Ie.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(s[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[Ye.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:o,signers:a}=n.build(),u=n.allInstructions;return jr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:o,signer:a}]:[{transaction:new is().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new is().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new is().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=_([]),s=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Dd,isSigner:!1,isWritable:!1}],o=Buffer.alloc(i.span);i.encode({},o);let a=Buffer.from([10,66,208,184,161,6,191,98,...o]);return new qd({keys:s,programId:e,data:a})}},bt=Ye;bt.CLAIMED_NUM=3,bt.POOL_LAYOUT=_([pe(8),v("bump"),v("status"),w("openTime"),w("endTime"),B("ammId"),G(_([v("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ye.CLAIMED_NUM,"tokenInfo"),G(w(),10,"padding")]),bt.OWNER_LAYOUT=_([pe(8),v("bump"),v("version"),B("poolId"),B("owner"),w("lpAmount"),G(_([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ye.CLAIMED_NUM,"tokenInfo"),G(w(),4,"padding")]),bt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Wd(e)),bt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},bt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as xr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qu}from"@solana/spl-token";import Br from"bn.js";import{TransactionInstruction as Gd,SYSVAR_RENT_PUBKEY as Xd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xu}from"@solana/spl-token";import{createInitializeAccountInstruction as zu}from"@solana/spl-token";import{SystemProgram as An,Transaction as Yu}from"@solana/web3.js";function Ud(r="accountFlags"){let e=new ii(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var os=_([pe(5),Ud("accountFlags"),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]);function zd({programId:r,marketInfo:e}){let t=_([v("version"),qe("instruction"),w("baseLotSize"),w("quoteLotSize"),Ct("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:Xd,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new Gd({keys:n,programId:r,data:i})}async function ju({connection:r,wallet:e,marketInfo:t}){let n=new Yu,i=await r.getMinimumBalanceForRentExemption(165);n.add(An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Xu}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Xu}),zu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),zu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let s=new Yu;return s.add(An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(os.span),space:os.span,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),An.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),zd({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:s,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var Mn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:s,txVersion:o,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ue({fromPublicKey:u,programId:s}),l=Ue({fromPublicKey:u,programId:s}),m=Ue({fromPublicKey:u,programId:s}),d=Ue({fromPublicKey:u,programId:s}),p=Ue({fromPublicKey:u,programId:s}),y=Ue({fromPublicKey:u,programId:Qu}),f=Ue({fromPublicKey:u,programId:Qu}),g=0,b=new Br(100);function P(){let K=new Br(0);for(;;)try{return{vaultOwner:xr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],s),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new Br(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),I=new Br(Math.round(10**e.decimals*n)),T=new Br(Math.round(n*10**t.decimals*i));if(I.eq(mt))throw Error("lot size is too small");if(T.eq(mt))throw Error("tick size or lot size is too small");let S=await ju({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:s,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:g,quoteDustThreshold:b,vaultSignerNonce:h,baseLotSize:I,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let K of S.slice(1,S.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return o===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 xr(e.mint),quoteMin:new xr(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 xr(e.mint),quoteMin:new xr(t.mint)}})}};import{PublicKey as Kr}from"@solana/web3.js";import{TransactionInstruction as as,SYSVAR_CLOCK_PUBKEY as Yd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as us}from"@solana/spl-token";var ss=_([v("instruction"),la("amount")]),Sr=_([v("instruction")]);function KB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:Dr,isSigner:!1,isWritable:!1},{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([s,o])=>({pubkey:o,isSigner:s==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(s)}))],i=Buffer.alloc(ss.span);return ss.encode({instruction:1,amount:Number(e)},i),new as({keys:n,programId:r,data:i})}function Bi({programId:r},e){let t=[{pubkey:us,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,s])=>({pubkey:s,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Sr.span);return Sr.encode({instruction:2},n),new as({keys:t,programId:r,data:n})}function cs(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,s=n==="base"?e.baseVault:e.quoteVault,o=Buffer.alloc(Sr.span);Sr.encode({instruction:2},o);let a=[{pubkey:us,isWritable:!1,isSigner:!1},{pubkey:Yd,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new as({programId:e.programId,keys:a,data:o})}import Hu from"bn.js";var jd={[Hn.IDO_PROGRAM_ID_V1.toString()]:1,[Hn.IDO_PROGRAM_ID_V2.toString()]:2,[Hn.IDO_PROGRAM_ID_V3.toString()]:3,[Hn.IDO_PROGRAM_ID_V4.toString()]:4},_n=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:s}){let o=this.createTxBuilder(),a=jd[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new Hu(e.coin).isZero(),!new Hu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(J),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&o.addInstruction(p);let y=u.buyInfo.mint.address.equals(J),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&g&&o.addInstruction(g),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return o.addInstruction({instructions:[...c?[Bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Kr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Bi({programId:new Kr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Kr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:s});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),o.addInstruction({instructions:[Bi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Kr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:s});let b={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new Kr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return o.addInstruction({instructions:[...c?[cs(D(C({},b),{side:"base"}))]:[],...l?[cs(D(C({},b),{side:"quote"}))]:[]]}).versionBuild({txVersion:s})}};import{PublicKey as Qd}from"@solana/web3.js";import{MintLayout as Hd,TOKEN_2022_PROGRAM_ID as ls,TOKEN_PROGRAM_ID as ms}from"@solana/spl-token";var Cr=class extends xe{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:i="strict"}=t||{},{mintList:s,blacklist:o,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(St.address,St),this._mintGroup.official.add(St.address),o.forEach(c=>{this._blackTokenMap.set(c.address,D(C({},c),{priority:-1}))}),s.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?ls.toBase58():ms.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?ls.toBase58():ms.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(C({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?ls.toBase58():ms.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(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return St;let s=(await this.scope.api.getTokenInfo([n]))[0];if(s)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(C({},s),{priority:2})),s;let o=await this.scope.connection.getAccountInfo(new Qd(n));if(!o)throw new Error(`mint address not found: ${n}`);let a=Hd.decode(o.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:o.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var Si=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:s,defaultChainTime:o,defaultChainTimeOffset:a,apiCacheTime:u,blockhashCommitment:c="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new Pt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=c,this.api=s,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new lr({scope:this,moduleName:"Raydium_Farm"}),this.account=new er({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Ar({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Cr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Ir({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Pr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Tr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new bt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Mn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new _n({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,value:{chainTime:o||Date.now()-a,offset:a}})}static async load(e){var l;let t=Zd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:s,logRequests:o,urlConfigs:a}=t,u=new ti({cluster:n,timeout:i,urlConfigs:a,logCount:s,logRequests:o}),c=new Si(D(C({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(ni);return this._owner.publicKey}setOwner(e){return this._owner=e?new Pt(e):void 0,this}get connection(){if(!this._connection)throw new Error(aa);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(ni),new Error(ni)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var s;let n=(s=this.apiData.jupTokenList)==null?void 0:s[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import $u from"bn.js";var ds=new $u(1e6);function $d(r,e,t){return r.mul(e).add(t).sub(new $u(1)).div(t)}function Zu(r,e,t){return r.mul(e).div(t)}var Ki=class{static tradingFee(e,t){return $d(e,t,ds)}static protocolFee(e,t){return Zu(e,t,ds)}static fundFee(e,t){return Zu(e,t,ds)}};import Rr from"bn.js";function Ci(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Jd(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=Ci(r,e);return n.gt(Vn)&&(t=t.add(new Rr(1)),e=r.div(t),n=Ci(r,t),n.gt(Vn)&&(e=e.add(new Rr(1)))),[t,e]}var Vn=new Rr(0),Ri=class{static swapWithoutFees(e,t,n){let i=t.mul(n),s=t.add(e),[o,a]=Jd(i,s),u=a.sub(t),c=n.sub(o);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,s){let o=e.mul(n).div(t),a=e.mul(i).div(t);if(s===0)return{tokenAmount0:o,tokenAmount1:a};if(s===1)return Ci(e.mul(n),t).gt(Vn)&&o.gt(Vn)&&(o=o.add(new Rr(1))),Ci(e.mul(i),t).gt(Vn)&&a.gt(Vn)&&(a=a.add(new Rr(1))),{tokenAmount0:o,tokenAmount1:a};throw Error("roundDirection value error")}};var Ju=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Ju||{}),ec=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let s=Ki.tradingFee(e,i),o=e.sub(s),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ri.swapWithoutFees(o,t,n),c=a.add(s);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:s}}};var QS=r=>r;export{nd as AMM_CONFIG_SEED,su as BIT_PRECISION,Pr as Clmm,pu as ClmmConfigLayout,Be as ClmmInstrument,Ri as ConstantProductCurve,_u as CpmmConfigInfoLayout,Ki as CpmmFee,Vu as CpmmPoolInfoLayout,ec as CurveCalculator,Wm as DataElement,Uo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ra as FARM_LOCK_MINT,La as FARM_LOCK_VAULT,dt as FARM_PROGRAM_TO_VERSION,Na as FARM_VERSION_TO_LEDGER_LAYOUT,Oa as FARM_VERSION_TO_STATE_LAYOUT,wi as FEE_RATE_DENOMINATOR,ds as FEE_RATE_DENOMINATOR_VALUE,ld as FETCH_TICKARRAY_COUNT,cd as Fee,Pu as LIQUIDITY_FEES_DENOMINATOR,Au as LIQUIDITY_FEES_NUMERATOR,gd as LIQUIDITY_VERSION_TO_SERUM_VERSION,TP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,au as LOG_B_2_X32,uu as LOG_B_P_ERR_MARGIN_LOWER_X64,cu as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,os as MARKET_STATE_LAYOUT_V2,ns as MARKET_STATE_LAYOUT_V3,qu as MARKET_VERSION_TO_STATE_LAYOUT,Ot as MAX_SQRT_PRICE_X64,He as MAX_TICK,Lt as MIN_SQRT_PRICE_X64,Xe as MIN_TICK,Ln as MODEL_DATA_PUBKEY,Ii as Market,te as MathUtil,qo as MaxU64,ou as MaxUint128,Wt as NEGATIVE_ONE,at as ONE,ad as OPERATION_SEED,Xo as ObservationInfoLayout,pd as ObservationLayout,fu as OperationLayout,od as POOL_REWARD_VAULT_SEED,rd as POOL_SEED,ud as POOL_TICK_ARRAY_BITMAP_SEED,id as POOL_VAULT_SEED,nu as POSITION_SEED,yn as PoolInfoLayout,Ke as PoolUtils,Ai as PositionInfoLayout,yd as PositionRewardInfoLayout,gr as PositionUtils,ah as ProtocolPositionLayout,gi as Q128,ut as Q64,Si as Raydium,fd as RewardInfo,Ju as RoundDirection,Du as SERUM_PROGRAMID_TO_VERSION,Wu as SERUM_VERSION_TO_PROGRAMID,St as SOL_INFO,ZA as SPL_MINT_LAYOUT,ee as SqrtPriceMath,Rn as StableLayout,fn as SwapMath,pn as TICK_ARRAY_BITMAP_SIZE,sd as TICK_ARRAY_SEED,Ne as TICK_ARRAY_SIZE,HP as TICK_SPACINGS,Oe as TOKEN_WSOL,qt as TickArrayBitmap,du as TickArrayBitmapExtensionLayout,br as TickArrayBitmapExtensionUtils,yr as TickArrayLayout,bd as TickLayout,bn as TickMath,ce as TickQuery,z as TickUtils,fr as U64Resolution,$P as U64_IGNORE_RANGE,Ka as Voter,hm as VoterDepositEntry,km as VoterLockup,Sa as VoterRegistrar,Pm as VoterVotingMintConfig,me as ZERO,_o as addLiquidityLayout,po as associatedLedgerAccountLayout,Bo as calFarmRewardAmount,$d as ceilDiv,Sr as claimLayout,Ft as closeAccountInstruction,di as createAssociatedLedgerAccountInstruction,qa as createPoolFeeLayout,Za as createPoolV4InstructionV2,hP as createPoolV4Layout,vt as createWSolAccountInstructions,Qe as dwLayout,go as farmAddRewardLayout,Vw as farmLedgerLayoutV3_1,nr as farmLedgerLayoutV3_2,Ew as farmLedgerLayoutV5_1,xa as farmLedgerLayoutV5_2,Ba as farmLedgerLayoutV6_1,_a as farmRewardInfoToConfig,yo as farmRewardLayout,bo as farmRewardRestartLayout,Am as farmRewardTimeInfoLayout,Ta as farmStateV3Layout,Ia as farmStateV5Layout,tr as farmStateV6Layout,uA as fetchMultipleFarmInfoAndUpdate,vh as fetchMultipleInfo,Oo as fixedSwapInLayout,No as fixedSwapOutLayout,Zu as floorDiv,Zm as formatLayout,Ue as generatePubKey,Ma as getAssociatedAuthority,Qo as getAssociatedConfigId,Ge as getAssociatedLedgerAccount,ir as getAssociatedLedgerPoolAccount,kd as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Rd as getCpmmPdaAmmConfigId,Ld as getCpmmPdaPoolId,Ku as getCreatePoolKeys,So as getDepositEntryIndex,za as getDxByDyBaseIn,Xa as getDyByDxBaseIn,Cn as getFarmLedgerLayout,Tm as getFarmStateLayout,Ho as getLiquidityAssociatedAuthority,gn as getLiquidityAssociatedId,Ek as getLiquidityFromAmounts,YP as getPdaAmmConfigId,st as getPdaExBitmapAccount,Od as getPdaLpMint,bi as getPdaMetadataKey,ki as getPdaObservationId,pr as getPdaOperationAccount,pt as getPdaPersonalPositionAddress,Cd as getPdaPoolAuthority,ru as getPdaPoolId,iu as getPdaPoolRewardVaulId,Wo as getPdaPoolVaultId,dn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,Su as getPdaVault,Po as getRegistrarAddress,Ya as getStablePrice,xo as getTokenOwnerRecordAddress,To as getVoterAddress,Io as getVoterWeightRecordAddress,ho as getVotingMintAuthority,ko as getVotingTokenMint,Om as governanceCreateTokenOwnerRecord,qP as i16ToBytes,yi as i32ToBytes,Mo as initPoolLayout,lo as initTokenAccountInstruction,zd as initializeMarket,wo as isValidFarmVersion,dr as isZero,cA as judgeFarmType,vo as leadingZeros,tu as leastSignificantBit,mr as liquidityStateV4Layout,vm as liquidityStateV5Layout,fi as makeAMMSwapInstruction,Ha as makeAddLiquidityInstruction,Co as makeAddNewRewardInstruction,Bi as makeClaimInstruction,cs as makeClaimInstructionV4,Ru as makeCreateCpmmPoolInInstruction,Va as makeCreateFarmInstruction,ju as makeCreateMarketInstruction,Ea as makeCreatorWithdrawFarmRewardInstruction,Lu as makeDepositCpmmInInstruction,Fa as makeDepositInstructionV3,va as makeDepositInstructionV5,Da as makeDepositInstructionV6,BA as makeDepositTokenInstruction,KA as makeDepositWithdrawInstruction,DP as makeInitPoolInstructionV4,KB as makePurchaseInstruction,Ko as makeRestartRewardInstruction,$a as makeSimulatePoolInfoInstruction,Nu as makeSwapCpmmBaseInInInstruction,Mu as makeSwapCpmmBaseOutInInstruction,ed as makeSwapFixedInInstruction,td as makeSwapFixedOutInstruction,vu as makeSwapInstruction,Jn as makeTransferInstruction,Ou as makeWithdrawCpmmInInstruction,cr as makeWithdrawInstructionV3,ur as makeWithdrawInstructionV5,ar as makeWithdrawInstructionV6,SA as makeWithdrawTokenInstruction,ZP as mockCreatePoolInfo,lu as mockV3CreatePoolInfo,qm as modelDataInfoLayout,eu as mostSignificantBit,ha as parseTokenAccountResp,aP as parseTokenInfo,en as poolTypeV6,ss as purchaseLayout,bm as realFarmStateV3Layout,gm as realFarmStateV5Layout,wm as realFarmV6Layout,Fo as removeLiquidityInstruction,Vo as removeLiquidityLayout,XI as route1Instruction,zI as route2Instruction,Fd as routeInstruction,vP as simulatePoolInfoInstruction,cP as solToWSolToken,Ht as splAccountLayout,Iu as toAmmComputePoolInfo,cn as toApiV3Token,Lo as toFeeConfig,pi as toToken,Ro as toTokenAmount,uP as toTokenInfo,Do as trailingZeros,Ja as u16ToBytes,UP as u32ToBytes,QS as unionArr,Im as updateFarmPoolInfo,Ao as validateFarmRewards,Mm as voterStakeRegistryCreateDepositEntry,Nm as voterStakeRegistryCreateVoter,Cm as voterStakeRegistryDeposit,Rm as voterStakeRegistryUpdateVoterWeightRecord,Lm as voterStakeRegistryWithdraw,lP as wSolToSolToken,fo as withdrawRewardLayout};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map