@raydium-io/raydium-sdk-v2 0.0.31-alpha → 0.0.32-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 (92) 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 +1 -1
  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/cpmm.js +1 -1
  40. package/lib/raydium/cpmm/cpmm.js.map +1 -1
  41. package/lib/raydium/cpmm/cpmm.mjs +1 -1
  42. package/lib/raydium/cpmm/cpmm.mjs.map +1 -1
  43. package/lib/raydium/cpmm/index.d.ts +1 -1
  44. package/lib/raydium/cpmm/layout.d.ts +1 -1
  45. package/lib/raydium/cpmm/type.d.ts +1 -1
  46. package/lib/raydium/farm/config.d.ts +1 -1
  47. package/lib/raydium/farm/farm.d.ts +3 -3
  48. package/lib/raydium/farm/index.d.ts +1 -1
  49. package/lib/raydium/farm/instruction.d.ts +1 -1
  50. package/lib/raydium/farm/layout.d.ts +1 -1
  51. package/lib/raydium/farm/type.d.ts +1 -1
  52. package/lib/raydium/farm/util.d.ts +1 -1
  53. package/lib/raydium/ido/ido.d.ts +3 -3
  54. package/lib/raydium/ido/index.d.ts +3 -3
  55. package/lib/raydium/ido/instruction.d.ts +1 -1
  56. package/lib/raydium/ido/type.d.ts +1 -1
  57. package/lib/raydium/index.d.ts +3 -3
  58. package/lib/raydium/index.js +1 -1
  59. package/lib/raydium/index.js.map +1 -1
  60. package/lib/raydium/index.mjs +1 -1
  61. package/lib/raydium/index.mjs.map +1 -1
  62. package/lib/raydium/liquidity/index.d.ts +1 -1
  63. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  64. package/lib/raydium/liquidity/layout.d.ts +2 -2
  65. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  66. package/lib/raydium/liquidity/type.d.ts +1 -1
  67. package/lib/raydium/liquidity/utils.d.ts +1 -1
  68. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  69. package/lib/raydium/marketV2/index.d.ts +3 -3
  70. package/lib/raydium/moduleBase.d.ts +3 -3
  71. package/lib/raydium/raydium.d.ts +3 -3
  72. package/lib/raydium/raydium.js +1 -1
  73. package/lib/raydium/raydium.js.map +1 -1
  74. package/lib/raydium/raydium.mjs +1 -1
  75. package/lib/raydium/raydium.mjs.map +1 -1
  76. package/lib/raydium/token/constant.d.ts +1 -1
  77. package/lib/raydium/token/index.d.ts +1 -1
  78. package/lib/raydium/token/token.d.ts +3 -3
  79. package/lib/raydium/token/type.d.ts +1 -1
  80. package/lib/raydium/token/utils.d.ts +1 -1
  81. package/lib/raydium/tradeV2/index.d.ts +2 -2
  82. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  83. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  84. package/lib/raydium/tradeV2/type.d.ts +2 -2
  85. package/lib/raydium/type.d.ts +1 -1
  86. package/lib/raydium/utils1216/index.d.ts +3 -3
  87. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  88. package/lib/{raydium-af1993ca.d.ts → raydium-03e9d402.d.ts} +3 -3
  89. package/lib/{type-502bbda1.d.ts → type-5c2ec3f0.d.ts} +1 -1
  90. package/package.json +1 -1
  91. package/src/raydium/cpmm/cpmm.ts +1 -1
  92. package/lib/{type-3b373344.d.ts → type-322fdce2.d.ts} +5 -5
package/lib/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- var ec=Object.defineProperty,tc=Object.defineProperties;var nc=Object.getOwnPropertyDescriptors;var Kr=Object.getOwnPropertySymbols;var fs=Object.prototype.hasOwnProperty,ys=Object.prototype.propertyIsEnumerable;var ps=(r,e,t)=>e in r?ec(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))fs.call(e,t)&&ps(r,t,e[t]);if(Kr)for(var t of Kr(e))ys.call(e,t)&&ps(r,t,e[t]);return r},W=(r,e)=>tc(r,nc(e));var Te=(r,e)=>{var t={};for(var n in r)fs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Kr)for(var n of Kr(r))e.indexOf(n)<0&&ys.call(r,n)&&(t[n]=r[n]);return t};import Xl from"axios";import{get as Ti,set as bs}from"lodash";import gs from"dayjs";import rc from"dayjs/plugin/utc";gs.extend(rc);var ic=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(ic||{}),Ii=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 gs().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}},xi={},ws={};function ae(r){let e=Ti(xi,r);if(!e){let t=Ti(ws,r);e=new Ii({name:r,logLevel:t}),bs(xi,r,e)}return e}function Yp(r,e){bs(ws,r,e);let t=Ti(xi,r);t&&(t.level=e)}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import yl from"big.js";import Xt from"bn.js";import Ae from"bn.js";var gn=9e15,Gt=1e9,Bi="0123456789abcdef",Rr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Si={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},hs,Ot,J=!0,Nr="[DecimalError] ",Ut=Nr+"Invalid argument: ",Ts=Nr+"Precision limit exceeded",Is=Nr+"crypto unavailable",xs="[object Decimal]",Ue=Math.floor,Oe=Math.pow,oc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ac=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Bs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,Q=7,uc=9007199254740991,cc=Rr.length-1,Ki=Lr.length-1,L={toStringTag:xs};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};L.ceil=function(){return X(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Ut+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=lc(n,Ls(n,t)),n.precision=r,n.rounding=e,X(Ot==2||Ot==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Oe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Fe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Oe(t,1/3),r=Ue((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ue(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return we(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return X(we(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return X(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/_r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wn(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=wn(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/_r(5,r)),i=wn(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(i,e,t,!0)};L.hyperbolicTangent=L.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=we(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ki)return s=pt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ki)return s=pt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,X(s,l.precision=m,l.rounding=p,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&Ue(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),_n(u.d,i=m,p))do if(a+=10,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(_n(u.d,i+=10,p));return J=!0,X(u,m,p)};L.minus=L.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?X(r,a,u):r}if(t=Ue(r.e/Q),l=Ue(d.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Mr(c,t),J?X(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):(J=!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),J=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Ci(this)};L.naturalLogarithm=L.ln=function(){return qt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?X(r,a,u):r;if(o=Ue(m.e/Q),n=Ue(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Mr(c,n),J?X(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ut+r);return t.d?(e=Ss(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};L.sine=L.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=dc(n,Ls(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ue((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(we(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,r)};L.tangent=L.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=Ue(l.e/Q)+Ue(r.e/Q),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Mr(o,t),J?X(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return Li(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(et(r,0,Gt),e===void 0?e=n.rounding:et(e,0,8),X(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Pt(n,!0):(et(r,0,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r+1,e),t=Pt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Pt(i):(et(r,0,Gt),e===void 0?e=o.rounding:et(e,0,8),n=X(new o(i),r+i.e+1,e),t=Pt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ss(y)-d.e-1,s=o%Q,e.d[0]=Oe(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Ut+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*Q*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=d.s,p=we(c,n,o,1).minus(d).abs().cmp(we(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};L.toHexadecimal=L.toHex=function(r,e){return Li(this,16,r,e)};L.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:et(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=we(t,r,0,e,1).times(r),J=!0,X(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return Li(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Oe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return X(a,n,o);if(e=Ue(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=uc)return i=Ks(u,a,t,n),r.s<0?new u(1).div(i):X(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Oe(+a,c),e=t==0||!isFinite(t)?Ue(c*(Math.log("0."+Fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ci(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),_n(i.d,n,o)&&(e=n+10,i=X(Ci(r.times(qt(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=X(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,X(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Pt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(et(r,1,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r,e),t=Pt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(et(r,1,Gt),e===void 0?e=n.rounding:et(e,0,8)),X(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=Pt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return X(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=Pt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Fe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Dt(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Dt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function et(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Ut+r)}function _n(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Oe(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Oe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Oe(10,e-3)-1,s}function Cr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Bi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_r(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,T,h,I,S,x,O,V,F,Z,D=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new D(!n.s||!i.s||(ee?se&&ee[0]==se[0]:!se)?NaN:ee&&ee[0]==0||!se?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=ft,d=Q,l=Ue(n.e/d)-Ue(i.e/d)),F=se.length,O=ee.length,g=new D(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=D.precision,s=D.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/d+2|0,m=0,F==1){for(p=0,se=se[0],I++;(m<O||p)&&I--;m++)S=p*u+(ee[m]||0),P[m]=S/se|0,p=S%se|0;y=p||m<O}else{for(p=u/(se[0]+1)|0,p>1&&(se=r(se,p,u),ee=r(ee,p,u),F=se.length,O=ee.length),x=F,A=ee.slice(0,F),T=A.length;T<F;)A[T++]=0;Z=se.slice(),Z.unshift(0),V=se[0],se[1]>=u/2&&++V;do p=0,c=e(se,A,F,T),c<0?(h=A[0],F!=T&&(h=h*u+(A[1]||0)),p=h/V|0,p>1?(p>=u&&(p=u-1),f=r(se,p,u),b=f.length,T=A.length,c=e(f,A,b,T),c==1&&(p--,t(f,F<b?Z:se,b,u))):(p==0&&(c=p=1),f=se.slice()),b=f.length,b<T&&f.unshift(0),t(A,f,T,u),c==-1&&(T=A.length,c=e(se,A,F,T),c<1&&(p++,t(A,F<T?Z:se,T,u))),T=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[T++]=ee[x]||0:(A=[ee[x]],T=1);while((x++<O||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,hs=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[p=0],u=l/Oe(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/Q),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Oe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Oe(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Oe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Oe(10,Q-o),m[p]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=ft)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function Pt(r,e,t){if(!r.isFinite())return Rs(r);var n,i=r.e,o=Fe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Dt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Dt(-i-1)+o,t&&(n=t-s)>0&&(o+=Dt(n))):i>=s?(o+=Dt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Dt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Dt(n))),o}function Mr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Or(r,e,t){if(e>cc)throw J=!0,t&&(r.precision=t),Error(Ts);return X(new r(Rr),e,1,!0)}function pt(r,e,t){if(e>Ki)throw Error(Ts);return X(new r(Lr),e,t,!0)}function Ss(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Dt(r){for(var e="";r--;)e+="0";return e}function Ks(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for(J=!1;;){if(t%2&&(o=o.times(e),ks(o.d,s)&&(i=!0)),t=Ue(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ks(e.d,s)}return J=!0,o}function As(r){return r.d[r.d.length-1]&1}function Cs(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ci(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Oe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=X(o.times(r),u,1),t=t.times(++l),a=s.plus(we(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&_n(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return X(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function qt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Fe(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Or(g,l+2,A).times(o+""),f=qt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,P,J=!0):f;for(m=f,u=s=f=we(f.minus(1),f.plus(1),l,1),p=X(f.times(f),l,1),i=3;;){if(s=X(s.times(p),l,1),c=u.plus(we(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Or(g,l+2,A).times(o+""))),u=we(u,new g(d),l,1),e==null)if(_n(u.d,l-y,P,a))g.precision=l+=y,c=s=f=we(m.minus(1),m.plus(1),l,1),p=X(f.times(f),l,1),i=a=1;else return X(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function Rs(r){return String(r.s*r.s/0)}function Ri(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function mc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Bs.test(e))return Ri(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(sc.test(e))t=16,e=e.toLowerCase();else if(oc.test(e))t=2;else if(ac.test(e))t=8;else throw Error(Ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Ks(n,new n(t),o,o*2)),c=Cr(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Mr(c,l),r.d=c,J=!1,s&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Vn.pow(2,u))),J=!0,r)}function dc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_r(5,t)),e=wn(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function wn(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(J=!1,u=t.times(t),a=new r(n);;){if(s=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=we(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function _r(r,e){for(var t=r;--e;)t*=r;return t}function Ls(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=As(t)?n?2:3:n?4:1,e;Ot=As(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Li(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(et(t,1,Gt),n===void 0?n=d.rounding:et(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=Rs(r);else{for(l=Pt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Cr(Pt(p),10,i),p.e=p.d.length),m=Cr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=we(r,p,t,n,0,i),m=r.d,o=r.e,c=hs),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Bi.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Cr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Bi.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function ks(r,e){if(r.length>e)return r.length=e,!0}function pc(r){return new this(r).abs()}function fc(r){return new this(r).acos()}function yc(r){return new this(r).acosh()}function bc(r,e){return new this(r).plus(e)}function gc(r){return new this(r).asin()}function wc(r){return new this(r).asinh()}function Ac(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function Pc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(we(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,o,1)),t}function hc(r){return new this(r).cbrt()}function Tc(r){return X(r=new this(r),r.e+1,2)}function Ic(r,e,t){return new this(r).clamp(e,t)}function xc(r){if(!r||typeof r!="object")throw Error(Nr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Gt,"rounding",0,8,"toExpNeg",-gn,0,"toExpPos",0,gn,"maxE",0,gn,"minE",-gn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Si[t]),(n=r[t])!==void 0)if(Ue(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ut+t+": "+n);if(t="crypto",i&&(this[t]=Si[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(Is);else this[t]=!1;else throw Error(Ut+t+": "+n);return this}function Bc(r){return new this(r).cos()}function Sc(r){return new this(r).cosh()}function Os(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Ps(o)){c.s=o.s,J?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Ri(c,o.toString())}else if(u!=="string")throw Error(Ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Bs.test(o)?Ri(c,o):mc(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=xc,i.clone=Os,i.isDecimal=Ps,i.abs=pc,i.acos=fc,i.acosh=yc,i.add=bc,i.asin=gc,i.asinh=wc,i.atan=Ac,i.atanh=kc,i.atan2=Pc,i.cbrt=hc,i.ceil=Tc,i.clamp=Ic,i.cos=Bc,i.cosh=Sc,i.div=Kc,i.exp=Cc,i.floor=Rc,i.hypot=Lc,i.ln=Oc,i.log=Nc,i.log10=_c,i.log2=Mc,i.max=Vc,i.min=Ec,i.mod=Fc,i.mul=vc,i.pow=Wc,i.random=Dc,i.round=qc,i.sign=Uc,i.sin=Gc,i.sinh=Xc,i.sqrt=zc,i.sub=Yc,i.sum=Qc,i.tan=jc,i.tanh=Hc,i.trunc=Zc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Kc(r,e){return new this(r).div(e)}function Cc(r){return new this(r).exp()}function Rc(r){return X(r=new this(r),r.e+1,3)}function Lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function Ps(r){return r instanceof Vn||r&&r.toStringTag===xs||!1}function Oc(r){return new this(r).ln()}function Nc(r,e){return new this(r).log(e)}function Mc(r){return new this(r).log(2)}function _c(r){return new this(r).log(10)}function Vc(){return Cs(this,arguments,"lt")}function Ec(){return Cs(this,arguments,"gt")}function Fc(r,e){return new this(r).mod(e)}function vc(r,e){return new this(r).mul(e)}function Wc(r,e){return new this(r).pow(e)}function Dc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:et(r,1,Gt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Is);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Oe(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function qc(r){return X(r=new this(r),r.e+1,this.rounding)}function Uc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Gc(r){return new this(r).sin()}function Xc(r){return new this(r).sinh()}function zc(r){return new this(r).sqrt()}function Yc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,X(t,this.precision,this.rounding)}function jc(r){return new this(r).tan()}function Hc(r){return new this(r).tanh()}function Zc(r){return X(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Vn=L.constructor=Os(Si);Rr=new Vn(Rr);Lr=new Vn(Lr);var E=Vn;import{PublicKey as Ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as Ie,SystemProgram as Ns,SYSVAR_RENT_PUBKEY as Jc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Oi=[k({pubkey:$c,isWritable:!1}),k({pubkey:Ns.programId,isWritable:!1}),k({pubkey:Jc,isWritable:!1})];function Ni({publicKey:r,transformSol:e}){let t=Mi(r.toString());if(t instanceof Ie)return e&&t.equals(Ne)?te:t;if(e&&t.toString()===Ne.toBase58())return te;if(typeof t=="string"){if(t===Ie.default.toBase58())return Ie.default;try{return new Ie(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Mi(r){try{return new Ie(r)}catch{return r}}var An=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ms=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new Ie("SysvarRent111111111111111111111111111111111"),_i=new Ie("SysvarC1ock11111111111111111111111111111111"),kn=new Ie("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vr=new Ie("Sysvar1nstructions1111111111111111111111111"),_s=Ns.programId,Jp=new Ie("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ef=new Ie("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),tf=new Ie("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),nf=new Ie("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),rf=new Ie("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),of=new Ie("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),sf=new Ie("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),af=new Ie("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),uf=new Ie("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),cf=new Ie("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),lf=new Ie("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new Ie("So11111111111111111111111111111111111111112"),Ne=Ie.default;function Vi(r){return Ni({publicKey:r,transformSol:!0})}import{PublicKey as el}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vs}from"@solana/spl-token";var ht={chainId:101,address:el.default.toBase58(),programId:Vs.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Vs.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 Fi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Ei&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Ei(Me.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Ei.default:Ni({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=Fi;de.WSOL=new Fi(W(N({},Me),{mint:Me.address}));import Fr from"big.js";import rl from"bn.js";import il from"decimal.js-light";import tl from"toformat";var nl=tl,En=nl;var Er=ae("module/fraction"),vi=En(Fr),Fn=En(il),ol={[0]:Fn.ROUND_DOWN,[1]:Fn.ROUND_HALF_UP,[2]:Fn.ROUND_UP},sl={[0]:Fr.roundDown,[1]:Fr.roundHalfUp,[2]:Fr.roundUp},ne=class{constructor(e,t=new rl(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<=0&&Er.logWithError(`${e} is not positive.`),Fn.set({precision:e+1,rounding:ol[n]});let i=new Fn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<0&&Er.logWithError(`${e} is negative.`),vi.DP=e,vi.RM=sl[n]||1,new vi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var al=ae("Raydium_price"),Ge=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(Di(n.decimals),Di(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&al.logWithError("mul token not equals");let n=super.mul(t);return new Ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var qi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},vn=qi;vn.SOL=new qi(ht);function vf(r,e){return r instanceof de&&e instanceof de?r.equals(e):r instanceof de||e instanceof de?!1:r===e}import ul from"bn.js";var Es=new ne(new ul(100)),ve=class extends ne{toSignificant(e=5,t,n){return this.mul(Es).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Es).toFixed(e,t,n)}};function Ke(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof Pe)try{return Ke(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Yf(r){var n;if(r instanceof ve)return{fr:new ne(r.numerator,r.denominator)};if(r instanceof Ge)return{fr:r.adjusted};if(r instanceof Pe)return{fr:Ke(r.toExact()),decimals:r.token.decimals};if(r instanceof ne)return{fr:r};let e=String(r),t=tn(e);return{fr:new ne(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Qf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Se)}function cl(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gt(Se)}function jf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.lte(Se)}function Hf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gte(Se)}function ll(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.eq(Se)}function Zf(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);try{return t.div(n)}catch{return t}}function $f(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.sub(n)}function Jf(r){return r==null?!1:!ll(r,0)}function ey(r,e){return cl(e,r)?e:r}function Ui(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.mul(n)}function ty(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.add(n)}var Wi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(Wi||{}),Se=new Ae(0),Ds=new Ae(1),fy=new Ae(2),yy=new Ae(3),by=new Ae(5),nn=new Ae(10),gy=new Ae(100),wy=new Ae(1e3),Ay=new Ae(1e4),Fs=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ae)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ae(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Fs||r<=-Fs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ae(String(r))):typeof r=="bigint"?new Ae(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ae(0))}function Di(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Ae)return{numerator:r.toString(),denominator:"1"};if(r instanceof ne)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function vr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function ml(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function dl(r,e=0){return r instanceof Ae?r:new Ae(ml(qs(r).mul(nn.pow(new Ae(String(e))))))}function qs(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof Pe)try{return qs(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function ky(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new Ae(t),new Ae(n).mul(e!=null&&e.alreadyDecimaled?new Ae(100):new Ae(1)))}function Py(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new de({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new Ae(o).mul(nn.pow(new Ae(e.decimals))):o,u=new Ae(s).mul(nn.pow(new Ae(i.decimals)));return new Ge({baseToken:i,denominator:u.toString(),quoteToken:new de(W(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function vs(r){let e=new vn({decimals:6,symbol:"usd",name:"usd"}),t=dl(Ui(r,10**e.decimals));return new rn(e,t)}function hy(r,e){return vs(!e||!r?0:Ui(r,e))}function pl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ne(e,t)}function fl(r){return r instanceof E}function Ws(r){return fl(r)?pl(r):Array.isArray(r)?r.map(e=>Ws(e)):Gi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ws(t)])):r}var bl=ae("Raydium_amount"),Wr=En(yl);function Us(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):bl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Pe=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Us(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Pe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Us(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new rn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new rn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.currency.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Gs(r){new Promise(e=>setTimeout(e,r))}function zy(){return new Date().getTime()}function Gi(r){return typeof r=="object"&&r!==null&&![de,Pe,gl,ne,wl,Ge,ve].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Mi(r):Array.isArray(r)?r.map(e=>fe(e)):Gi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as Qi,Transaction as Gn,TransactionMessage as Xn,VersionedTransaction as zn}from"@solana/web3.js";import Sl from"axios";var Wn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Wn||{}),_={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as zs,ComputeBudgetProgram as Xs,Transaction as qr,TransactionMessage as Al,Keypair as Ys,VersionedTransaction as Qs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),js=1644;function Ur(r){let e=[],t=[];return r.microLamports&&(e.push(Xs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(Xs.setComputeUnitLimit({units:r.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Gr(r,e){r.length<1&&Nt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Nt.logWithError(`no signers provided:, ${e.toString()}`);let t=new qr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<js}catch{return!1}}async function Hs(r,e,t,n=!0){let i=new zs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new qr;s.feePayer=i;for(let c of e)Gr([...s.instructions,c],[i])||(o.push(s),s=new qr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Pl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Nt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Nt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Nt.debug("filteredLog:",u),l.length||Nt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Zs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Nt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Mt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Nt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=zs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Pl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Nt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Dn({instructions:r,payer:e,signers:t}){return Gr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ys.generate().publicKey.toString()}){let o=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Qs(o).serialize()).toString("base64").length<js}catch{return!1}}var Dr={time:0,data:void 0};async function rb(r){if(!Dr.data||(Date.now()-Dr.time)/1e3>30){let e=await r.getEpochInfo();return Dr={time:Date.now(),data:e},e}else return Dr.data}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function on(r){let e=[];return r.forEach(t=>{t instanceof qr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Ys.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Qs&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as $s,AddressLookupTableAccount as Xr}from"@solana/web3.js";import{PublicKey as Tl}from"@solana/web3.js";import{getTransferFeeConfig as Il,unpackMint as xl}from"@solana/spl-token";var Xi=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=zi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=zi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Xi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&Xi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new Tl(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Xi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>W(N({},i),{accountInfo:n[o]}))}var Bl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Bl||{}),db=1;async function pb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await hn(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=xl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=W(N({},a),{feeConfig:(o=Il(a))!=null?o:void 0})}return n}async function Yi({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new $s(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Xr({key:s,state:Xr.deserialize(o.data)});n[s.toString()]=a,zr[s.toString()]=a}return n}var zr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Xr({key:new $s("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Xr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Yr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Sl.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Ur(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new Gn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var i;let n=await Pn(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),on([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await Qi(this.connection,t,this.signers.find(o=>o.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer]),signedTx:t};if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0}),signedTx:o[0]}}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var d;let{sequentially:l,onTxUpdate:m}=c||{},p=await Pn(this.connection);if((d=this.owner)!=null&&d.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=p,await Qi(this.connection,y,a[f].find(b=>b.publicKey.equals(this.owner.publicKey))?a[f]:[...a[f],this.owner.signer])))),signedTxs:s};if(this.signAllTransactions){let y=s.map((b,g)=>(b.recentBlockhash=p,a[g].length&&b.sign(...a[g]),b));on(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:g.map(A=>A.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Te(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},zr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Un(d));let c=await Yi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Xn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new zn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var d;if(on([m]),(d=this.owner)!=null&&d.isKeyPair){this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:!0}),{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:!0}),signedTx:y[0]}}throw new Error("please connect wallet first")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var p;on(s);let{sequentially:l,onTxUpdate:m}=c||{};if((p=this.owner)!=null&&p.isKeyPair){let{lastValidBlockHeight:d,blockhash:y}=await this.connection.getLatestBlockhash();return s.forEach((f,b)=>{a[b].find(g=>g.publicKey.equals(this.owner.publicKey))||f.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async f=>{let b=await this.connection.sendTransaction(f);return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:d,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let d=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!d[y])return;let g=await this.connection.sendTransaction(d[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:d[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let A=f.findIndex(T=>T.txId===g);A>-1&&(f[A].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:d}}else{let y=[];for(let f=0;f<d.length;f+=1){let b=await this.connection.sendTransaction(d[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:d}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Te(c,["computeBudgetConfig"]),i=t?Ur(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],p=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Dn({instructions:p,payer:this.feePayer,signers:y})||Dn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:p}=l||{},d=await Pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=d,a[b].length&&f.sign(...a[b])}),on(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await Qi(this.connection,f,a[b].find(g=>g.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer]))),signedTxs:s};if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:A,status:"sent",signedTx:f[b]}),p==null||p([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),p==null||p([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:g.map(A=>A.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Te(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},zr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Un(g));let c=await Yi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Ur(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection),p=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(h))}else{let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>p[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}else{let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:A}=g||{};if(d.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),on(d),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return d.forEach((S,x)=>{y[x].find(O=>O.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:d}}if(this.signAllTransactions){let h=await this.signAllTransactions(d);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let O=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:O,status:"sent",signedTx:h[I]}),A==null||A([...S]),I++,this.connection.onSignature(O,V=>{let F=S.findIndex(Z=>Z.txId===O);F>-1&&(S[F].status=V.err?"error":"success"),A==null||A([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(O)};return x(),{txIds:[],signedTxs:h}}else{let I=[];for(let S=0;S<h.length;S+=1){let x=await this.connection.sendTransaction(h[S],{skipPreflight:!0});I.push(x)}return{txIds:I,signedTxs:h}}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function zi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Rb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Lb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function Ob(r){return[...new Set(r)]}var Js=r=>typeof r=="number",ea=r=>r?new Date(r):new Date,Kl=r=>ea(r).getTime();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}function na(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 Mb(r,e){let n=Kl(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return ea(n)}import{PublicKey as Re}from"@solana/web3.js";var ji=new Re("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Hi=new Re("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tn=new Re("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cl=new Re("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Rl=new Re("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qr=new Re("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zi=new Re("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ll=new Re("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ol=new Re("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nl=new Re("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ml=new Re("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),_l=new Re("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Vl=new Re("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),El=new Re("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fl=new Re("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vl=new Re("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wl=new Re("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eb=new Re("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Fb=new Re("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vb=new Re("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Yn={IDO_PROGRAM_ID_V1:Ml,IDO_PROGRAM_ID_V2:_l,IDO_PROGRAM_ID_V3:Vl,IDO_PROGRAM_ID_V4:El},Wb={AMM_V4:Zi,AMM_STABLE:Ll,CLMM_PROGRAM_ID:Ol,FARM_PROGRAM_ID_V3:ji,FARM_PROGRAM_ID_V5:Hi,FARM_PROGRAM_ID_V6:Tn,OPEN_BOOK_PROGRAM:Rl,SERUM_PROGRAM_ID_V3:Qr,UTIL1216:Cl,Router:Nl,CREATE_CPMM_POOL_PROGRAM:Fl,CREATE_CPMM_POOL_AUTH:vl,CREATE_CPMM_POOL_FEE_ACC:Wl};import{PublicKey as Dl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";function ye(r,e,t){return oe([r.toBuffer(),(t!=null?t:ql).toBuffer(),e.toBuffer()],new Dl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var It=1e4;function Yb(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new Le(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===It){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(It)),new Le(It-i.transferFeeBasisPoints)),u=new Le(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=zt(c.mul(new Le(i.transferFeeBasisPoints)),new Le(It)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=zt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(It)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function he(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=W(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Le(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===It){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(It)),new Le(It-o.transferFeeBasisPoints)),c=new Le(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=zt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(It)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=zt(r.mul(new Le(o.transferFeeBasisPoints)),new Le(It)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function sn(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var $i=(t=>(t.ALL="all",t.Strict="strict",t))($i||{}),Ul=(n=>(n.All="all",n.Standard="standard",n.Concentrated="concentrated",n))(Ul||{});var Xe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},pg=N({},Xe);var ra="ray_tab_hash",Ji="ray_req_hash",Gl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(ra);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(ra,r)),r},jr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Te(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ji)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(N({},t),{time:Date.now(),session:Gl()}));try{localStorage.setItem(Ji,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Ji,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return jr(W(N({},t),{logCount:r,removeLastLog:!0}))}};var In=ae("Raydium_Api"),eo=new Map;async function Og(r,e,t=1e3){let n;for(;n==null;)try{In.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){In.error(`Request ${r} failed, retry after ${t} ms`,i),await Gs(t)}return n}var Hr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Xl.create({baseURL:this.urlConfigs.BASE_HOST||Xe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return In.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(In.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:p}=a;return n&&jr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),In.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&jr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),In.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Xe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Xe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return this.api.get(this.urlConfigs.CHAIN_TIME||Xe.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Xe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Xe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Xe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Xe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Xe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Xe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>eo.has(s)?(n.push(eo.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Xe.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{eo.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Xe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Xe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Xe.CHECK_AVAILABILITY)).data}};import{merge as Fp}from"lodash";var Zr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",ia="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as yo,TOKEN_PROGRAM_ID as Ht,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as td}from"@solana/spl-token";import{PublicKey as ii,SystemProgram as nd}from"@solana/web3.js";var 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 Yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,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 jm,createCloseAccountInstruction as Hm,createTransferInstruction as Zm,TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";import{PublicKey as $m,SystemProgram as Jm}from"@solana/web3.js";import ed from"bn.js";import{PublicKey as ka,Keypair as Xm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import Ym from"bn.js";import{PublicKey as Em}from"@solana/web3.js";import ma,{isBN as da}from"bn.js";import{bits as zl,BitStructure as Yl,blob as Ql,Blob as jl,cstr as Hl,f32 as Zl,f32be as $l,f64 as Jl,f64be as em,greedy as tm,Layout as nm,ns64 as rm,ns64be as im,nu64 as om,nu64be as sm,offset as am,s16 as um,s16be as cm,s24 as lm,s24be as mm,s32 as dm,s32be as pm,s40 as fm,s40be as ym,s48 as bm,s48be as gm,s8 as wm,seq as Am,struct as Xg,Structure as km,u16 as Pm,u16be as hm,u24 as Tm,u24be as Im,u32 as xm,u32be as Bm,u40 as Sm,u40be as Km,u48 as Cm,u48be as Rm,u8 as Lm,UInt as Om,union as Nm,Union as Mm,unionLayoutDiscriminator as _m,utf8 as Vm}from"@solana/buffer-layout";var Qn=nm,oa=km,sa=Mm,zg=Yl,no=Om,aa=jl,Yg=tm,$r=Lm,xt=Pm,Qg=Tm,jn=xm,jg=Sm,Hg=Cm,ua=om,Zg=hm,$g=Im,Jg=Bm,ew=Km,tw=Rm,nw=sm,rw=wm,iw=um,ow=lm,We=dm,sw=fm,aw=bm,uw=rm,cw=cm,lw=mm,mw=pm,dw=ym,pw=gm,fw=im,yw=Zl,bw=$l,gw=Jl,ww=em;var ca=Am,la=Nm,Aw=_m,pe=Ql,kw=Hl,Pw=Vm,ro=zl,io=am;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new ma(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 ma(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jr=class extends Qn{constructor(t){super(8,t);this._lower=ro(jn(),!1),this._upper=ro(jn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function M(r){return new no(1,r)}function ze(r){return new no(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function pa(r){return new an(1,!0,r)}function ei(r){return new an(8,!0,r)}function fa(r){return new an(16,!0,r)}var _t=class extends Qn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new _t(pe(32),e=>new Em(e),e=>e.toBuffer(),r)}var oo=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=$r()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Bw(r,e){return new oo(r,e)}function De(r){return new _t($r(),Fm,vm,r)}function Fm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vm(r){return r?1:0}function Sw(r,e){let t=jn("length"),n=R([t,q(r,io(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Kw(r,e,t){let n=R([w("tag"),e.replicate("data")]);function i({tag:o,data:s}){if(!o.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+o.toString("hex"));return s}return new _t(n,i,o=>({tag:r,data:o}),t)}function Wm(r){let e=jn("length"),t=R([e,pe(io(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Cw(r){return new _t(Wm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Rw(r,e){let t=la($r(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Lw(r,e,t){let n=R([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var so=class extends oa{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new so(r,e,t)}var ao=class extends sa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Ow(r,e,t){return new ao(r,e,t)}var uo=class extends aa{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Nw(r){return new uo(r)}function q(r,e,t){let n,i=typeof e=="number"?e:da(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=da(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return ca(r,i,t)}var Yt=R([B("mint"),B("owner"),w("amount"),ze("delegateOption"),B("delegate"),M("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),B("closeAuthority")]);function Dm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function co(r,...e){if(!Dm(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function lo(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 ya(r,e){co(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ni=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),bt=(r,e)=>r<<32-e|r>>>e;var Ww=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function mo(r){return typeof r=="string"&&(r=qm(r)),co(r),r}var ti=class{clone(){return this._cloneInto()}},Dw={}.toString;function ba(r){let e=n=>r().update(mo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Um(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var ga=(r,e,t)=>r&e^~r&t,wa=(r,e,t)=>r&e^r&t^e&t,ri=class extends ti{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){lo(this);let{view:t,buffer:n,blockLen:i}=this;e=mo(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ni(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){lo(this),ya(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Um(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=ni(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Gm=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jt=new Uint32Array(64),po=class extends ri{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)jt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=jt[m-15],d=jt[m-2],y=bt(p,7)^bt(p,18)^p>>>3,f=bt(d,17)^bt(d,19)^d>>>10;jt[m]=f+jt[m-7]+y+jt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=bt(a,6)^bt(a,11)^bt(a,25),d=l+p+ga(a,u,c)+Gm[m]+jt[m]|0,f=(bt(n,2)^bt(n,13)^bt(n,22))+wa(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){jt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Aa=ba(()=>new po);var iA=ae("Raydium_Util");function Pa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:ye(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ka.default,amount:new Ym(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=zm}){let t=Xm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qm(r,t,e),seed:t}}function Qm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Aa(n);return new ka(i)}function fo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=xn}=r;return jm(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=xn}=r;return Hm(e,t,i,n,o)}async function Bt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Yt.span,n),u=U(t).add(new ed(a)),c=Ye({fromPublicKey:i,programId:xn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Jm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:xn}),fo({mint:new $m(Me.address),tokenAccount:c.publicKey,owner:o,programId:xn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Hn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=xn}){return Zm(r,e,t,BigInt(String(n)),i,o)}var Zn=class extends 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=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Ht},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:td},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Pa({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Ht,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ii(t.tokenProgram||Ht),m=this.getAssociatedTokenAccount(n,new ii(l)),p=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=yo(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&Bn.decode(P.data).mint.equals(n)&&Bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(_.CreateATA);if(n.equals(te)&&i.amount){let P=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...P.instructions||[]),d.endInstructions.push(...P.endInstructions||[]),d.instructionTypes.push(...P.instructionTypes||[]),d.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(d.instructions.push(Hn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Ht})),d.instructionTypes.push(_.TransferAmount))}return u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=Ye({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),A=nd.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Bn.span,programId:l});return d.instructions.push(A,fo({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(_.CreateAccount),d.instructionTypes.push(_.InitAccount),u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=Ht,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await yo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Ht,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new ii(te).equals(o)){let d=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=yo(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Ht)&&Bn.decode(f.data).mint.equals(o)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Ht,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ii(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Te(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=Te(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Td}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Id}from"@solana/web3.js";import{PublicKey as Ka}from"@solana/web3.js";var bo=R([M("instruction")]),go=R([M("instruction")]),rd=R([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),q(w(),15,"padding")]),id=R([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),od=R([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),sd=R([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(rd,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),ha=new Proxy(id,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ta=new Proxy(od,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),$n=new Proxy(sd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return W(N({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ad=R([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),wo=R([M("instruction"),w("nonce"),q(ad,5,"rewardTimeInfo")]),Ao=R([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),ko=R([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),VA=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Jn=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),EA=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Ia=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),xa=R([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),$e=R([M("instruction"),w("amount")]),ud=R([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),pa("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),Ba=R([pe(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(ud,4,"votingMints"),ei("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),cd=R([ei("startTime"),ei("endTime"),M("kind"),q(M(),15,"reserved")]),ld=R([q(cd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),De("isUsed"),De("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),Sa=R([pe(8),B("voterAuthority"),B("registrar"),q(ld,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var XA=ae("Raydium_farm_config"),Ca=new Ka("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ra=new Ka("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),La={3:ha,5:Ta,6:$n},Oa={3:Jn,5:Ia,6:xa},Po=r=>[3,5,6].indexOf(r)!==-1,ho=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},Zt={"Standard SPL":0,"Option tokens":1},gt={[ji.toString()]:3,[Hi.toString()]:5,[Tn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as pd,SYSVAR_CLOCK_PUBKEY as nr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as fd,TOKEN_PROGRAM_ID as st,ASSOCIATED_TOKEN_PROGRAM_ID as yd}from"@solana/spl-token";import si from"bn.js";function To(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Io(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function xo(r,e){return oe([e.toBuffer()],r)}function Bo(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function So(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Ko(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var er=ae("Raydium.farm.util");function tr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function rt({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Na=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Ma(r){return{isSet:new nt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Co(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function oi(r){let e=Oa[r];return e||er.logWithError("invalid version",r),e}function md(r){let e=La[r];return e||er.logWithError("invalid version",r),e}function dd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new nt(t)))return r;let i=new nt(t).sub(r.lastSlot);r.lastSlot=new nt(t);for(let o of r.rewardInfos){if(e.amount.eq(new nt(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new nt(10).pow(new nt(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new nt(0)))continue;let o=nt.min(new nt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new nt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function uk({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new nt(10),u=[];for(let p of e){let d=fe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:rt({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await hn(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=md(d);(!b||!b.data||b.data.length!==P.span)&&er.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Yt.span)&&er.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=oi(d);b&&b.data&&(b.data.length!==P.span&&er.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=dd(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new nt(9)):a.pow(new nt(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=W(N({},c[p].wrapped),{pendingRewards:b})}return c}function ck(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ta(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>na(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 Ro(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ba.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=Sa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var bd=ae("Raydium_farm_instruction"),rr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function _a(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||bd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(bo.span);bo.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:pd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function Va(r){var n;let e=Buffer.alloc(wo.span);wo.encode({instruction:0,nonce:new si(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Oi,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:Ne}),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 Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function Ea(r){let e=Buffer.alloc(go.span);go.encode({instruction:5},e);let t=[k({pubkey:st,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 Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function gd(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=R([M("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...rr.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function wd(r,e,t,n){let i=R([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...rr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function Ad(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([M("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...rr.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function kd(r,e,t,n,i,o){let s=R([M("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Ve({keys:a,programId:r,data:u})}function Pd(r,e,t,n,i,o,s,a){let u=R([M("voterBump"),M("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...rr.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function hd(r,e,t,n,i,o,s,a,u,c,l,m){let p=R([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),ze("periods"),De("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:yd,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...rr.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:d,programId:r,data:f})}async function Bk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=To(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new si(0)))throw Error("user do not has new stake amount");let y=Io(e,a).publicKey,f=xo(e,a).publicKey,{publicKey:b,nonce:g}=Bo(n,c,s),P=ye(b,y,u).publicKey,{publicKey:A,nonce:T}=So(n,c,s),h=Ko(t,i,o,s).publicKey,I=[],S=ye(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(fd(s,S,s,y)),await r.getAccountInfo(b)===null){let Z=kd(t,i,s,o,s,h);I.push(Z,Pd(n,c,b,A,s,s,g,T))}let{index:V,isInit:F}=await Ro(r,c,b,y);return F||I.push(hd(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(gd(n,c,b,P,S,s,l,a,y,f,e,V,d),wd(n,c,b,A)),I}async function Sk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=To(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data);if(p.voteLockedBalance.eq(new si(0)))throw Error("user has vote locked balance = 0");let d=Io(e,a).publicKey,y=xo(e,a).publicKey,{publicKey:f}=Bo(n,c,s),b=ye(f,d,u).publicKey,{publicKey:g}=So(n,c,s),P=Ko(t,i,o,s).publicKey,A=[],{index:T,isInit:h}=await Ro(r,c,f,d);if(!h)throw Error("deposit entry index check error");return A.push(Ad(n,c,f,s,P,g,b,ye(s,d,u).publicKey,l,a,d,y,e,T,p.voteLockedBalance)),A}function Lo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(Ao.span);Ao.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[k({pubkey:st,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 Ve({programId:n.programId,keys:s,data:o})}function Oo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(ko.span);ko.encode({instruction:4,isSet:new si(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Oi,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 Ve({programId:t.programId,keys:s,data:o})}function Kk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],p=rt({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc($e.span);$e.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:st,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:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new 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:o[f]}));return new Ve({programId:l,keys:y,data:d})}function ir(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:2,amount:U(s)},l);let m=[k({pubkey:st,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}function or(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:12,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function sr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Fa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:10,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:1,amount:U(s)},l);let m=[k({pubkey:st,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:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}var ar=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Co(W(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Tn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:Ca,lockVault:Ra},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ye({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption($n.span);u.addInstruction({instructions:[Id.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:$n.span,programId:a.programId})]});let{publicKey:p,nonce:d}=Na({programId:new ke(a.programId),poolId:l.publicKey}),y=tr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(Zt[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(Ma(T));let{rewardPubKey:h,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:T,payer:c});I&&u.addInstruction(I),h||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let S=T.mint.equals(Ne)?new ke(Me.address):T.mint;b.push({rewardMint:S,rewardVault:tr({programId:a.programId,poolId:l.publicKey,mint:S,type:"rewardVault"}),userRewardToken:h})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:A}=Va({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[P],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new ke(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ne,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[Lo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ne)?new ke(Me.address):m.mint,d=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ne,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Lo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=gt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new ke(Me.address):i.mint,m=tr({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Oo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=gt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new ke(Me.address):l.mint,p=tr({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Oo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:W(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:p}=n,d=gt[p];Po(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=rt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let D of this.scope.account.tokenAccounts)if(a){let j=ye(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&j.equals(D.publicKey)&&(A[D.mint.toString()]=D.publicKey)}else A[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=A[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let D of m){let j=s&&D.mint.address===te.toString(),ee=A[D.mint.address];if(!ee){let{account:se,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D.mint.programId,mint:new ke(D.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=se,dt&&P.addInstruction(dt)}A[D.mint.address]=ee,I.push(ee)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=oi(d).decode(x.data)),n.programId!==Tn.toString()&&!S){let{instruction:D,instructionType:j}=_a({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[j]})}let O=ho({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new ke(D))},F=d===6?Wa(V):d===5?va(V):Fa(V),Z={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[Z[d]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=gt[n.programId];Po(d)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let O of this.scope.account.tokenAccounts)if(u){let V=ye(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&V.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let O=rt({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:d}),V=await this.scope.connection.getAccountInfo(O);V||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:V}),oi(d).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=O,V&&f.addInstruction(V)}b[g.toString()]=A;let T=[];for(let O of p){let V=s&&O.mint.address===te.toString(),F=b[O.mint.address];if(!F){let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:O.mint.programId,mint:new ke(O.mint.address),notUseTokenAccount:V,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=Z,D&&f.addInstruction(D)}b[O.mint.address]=F,T.push(F)}let h=ho({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new ke(O))},S=d===6?ir(I):d===5?or(I):sr(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new ke(Me.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Co(W(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[Td(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:p}=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:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=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 d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>W(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=gt[f],T=b.address,h=n&&T===te.toString(),I=m[T];if(!I){let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=Z,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let Z of g){let D=n&&Z.mint.address===te.toString(),j=m[Z.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Z.mint.programId,mint:new ke(Z.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[Z.mint.address]=j,S.push(j)}let x=d[P],O={amount:Se,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(Z=>new ke(Z))},V=A===6?ir(O):A===5?or(O):sr(O),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as it}from"@solana/web3.js";import{NATIVE_MINT as Iu,TOKEN_PROGRAM_ID as di}from"@solana/spl-token";var Zk=R([ze("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),ze("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as xd}from"@solana/web3.js";import{MintLayout as Da,TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";var oP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new xd(e));return!t||t.data.length!==Da.span?void 0:Da.decode(t.data)},sP=({mint:r,decimals:e,programId:t=Bd,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},qa=r=>new de({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),aP=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Te(o,["amount","isRaw","name"]);return new Pe(new de({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function uP(r){return r.address===ht.address?Me:r}function cP(r){return r.address===Me.address?ht:r}import{TOKEN_PROGRAM_ID as ur,ASSOCIATED_TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Et,SystemProgram as vo,SYSVAR_RENT_PUBKEY as qd}from"@solana/web3.js";var No=R([M("instruction"),w("amountIn"),w("minAmountOut")]),Mo=R([M("instruction"),w("maxAmountIn"),w("amountOut")]),PP=R([M("instruction"),M("nonce")]),_o=R([M("instruction"),M("nonce"),w("startTime")]),Sd=R([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),q(w(),3,"padding")]),Kd=R([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),q(w(),64,"padding")]),Vo=R([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Eo=R([M("instruction"),w("amountIn")]),hP={4:Sd,5:Kd},Ua=R([w("fee")]);import{PublicKey as Cd}from"@solana/web3.js";var Kn=new Cd("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Rd=R([w("x"),w("y"),w("price")]),Ld=R([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Rd,ln,"DataElement")]);function Od(r,e){return[0,ln-2]}function Nd(r){return[0,ln-2]}function Md(r){return[0,ln-2]}function _d(r,e,t){let[n,i]=Od(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ln-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Fo(r,e,t){let[n,i,o]=_d(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function cn(r,e,t){return e*r.multiplier/t}function Ga(r,e,t){return e*t/r.multiplier}function Vd(r,e){let[t,n]=Nd(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ln-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Ed(r,e){let[t,n]=Md(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ln-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Vd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Fd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ed(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function vd(r,e){let t=Xa(r,e,0,!1);return t[3]?t[0]:0}function za(r,e,t,n){let i=Fo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,p]=Xa(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ga(r,d,i)}}function Ya(r,e,t,n){let i=Fo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,p]=Fd(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ga(r,d,i)}}function Wd(r){let e=Ld.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Qa(r,e,t,n){let i=vd(r,cn(r,e,Fo(r,e,t)))/r.multiplier;return n?i:1/i}var Sn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Kn);e&&(this._layoutData=Wd(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Ha(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Vo.span);Vo.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Se:Ds},a);let u=[k({pubkey:ur,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:Kn})),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 Et({programId:new be(e.programId),keys:u,data:a})}function Wo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=fe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Eo.span);Eo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:ur,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return s===5?u.push(k({pubkey:Kn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Za({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=R([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:ur,isSigner:!1,isWritable:!1},{pubkey:Dd,isSigner:!1,isWritable:!1},{pubkey:vo.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],V=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:T,pcAmount:h},V),{instruction:new Et({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function FP(r){let e=R([M("instruction"),M("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 Et({programId:new be(r.programId),keys:n,data:t})}function Ud({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=fe(r),s=Buffer.alloc(No.span);No.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:ur,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders})];return i===4&&a.push(k({pubkey:o.targetOrders})),a.push(k({pubkey:o.vault.A}),k({pubkey:o.vault.B})),i===5&&a.push(k({pubkey:Kn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Gd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=fe(r),s=Buffer.alloc(Mo.span);Mo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:vo.programId,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return i===5&&a.push(k({pubkey:Kn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function ai(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ud(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Gd(W(N({},a),{maxAmountIn:i,amountOut:o}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function vP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(_o.span);_o.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=fe(r),o=[k({pubkey:ur,isWritable:!1}),k({pubkey:vo.programId,isWritable:!1}),k({pubkey:qd,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 Et({programId:i.programId,keys:o,data:n})}function $a({poolKeys:r}){let e=R([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[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 Et({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as qe,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as wt,SystemProgram as Cn,Keypair as Qo}from"@solana/web3.js";import gu from"bn.js";import tp from"bn.js";function Ja(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function DP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function qP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ui(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Do(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function qo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function cr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function eu(r,e){return cr(r,e)?null:Do(r,e)}function tu(r,e){return cr(r,e)?null:qo(r,e)}var Xd=Buffer.from("amm_config","utf8"),zd=Buffer.from("pool","utf8"),Yd=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),nu=Buffer.from("position","utf8"),jd=Buffer.from("tick_array","utf8"),Hd=Buffer.from("operation","utf8"),Zd=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zP(r,e){return oe([Xd,Ja(e)],r)}function ru(r,e,t,n){return oe([zd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Uo(r,e,t){return oe([Yd,e.toBuffer(),t.toBuffer()],r)}function iu(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return oe([jd,e.toBuffer(),ui(t)],r)}function mn(r,e,t,n){return oe([nu,e.toBuffer(),ui(t),ui(n)],r)}function St(r,e){return oe([nu,e.toBuffer()],r)}function ci(r){return oe([Buffer.from("metadata","utf8"),kn.toBuffer(),r.toBuffer()],kn)}function lr(r){return oe([Hd],r)}function ct(r,e){return oe([Zd,e.toBuffer()],r)}import Kt from"bn.js";var me=new Kt(0),at=new Kt(1),Ft=new Kt(-1),ut=new Kt(1).shln(64),li=new Kt(1).shln(128),Go=ut.sub(at),mr=64,ou=li.subn(1),Qe=-443636,Je=-Qe,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),su=16,au="59543866431248",uu="184467440737095516",cu="15793534762490258745",mi=new Kt(10).pow(new Kt(6)),$d=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))($d||{}),jP={[500]:10,[3e3]:60,[1e4]:200},HP={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:[]},ZP=new Kt("18446744073700000000");var Jd=15,le=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(i,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jd/2));for(let d=0;d<l.length;d++){let{publicKey:y}=ge(t,n,l[d]);u.push(y)}let m=(await Tt(e,u)).map(d=>d!==null?dr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=W(N({},y),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=G.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/le.tickCount(t)),a=n?G.searchLowBitFromStart(i,o,s-1,1,t):G.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=_e-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<_e;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ge(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<_e;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;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(G.checkIsOutOfBoundary(e)){if(e>Je)return!1;let n=G.getTickArrayStartIndexByTick(Qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as $t}from"@solana/web3.js";import Ce from"bn.js";var Xo=14,vt=class{static maxTickInTickarrayBitmap(e){return e*_e*dn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-le.tickCount(n):t+le.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*_e,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=eu(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=tu(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},pr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(Je<=t)throw Error(`extensionTickBoundary check error: ${Je}, ${t}`);if(n<=Qe)throw Error(`extensionTickBoundary check error: ${n}, ${Qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=le.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=G.mergeTickArrayBitmap(e).shln(dn-1-a),c=cr(512,u)?null:Do(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=cr(512,u)?null:qo(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(i=dn-i),i}};import Lt from"bn.js";var fr=class{static getfeeGrowthInside(e,t,n){let i=new Lt(0),o=new Lt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Lt(0),a=new Lt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[he(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[he(new Lt(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),he(new Lt(new E(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as mu}from"@solana/spl-token";var je=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=ge(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ft),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=je.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?pr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ge(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=pr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Qe||t>Je)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=W(N({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $t(p)});if(d.tokenMint.equals($t.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Ce(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),P=$.mulDivFloor(f,d.emissionsPerSecondX64,ut),A=d.rewardTotalEmissioned.add(P);s.push(W(N({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>Je&&(t=le.getArrayStartIndex(Je,e)+le.tickCount(e)),n<Qe&&(n=le.getArrayStartIndex(Qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/le.tickCount(t)*dn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=fu.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=G.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=G.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=ge(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=dr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(St(d,p).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=pu.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:T}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:T,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>W(N({},x),{pendingReward:new Ce(0)})),leverage:h,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),S=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=S}if(o){let p=Object.values(m),d=await Tt(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=dr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[A].toString()],I=T.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await fr.GetPositionFees(f,g,I,S),V=await fr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),g.tokenFeeAmountB=O.gte(new Ce(0))?O:new Ce(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Ce(0))?V[F]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var V;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new E(0))?u=c?Ct.add(new Ce(1)):Rt.sub(new Ce(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=je.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((V=p.fee)!=null?V:me),u),g=he(d,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new E(1).div(P),T=d.mul(new Ce(Math.floor((1-s)*1e10))).div(new Ce(1e10)),h=he(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(A).sub(I).abs(),x=I,O=new ve(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:h,expirationTime:sn(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:O,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new de(W(N({},u),{mint:u.address,isToken2022:u.programId===mu.toBase58()})),new de(W(N({},c),{mint:c.address,isToken2022:c.programId===mu.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:T}=await je.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},p),{amount:new Pe(l,p.amount),fee:p.fee===void 0?void 0:new Pe(l,p.fee)}),I=W(N({},d),{amount:new Pe(m,d.amount),fee:d.fee===void 0?void 0:new Pe(m,d.fee)}),S=W(N({},y),{amount:new Pe(m,y.amount),fee:y.fee===void 0?void 0:new Pe(m,y.fee)}),x=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new Pe(l,A);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:O,priceImpact:P,fee:V,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=G.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=G.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Vi(e.mintA.address).toString()],p=i[Vi(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(A.toString()).div(new E(10).pow(y)).mul(p.value)),S=new E(T.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(p.value)),x=S.div(I.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,Z=e.rewardDefaultInfos.map(D=>{var se,dt;let j=D.mint.decimals,ee=i[D.mint.address];return u<((se=D.startTime)!=null?se:0)||u>((dt=D.endTime)!=null?dt:0)||!D.perSecond||!ee||j===void 0?0:new E(ee.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:Z,apr:V+Z.reduce((D,j)=>D+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),p=H.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=he(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Ce(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,p,f,!a):new Ce(0);else if(l.lte(p)){let A=ce.getLiquidityFromTokenAmountA(l,p,f,!a),T=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:T}else b=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,p,f);return je.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[he(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),he(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[he(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),he(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new $t(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=du.decode(i.data),s=ct(e,new $t(n.id)).publicKey,a=await je.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function Vh({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,T,h,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[he(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),he(p,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(at)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(at)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(li).sub(t).mod(li)}};function Ee(r,e){return zo(r.mul(e),64,256)}function ep(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function zo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(mr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,at,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(mr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,at,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Qe||e>Je)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new re("37481735321082"))),e>0&&(n=ou.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Rt)||e.lt(Ct))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=ep(n,32,128),o=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new re(0))&&s<su;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new re(au)),p=zo(m.sub(new re(uu)),64,128).toNumber(),d=zo(m.add(new re(cu)),64,128).toNumber();return p==d?p:H.getSqrtPriceX64FromTick(d).lte(e)?d:p}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=fn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(mr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),at,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),ut):$.mulDivFloor(n,t.sub(e),ut)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,at,Go):a.shrn(mr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Go,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,i,!1),a=ce.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,i,o),a=ce.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new re(new E(u.toString()).mul(l).toFixed(0)),p=new re(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[he(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),he(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[he(new re(new E(d.amountA.toString()).mul(p).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),he(new re(new E(d.amountB.toString()).mul(p).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:sn(y.expirationTime,f.expirationTime)}}},pn=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(at):Rt.sub(at)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+le.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new re(0)},g=d,P=n[d],A=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=je.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");g=V.nextStartIndex;let{publicKey:F}=ge(e,t,g);x=F,P=n[g],S=G.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),h.tickNext<Qe?h.tickNext=Qe:h.tickNext>Je&&(h.tickNext=Je),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let O;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?O=y:O=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let V=S.liquidityNet;s&&(V=V.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,V)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=V!=b.tick&&!s&&P.startTickIndex===V,b.tick=V}++A}try{let{nextStartIndex:h,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==h&&(b.accounts.push(ge(e,t,h).publicKey),d=h)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new 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=$.mulDivFloor(i,mi.sub(new re(o.toString())),mi);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ft).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ft),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Ft))&&(s.amountOut=i.mul(Ft)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new re(o),mi.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=ge(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new tp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=ge(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Qe||e>Je}static nextInitTick(e,t,n,i,o){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<_e;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=_e-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<_e;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var sT=R([pe(8),M("bump"),xt("index"),B(""),ze("protocolFeeRate"),ze("tradeFeeRate"),xt("tickSpacing"),q(w(),8,"")]),np=R([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Yo=R([pe(8),De("initialized"),B("poolId"),q(np,1e3,"observations"),q(z(),5,"")]),rp=R([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),du=R([pe(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),xt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),We("tickCurrent"),xt("observationIndex"),xt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(rp,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),ip=R([z("growthInsideLastX64"),w("rewardAmountOwed")]),pu=R([pe(8),M("bump"),B("nftMint"),B("poolId"),We("tickLower"),We("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ip,3,"rewardInfos"),q(w(),8,"")]),aT=R([pe(8),M("bump"),B("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),op=R([We("tick"),fa("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),dr=R([pe(8),B("poolId"),We("startTickIndex"),q(op,_e,"ticks"),M("initializedTickCount"),q(M(),115,"")]),yu=R([pe(329),q(B(),100,"whitelistMints")]),fu=R([pe(8),B("poolId"),q(q(w(),8),Xo,"positiveTickArrayBitmap"),q(q(w(),8),Xo,"negativeTickArrayBitmap")]);var wu=ae("Raydium_Clmm"),At={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Be=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...At.createPool,...g]);return new wt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ye({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[Cn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Yo.span),space:Yo.span,programId:n})],{publicKey:f}=ru(n,a,p,d),{publicKey:b}=Uo(n,f,p),{publicKey:g}=Uo(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||qe),d,g,new v(s.programId||qe),ct(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),Z=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Z],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...At.openPosition,...j]);return new wt({keys:D,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Qo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:T}=ci(y),{publicKey:h}=St(p,y),{publicKey:I}=mn(p,d,i,o),S=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Qo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:T}=ci(y),{publicKey:h}=St(p,y),{publicKey:I}=mn(p,d,i,o),S=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ct(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),Z=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Z],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new gu(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...At.openPosition,...j]);return new wt({keys:D,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new v((await l(1))[0]);else{let x=Qo.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(d,y,f),{publicKey:P}=ge(d,y,b),{publicKey:A}=ye(n.wallet,m,qe),{publicKey:T}=ci(m),{publicKey:h}=St(d,m),{publicKey:I}=mn(d,y,i,o),S=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ct(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:p,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...At.closePosition,...u]);return new wt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=ye(n.wallet,i.nftMint,qe),{publicKey:a}=St(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...At.increaseLiquidity,...I]);return new wt({keys:h,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=St(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=St(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:new gu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...At.increaseLiquidity,...I]);return new wt({keys:h,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let T=R([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],S=Buffer.alloc(T.span);T.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...At.decreaseLiquidity,...S]);return new wt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(c,l,m),{publicKey:y}=ge(c,l,p),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:b}=St(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new v(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new v(e.rewardDefaultInfos[T].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ct(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let P=R([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),De("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...At.swap,...h]);return new wt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,ct(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=R([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...At.initReward,...f]);return new wt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=iu(o,s,i.mint).publicKey,u=lr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=R([M("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:U(l),endTime:U(m)},f);let b=Buffer.from([...At.setRewardEmissions,...f]);return new wt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=lr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([M("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...At.collectReward,...l]);return new wt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as cp}from"@solana/web3.js";import{PublicKey as ap}from"@solana/web3.js";import Au from"bn.js";var ku=new Au(25),Pu=new Au(1e4),sp={4:3,5:3};var up=ae("Raydium_liquidity_serum");function hu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=ap.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw up.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import yr from"bn.js";function Ho({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function yn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function lp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function mp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=yn({name:"amm_associated_seed",programId:a,marketId:t}),l=yn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=mp({programId:a}),d=yn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=yn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=yn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=lp({programId:a,marketId:t}),g=yn({name:"target_associated_seed",programId:a,marketId:t}),P=yn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=hu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:cp.default,configId:Ho({programId:a})}}var jo;async function ET({connection:r,poolKeysList:e,config:t}){jo||(jo=new Sn({connection:r}),await jo.initStableModelLayout());let n=e.map(s=>$a({poolKeys:s}));return(await Hs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Zs(s,"GetPoolData"),u=new yr(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),p=new yr(Mt(a,"pool_coin_amount")),d=new yr(Mt(a,"pool_pc_amount")),y=new yr(Mt(a,"pool_lp_supply")),f="0";try{f=Mt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new yr(f)}})}import He from"bn.js";var br=class extends xe{constructor(t){super(t);this.stableLayout=new Sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new He(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=qa(t[o?"mintB":"mintA"]),[u,c]=[new He(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new He(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new He(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let p=Se;s.isZero()||(p=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c));let d=vr(s.mul(l),new He(m==="base"?t.mintAmountA:t.mintAmountB).mul(new He(10).pow(new He(t[m==="base"?"mintA":"mintB"].decimals)))),f=new ve(new He(1)).add(i).mul(p).quotient,b=new Pe(a,p),g=new Pe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new it(n.lpMint.address)}),P=[d,y],A=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),A.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[O,V]=A,[F,Z]=T,D=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Wt,se=Te(Wt,["tokenAccount"]);j.addInstruction(se);let Sr=await l.handleTokenAccount({side:"in",amount:Z,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:dt}=Sr,Nn=Te(Sr,["tokenAccount"]);j.addInstruction(Nn);let Mn=await l.handleTokenAccount({side:"out",amount:0,mint:new it(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Pi}=Mn,hi=Te(Mn,["tokenAccount"]);return j.addInstruction(hi),j.addInstruction({instructions:[Ha({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:ee,quoteTokenAccount:dt,lpTokenAccount:Pi,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:Z,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new it(n.mintA.address),new it(n.mintB.address),new it(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=S,T=Te(S,["tokenAccount"]);b.addInstruction(T);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=Te(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Wo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=di,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,ee.accountInfo.mint,di).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new He(0)),A=t.mintA.address===de.WSOL.mint.toString(),T=t.mintB.address===de.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:di,mint:new it(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:di,mint:new it(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Wt of s.rewardInfos){let Sr=Wt.mint.address===de.WSOL.mint.toString();if(b[Wt.mint.address])ee.push(b[Wt.mint.address]);else{let{account:Mn,instructionParams:ds}=await this.scope.account.getOrCreateTokenAccount({mint:new it(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Sr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Mn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),ds&&f.addInstruction(ds),ee.push(Mn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ee},Nn=gt[s.programId],Pi=Nn===6?ir(dt):Nn===5?or(dt):sr(dt),hi={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[Pi],instructionTypes:[hi[Nn]]})}let O=await this.getAmmPoolKeys(t.id),V=Wo({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[F,Z]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Be.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:Z},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var Z;let b=c.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),g=c.useSOLBalance&&i.mint.equals(Iu),P=c.useSOLBalance&&o.mint.equals(Iu),A=this.createTxBuilder(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(h||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:V,instructionType:F}=Za(W(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:ye(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[V],instructionTypes:[F]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=Ho({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ua.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===Zi.toBase58(),y;if(d)y=new E(p.toString()).div(m.toString());else{let x=Qa(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new He(0),g=new He(0);if(!f.isZero())if(d){g=zt(f.mul(ku),Pu);let x=f.sub(g),O=m.add(x);b=p.mul(x).div(O)}else{g=f.mul(new He(2)).div(new He(1e4));let x=f.sub(g);l==="quote"?b=new He(za(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new He(Ya(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new He(new E(b.toString()).mul(1-s).toFixed(0)),A=b,T=P,h=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:A,minAmountOut:T,currentPrice:y,executionPrice:h,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new it(l.address),programId:new it(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new it(m.address),programId:new it(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new it(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=Te(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new it(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=Te(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ai({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import kt from"bn.js";var gr=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)||ue.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new kt(new ue(i.address).toBuffer()).gt(new kt(new ue(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:W(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:d,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},lu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:d,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(O||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await Be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:W(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(F),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:p,getEphemeralSigners:d}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),P=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:d});return y.addInstruction(x),y.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(T||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(T||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,P&&p.addInstruction(P);let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,T&&p.addInstruction(T);let h=[];for(let O of t.rewardDefaultInfos){let V=i.useSOLBalance&&O.mint.address===te.toString(),F;if(O.mint.address===t.mintA.address)F=f;else if(O.mint.address===t.mintB.address)F=b;else{let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(O.mint.programId),mint:new ue(O.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=Z,D&&p.addInstruction(D)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await Be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let O=await Be.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),x=N(N({},x),O.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Be.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Be.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Be.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),d=Be.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),p||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:p},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Be.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Be.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?Ct.add(new kt(1)):Rt.sub(new kt(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=P,A&&m.addInstruction(A)}let b;if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=P,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(T=>!T.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new ue(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,T&&l.addInstruction(T)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new ue(p.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=A,T&&l.addInstruction(T)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let T=n.useSOLBalance&&A.mint.address===te.toString(),h=c[A.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,S&&l.addInstruction(S)}c[A.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let T=Be.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new kt(0),amountMinA:new kt(0),amountMinB:new kt(0)});l.addInstruction(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(lr(e).publicKey);return t?yu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as fi,TOKEN_PROGRAM_ID as en,AccountLayout as _u}from"@solana/spl-token";var dp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pp=Buffer.from("amm_config","utf8"),fp=Buffer.from("pool","utf8"),yp=Buffer.from("pool_lp_mint","utf8"),bp=Buffer.from("pool_vault","utf8"),gp=Buffer.from("observation","utf8");function wp(r){return oe([dp],r)}function Ap(r,e){return oe([pp,hp(e)],r)}function kp(r,e,t,n){return oe([fp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Pp(r,e){return oe([yp,e.toBuffer()],r)}function xu(r,e,t){return oe([bp,e.toBuffer(),t.toBuffer()],r)}function pi(r,e){return oe([gp,e.toBuffer()],r)}function hp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Bu({programId:r,mintA:e,mintB:t}){let n=Ap(r,0).publicKey,i=wp(r).publicKey,o=kp(r,n,e,t).publicKey,s=Pp(r,o).publicKey,a=xu(r,o,e).publicKey,u=xu(r,o,t).publicKey,c=pi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo,TOKEN_2022_PROGRAM_ID as Su,ASSOCIATED_TOKEN_PROGRAM_ID as Tp}from"@solana/spl-token";var Ip=ae("Raydium_cpmm"),Ar={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Ku(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let T=R([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Tp,isSigner:!1,isWritable:!1},{pubkey:_s,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new wr({keys:h,programId:r,data:Buffer.from([...Ar.initialize,...I])})}function Cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Ip.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.deposit,...g])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Ms,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.withdraw,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=R([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseInput,...P])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=R([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseOutput,...P])})}import ot from"bn.js";var Nu=R([pe(8),M("bump"),De("disableCreatePool"),xt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),Mu=R([pe(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends 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){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=Mu.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=Nu.decode(u.data))}return W(N({},i),{baseReserve:new ot(_u.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new ot(_u.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Te(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Z,D,j;let p=i.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),d=new ot(new Y(c.mintA.address).toBuffer()).lte(new ot(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===fi.toBase58(),A=i.useSOLBalance&&f.address===fi.toBase58(),[T,h]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:p,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||O===void 0)throw Error("you don't has some token account");let F=Bu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[Ku(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,ye(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:en),new Y((j=f.programId)!=null?j:en),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===fi.toString(),A=t.mintB.address===fi.toString(),T=this.createTxBuilder(),[h,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});T.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});T.addInstruction(V||{}),!S&&!O&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let F=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Z}=ee,D=Te(ee,["tokenAccount"]);T.addInstruction(D);let j=await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[Cu(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),Z,S,O,new Y(j.vault.A),new Y(j.vault.B),h,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:c})}async withdrawLiquidity(e){let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new ot(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],{account:m}=this.scope,p=this.createTxBuilder(),[d,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=d.equals(te),b=y.equals(te),g,P,{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});g=A,T&&p.addInstruction(T);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:!b,checkCreateATAOwner:!1});P=h,I&&p.addInstruction(I),(!g||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let S=await m.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});S||this.logAndCreateError("cannot found lp token account","tokenAccounts",m.tokenAccounts);let x=await this.getCpmmPoolKeys(t.id);return p.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(x.authority),new Y(t.id),S,g,P,new Y(x.vault.A),new Y(x.vault.B),d,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),p.addCustomComputeBudget(o),p.versionBuild({txVersion:s})}async swap(e){var T,h,x,O,V,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:en),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Te(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=Te(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:en),new Y((O=t.mintB.programId)!=null?O:en),m,p,pi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Ou(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((V=t.mintB.programId)!=null?V:en),new Y((F=t.mintA.programId)!=null?F:en),p,m,pi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,T,h,I,S,x,O;let s=1-Number(n.toSignificant())/100,a=new ot(new E(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=he(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new ot(0)),[l,m]=[new ot(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new ot(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new ot(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(T=(A=u.fee)==null?void 0:A.toString())!=null?T:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:Se,fee:void 0,expirationTime:void 0};c.isZero()||(f=he(xp(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new ot(1)).add(n),g=he(b.mul(f.amount.sub((h=f.amount)!=null?h:new ot(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(I=f.fee)==null?void 0:I.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(O=(x=g.fee)==null?void 0:x.toString())!=null?O:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function xp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new ot(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new ot(1))),{amountA:i,amountB:o}}var Pr=class extends xe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(Se)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Se)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=U(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Hn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[Hn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Vt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";import{PublicKey as Sp,Transaction as $o,TransactionInstruction as Kp}from"@solana/web3.js";import Vu from"bn.js";var Ze=class extends xe{static getPdaPoolId(e,t){return oe([Ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Vu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Ze.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Ze.POOL_LAYOUT.span||b.data.length!==Ze.OWNER_LAYOUT.span)continue;let g=Ze.POOL_LAYOUT.decode(f.data),P=Ze.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new Vu(0))).filter(x=>!x).length!==3,I=o>A&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:A,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,O)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[O].debtAmount.add(P.tokenInfo[O].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(de.WSOL.mint),associatedOnly:u.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(de.WSOL.mint),associatedOnly:m.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Gr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new $o().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new $o().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new $o().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=R([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Bp,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Kp({keys:o,programId:e,data:a})}},lt=Ze;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=R([pe(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(R([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=R([pe(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(R([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Sp(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as es}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Du}from"@solana/spl-token";import hr from"bn.js";import{TransactionInstruction as Rp,SYSVAR_RENT_PUBKEY as Lp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{createInitializeAccountInstruction as Fu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as vu}from"@solana/web3.js";function Cp(r="accountFlags"){let e=new Jr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Jo=R([pe(5),Cp("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 Op({programId:r,marketInfo:e}){let t=R([M("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),xt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Lp,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 Rp({keys:n,programId:r,data:i})}async function Wu({connection:r,wallet:e,marketInfo:t}){let n=new vu,i=await r.getMinimumBalanceForRentExemption(165);n.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Eu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Eu}),Fu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Fu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new vu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Jo.span),space:Jo.span,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Op({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:o,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var Rn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ye({fromPublicKey:u,programId:o}),l=Ye({fromPublicKey:u,programId:o}),m=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),d=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:Du}),f=Ye({fromPublicKey:u,programId:Du}),b=0,g=new hr(100);function P(){let V=new hr(0);for(;;)try{return{vaultOwner:es.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new hr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:T}=P(),h=new hr(Math.round(10**e.decimals*n)),I=new hr(Math.round(n*10**t.decimals*i));if(h.eq(Se))throw Error("lot size is too small");if(I.eq(Se))throw Error("tick size or lot size is too small");let S=await Wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});let O=[];for await(let V of S.slice(1,S.length)){let F=this.createTxBuilder();F.addCustomComputeBudget(a),F.addInstruction({instructions:V.transaction.instructions,signers:V.signer,instructionTypes:V.instructionTypes});let Z=await F.versionBuild({txVersion:s});O.push(Z)}return x.versionMultiBuild({extraPreBuildData:O,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new es(e.mint),quoteMin:new es(t.mint)}},txVersion:s})}};import{PublicKey as Ir}from"@solana/web3.js";import{PublicKey as Np,TransactionInstruction as ns,SYSVAR_CLOCK_PUBKEY as Mp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as rs}from"@solana/spl-token";var ts=R([M("instruction"),ua("amount")]),Tr=R([M("instruction")]);function BB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Np("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:rs,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:_i,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(ts.span);return ts.encode({instruction:1,amount:Number(e)},i),new ns({keys:n,programId:r,data:i})}function yi({programId:r},e){let t=[{pubkey:rs,isSigner:!1,isWritable:!1},{pubkey:_i,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Tr.span);return Tr.encode({instruction:2},n),new ns({keys:t,programId:r,data:n})}function is(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Tr.span);Tr.encode({instruction:2},s);let a=[{pubkey:rs,isWritable:!1,isSigner:!1},{pubkey:Mp,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new ns({programId:e.programId,keys:a,data:s})}import qu from"bn.js";var _p={[Yn.IDO_PROGRAM_ID_V1.toString()]:1,[Yn.IDO_PROGRAM_ID_V2.toString()]:2,[Yn.IDO_PROGRAM_ID_V3.toString()]:3,[Yn.IDO_PROGRAM_ID_V4.toString()]:4},Ln=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=_p[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new qu(e.coin).isZero(),!new qu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[yi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[yi({programId:new Ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[yi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:f,ledgerAccount:new Ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[is(W(N({},g),{side:"base"}))]:[],...l?[is(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as Vp}from"@solana/web3.js";import{MintLayout as Ep,TOKEN_2022_PROGRAM_ID as os,TOKEN_PROGRAM_ID as ss}from"@solana/spl-token";var xr=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._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(ht.address,ht),this._mintGroup.official.add(ht.address),s.forEach(u=>{this._blackTokenMap.set(u.address,W(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?os.toBase58():ss.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?os.toBase58():ss.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?os.toBase58():ss.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return ht;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new Vp(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ep.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var bi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n,this._owner=i?new yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ar({scope:this,moduleName:"Raydium_Farm"}),this.account=new Zn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new br({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new xr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Pr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new gr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Rn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Ln({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){let t=Fp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Hr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new bi(W(N({},t),{api:u}));return await c.fetchAvailabilityStatus(e.disableFeatureCheck),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Zr);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(ia);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(Zr),new Error(Zr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()-e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as cs,TOKEN_2022_PROGRAM_ID as as}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as ls,SystemProgram as Gu}from"@solana/web3.js";import us from"bn.js";function OS(r,e,t,n,i,o,s,a,u,c,l,m){let p=R([M("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:cs,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new ls({keys:d,programId:r,data:y})}function NS(r,e,t,n,i,o,s,a,u,c){let l=R([M("instruction")]),m=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:cs,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=fe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new ls({keys:m,programId:r,data:p})}function Uu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=fe(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(as)||a.mintB.programId.equals(as)?[{pubkey:as,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ct(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function vp(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=R([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:cs,isSigner:!1,isWritable:!1}];f.push(...Uu(a,c,o,t,n,d[0])),f.push(...Uu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new ls({keys:f,programId:r,data:b})}async function MS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=fe(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(at):Rt.sub(at);return await Be.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new us(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ai({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new us(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?_.AmmV5SwapBaseIn:_.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[vp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new us(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import zu from"bn.js";var ms=new zu(1e6);function Wp(r,e,t){return r.mul(e).add(t).sub(new zu(1)).div(t)}function Xu(r,e,t){return r.mul(e).div(t)}var gi=class{static tradingFee(e,t){return Wp(e,t,ms)}static protocolFee(e,t){return Xu(e,t,ms)}static fundFee(e,t){return Xu(e,t,ms)}};import Br from"bn.js";function wi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Dp(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=wi(r,e);if(n.gt(On)){t=t.add(new Br(1));let i=r.div(t);n=wi(r,t),n.gt(On)&&(i=i.add(new Br(1)))}return[t,e]}var On=new Br(0),Ai=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Dp(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return wi(e.mul(n),t).gt(On)&&s.gt(On)&&(s=s.add(new Br(1))),wi(e.mul(i),t).gt(On)&&a.gt(On)&&(a=a.add(new Br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Yu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Yu||{}),Qu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=gi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ai.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var ju={[Qr.toBase58()]:3},Hu={3:Qr};var qp=R([pe(5),pe(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),Zu={3:qp};import{PublicKey as $u}from"@solana/web3.js";var ki=ae("Serum"),Ju=class{static getProgramId(e){let t=Hu[e];return t||ki.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||ki.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Zu[e];return t||ki.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=$u.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return ki.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var KK=r=>r;export{db as ACCOUNT_TYPE_SIZE,Wb as ALL_PROGRAM_ID,Xd as AMM_CONFIG_SEED,Ll as AMM_STABLE,Zi as AMM_V4,cf as ANAMint,Xe as API_URLS,Bl as AccountType,sT as AmmConfigLayout,Hr as Api,su as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,gy as BN_100,wy as BN_1000,Ay as BN_10000,by as BN_FIVE,Ds as BN_ONE,nn as BN_TEN,yy as BN_THREE,fy as BN_TWO,Se as BN_ZERO,zg as BitStructure,aa as Blob,Ol as CLMM_PROGRAM_ID,_i as CLOCK_PROGRAM_ID,vl as CREATE_CPMM_POOL_AUTH,Wl as CREATE_CPMM_POOL_FEE_ACC,Fl as CREATE_CPMM_POOL_PROGRAM,gr as Clmm,Be as ClmmInstrument,Ai as ConstantProductCurve,Nu as CpmmConfigInfoLayout,gi as CpmmFee,Mu as CpmmPoolInfoLayout,vn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,pg as DEV_API_URLS,Fb as DEV_CREATE_CPMM_POOL_AUTH,vb as DEV_CREATE_CPMM_POOL_FEE_ACC,Eb as DEV_CREATE_CPMM_POOL_PROGRAM,Rd as DataElement,lf as ETHMint,Xo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ca as FARM_LOCK_MINT,Ra as FARM_LOCK_VAULT,ji as FARM_PROGRAM_ID_V3,Hi as FARM_PROGRAM_ID_V5,Tn as FARM_PROGRAM_ID_V6,gt as FARM_PROGRAM_TO_VERSION,Oa as FARM_VERSION_TO_LEDGER_LAYOUT,La as FARM_VERSION_TO_STATE_LAYOUT,mi as FEE_RATE_DENOMINATOR,ms as FEE_RATE_DENOMINATOR_VALUE,Jd as FETCH_TICKARRAY_COUNT,$d as Fee,ne as Fraction,Yn as IDO_ALL_PROGRAM,Ml as IDO_PROGRAM_ID_V1,_l as IDO_PROGRAM_ID_V2,Vl as IDO_PROGRAM_ID_V3,El as IDO_PROGRAM_ID_V4,Vr as INSTRUCTION_PROGRAM_ID,_ as InstructionType,$i as JupTokenType,Pu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,sp as LIQUIDITY_VERSION_TO_SERUM_VERSION,hP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,au as LOG_B_2_X32,uu as LOG_B_P_ERR_MARGIN_LOWER_X64,cu as LOG_B_P_ERR_MARGIN_UPPER_X64,zr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,ic as LogLevel,Ii as Logger,Jo as MARKET_STATE_LAYOUT_V2,qp as MARKET_STATE_LAYOUT_V3,Zu as MARKET_VERSION_TO_STATE_LAYOUT,js as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,Je as MAX_TICK,An as MEMO_PROGRAM_ID,Ms as MEMO_PROGRAM_ID2,kn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,Kn as MODEL_DATA_PUBKEY,Ju as Market,$ as MathUtil,Go as MaxU64,ou as MaxUint128,Ft as NEGATIVE_ONE,uf as NRVMint,at as ONE,Rl as OPEN_BOOK_PROGRAM,Hd as OPERATION_SEED,Yo as ObservationInfoLayout,np as ObservationLayout,yu as OperationLayout,oo as OptionLayout,yt as Owner,ef as PAIMint,Qd as POOL_REWARD_VAULT_SEED,zd as POOL_SEED,Zd as POOL_TICK_ARRAY_BITMAP_SEED,Yd as POOL_VAULT_SEED,nu as POSITION_SEED,ve as Percent,Ul as PoolFetchType,du as PoolInfoLayout,je as PoolUtils,pu as PositionInfoLayout,ip as PositionRewardInfoLayout,fr as PositionUtils,Ge as Price,aT as ProtocolPositionLayout,li as Q128,ut as Q64,Jp as RAYMint,tt as RENT_PROGRAM_ID,bi as Raydium,rp as RewardInfo,Yu as RoundDirection,Wi as Rounding,Nl as Router,ju as SERUM_PROGRAMID_TO_VERSION,Qr as SERUM_PROGRAM_ID_V3,Hu as SERUM_VERSION_TO_PROGRAMID,ra as SESSION_KEY,Ne as SOLMint,ht as SOL_INFO,Zk as SPL_MINT_LAYOUT,tf as SRMMint,Ji as STORAGE_KEY,_s as SYSTEM_PROGRAM_ID,H as SqrtPriceMath,Sn as StableLayout,so as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,jd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,jP as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,fu as TickArrayBitmapExtensionLayout,pr as TickArrayBitmapExtensionUtils,dr as TickArrayLayout,op as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,de as Token,Pe as TokenAmount,Yr as TxBuilder,Wn as TxVersion,mr as U64Resolution,ZP as U64_IGNORE_RANGE,no as UInt,nf as USDCMint,af as USDHMint,rf as USDTMint,Cl as UTIL1216,ao as Union,Sa as Voter,ld as VoterDepositEntry,cd as VoterLockup,Ba as VoterRegistrar,ud as VoterVotingMintConfig,te as WSOLMint,Jr as WideBits,_t as WrappedLayout,me as ZERO,Es as _100_PERCENT,k as accountMeta,ty as add,Ur as addComputeBudget,Vo as addLiquidityLayout,Lw as array,bo as associatedLedgerAccountLayout,ro as bits,pe as blob,De as bool,Co as calFarmRewardAmount,Wp as ceilDiv,Dn as checkLegacyTxSize,qn as checkV0TxSize,zi as chunkArray,Tr as claimLayout,Vt as closeAccountInstruction,Oi as commonSystemAccountMeta,_a as createAssociatedLedgerAccountInstruction,ae as createLogger,Ua as createPoolFeeLayout,Za as createPoolV4InstructionV2,PP as createPoolV4Layout,Bt as createWSolAccountInstructions,kw as cstr,vf as currencyEquals,pl as decimalToFraction,Fm as decodeBool,Zf as div,vr as divCeil,$e as dwLayout,vm as encodeBool,Og as endlessRetry,ll as eq,yw as f32,bw as f32be,gw as f64,ww as f64be,ko as farmAddRewardLayout,VA as farmLedgerLayoutV3_1,Jn as farmLedgerLayoutV3_2,EA as farmLedgerLayoutV5_1,Ia as farmLedgerLayoutV5_2,xa as farmLedgerLayoutV6_1,Ma as farmRewardInfoToConfig,wo as farmRewardLayout,Ao as farmRewardRestartLayout,ad as farmRewardTimeInfoLayout,ha as farmStateV3Layout,Ta as farmStateV5Layout,$n as farmStateV6Layout,uk as fetchMultipleFarmInfoAndUpdate,ET as fetchMultipleInfo,pb as fetchMultipleMintInfos,oe as findProgramAddress,No as fixedSwapInLayout,Mo as fixedSwapOutLayout,Xu as floorDiv,Gr as forecastTransactionSize,Wd as formatLayout,Ye as generatePubKey,ye as getATAAddress,Na as getAssociatedAuthority,Ho as getAssociatedConfigId,rt as getAssociatedLedgerAccount,tr as getAssociatedLedgerPoolAccount,lp as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Ap as getCpmmPdaAmmConfigId,kp as getCpmmPdaPoolId,Bu as getCreatePoolKeys,ea as getDate,Ro as getDepositEntryIndex,Ya as getDxByDyBaseIn,za as getDyByDxBaseIn,rb as getEpochInfo,oi as getFarmLedgerLayout,md as getFarmStateLayout,mp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,Vh as getLiquidityFromAmounts,ey as getMax,Tt as getMultipleAccountsInfo,hn as getMultipleAccountsInfoWithCustomFlags,Yi as getMultipleLookupTableInfo,zP as getPdaAmmConfigId,ct as getPdaExBitmapAccount,Pp as getPdaLpMint,ci as getPdaMetadataKey,pi as getPdaObservationId,lr as getPdaOperationAccount,St as getPdaPersonalPositionAddress,wp as getPdaPoolAuthority,ru as getPdaPoolId,iu as getPdaPoolRewardVaulId,Uo as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,xu as getPdaVault,Pn as getRecentBlockHash,To as getRegistrarAddress,Gl as getSessionKey,Qa as getStablePrice,Kl as getTime,zy as getTimestamp,Ko as getTokenOwnerRecordAddress,Yb as getTransferAmountFee,he as getTransferAmountFeeV2,Bo as getVoterAddress,So as getVoterWeightRecordAddress,xo as getVotingMintAuthority,Io as getVotingTokenMint,kd as governanceCreateTokenOwnerRecord,Yg as greedy,cl as gt,Hf as gte,fa as i128,DP as i16ToBytes,ui as i32ToBytes,ei as i64,pa as i8,_o as initPoolLayout,fo as initTokenAccountInstruction,Op as initializeMarket,Rb as intersection,na as isDateAfter,ta as isDateBefore,fl as isDecimal,Jf as isMeaningfulNumber,Js as isNumber,Po as isValidFarmVersion,cr as isZero,fe as jsonInfo2PoolKeys,ck as judgeFarmType,Do as leadingZeros,tu as leastSignificantBit,Sd as liquidityStateV4Layout,Kd as liquidityStateV5Layout,Qf as lt,jf as lte,of as mSOLMint,ai as makeAMMSwapInstruction,Ha as makeAddLiquidityInstruction,Oo as makeAddNewRewardInstruction,yi as makeClaimInstruction,is as makeClaimInstructionV4,Ku as makeCreateCpmmPoolInInstruction,Va as makeCreateFarmInstruction,Wu as makeCreateMarketInstruction,Ea as makeCreatorWithdrawFarmRewardInstruction,Cu as makeDepositCpmmInInstruction,Fa as makeDepositInstructionV3,va as makeDepositInstructionV5,Wa as makeDepositInstructionV6,Bk as makeDepositTokenInstruction,Kk as makeDepositWithdrawInstruction,vP as makeInitPoolInstructionV4,BB as makePurchaseInstruction,Lo as makeRestartRewardInstruction,$a as makeSimulatePoolInfoInstruction,Lu as makeSwapCpmmBaseInInInstruction,Ou as makeSwapCpmmBaseOutInInstruction,Ud as makeSwapFixedInInstruction,Gd as makeSwapFixedOutInstruction,MS as makeSwapInstruction,Hn as makeTransferInstruction,Ru as makeWithdrawCpmmInInstruction,sr as makeWithdrawInstructionV3,or as makeWithdrawInstructionV5,ir as makeWithdrawInstructionV6,Sk as makeWithdrawTokenInstruction,sn as minExpirationTime,HP as mockCreatePoolInfo,lu as mockV3CreatePoolInfo,Ld as modelDataInfoLayout,eu as mostSignificantBit,Ui as mul,Gi as notInnerObject,uw as ns64,fw as ns64be,ua as nu64,nw as nu64be,io as offset,Mb as offsetDateTime,Bw as option,U as parseBigNumberish,tn as parseNumberInfo,Zs as parseSimulateLogToJson,Mt as parseSimulateValue,Pa as parseTokenAccountResp,oP as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,B as publicKey,ts as purchaseLayout,id as realFarmStateV3Layout,od as realFarmStateV5Layout,sd as realFarmV6Layout,Ws as recursivelyDecimalToFraction,Wo as removeLiquidityInstruction,Eo as removeLiquidityLayout,OS as route1Instruction,NS as route2Instruction,vp as routeInstruction,Rw as rustEnum,iw as s16,cw as s16be,ow as s24,lw as s24be,We as s32,mw as s32be,sw as s40,dw as s40be,aw as s48,pw as s48be,rw as s8,q as seq,Yp as setLoggerLevel,ml as shakeFractionDecimal,Hs as simulateMultipleInstruction,FP as simulatePoolInfoInstruction,Pl as simulateTransaction,Gs as sleep,Vi as solToWSol,uP as solToWSolToken,Yt as splAccountLayout,Us as splitNumber,sf as stSOLMint,Cw as str,R as struct,$f as sub,Kw as tagged,Di as tenExponential,dl as toBN,hl as toBuffer,qs as toFraction,Yf as toFractionWithDecimals,ky as toPercent,qa as toToken,aP as toTokenAmount,sP as toTokenInfo,Py as toTokenPrice,hy as toTotalPrice,vs as toUsdCurrency,qo as trailingZeros,Mi as tryParsePublicKey,z as u128,xt as u16,Ja as u16ToBytes,Zg as u16be,Qg as u24,$g as u24be,ze as u32,qP as u32ToBytes,Jg as u32be,jg as u40,ew as u40be,Hg as u48,tw as u48be,w as u64,M as u8,Ow as union,KK as unionArr,Aw as unionLayoutDiscriminator,Ob as uniq,dd as updateFarmPoolInfo,jr as updateReqHistory,Pw as utf8,Ni as validateAndParsePublicKey,ho as validateFarmRewards,Sw as vec,Wm as vecU8,hd as voterStakeRegistryCreateDepositEntry,Pd as voterStakeRegistryCreateVoter,gd as voterStakeRegistryDeposit,wd as voterStakeRegistryUpdateVoterWeightRecord,Ad as voterStakeRegistryWithdraw,cP as wSolToSolToken,go as withdrawRewardLayout,Lb as xor,Nw as zeros};
1
+ var ec=Object.defineProperty,tc=Object.defineProperties;var nc=Object.getOwnPropertyDescriptors;var Kr=Object.getOwnPropertySymbols;var fs=Object.prototype.hasOwnProperty,ys=Object.prototype.propertyIsEnumerable;var ps=(r,e,t)=>e in r?ec(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))fs.call(e,t)&&ps(r,t,e[t]);if(Kr)for(var t of Kr(e))ys.call(e,t)&&ps(r,t,e[t]);return r},W=(r,e)=>tc(r,nc(e));var Te=(r,e)=>{var t={};for(var n in r)fs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Kr)for(var n of Kr(r))e.indexOf(n)<0&&ys.call(r,n)&&(t[n]=r[n]);return t};import Xl from"axios";import{get as Ti,set as bs}from"lodash";import gs from"dayjs";import rc from"dayjs/plugin/utc";gs.extend(rc);var ic=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(ic||{}),Ii=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 gs().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}},xi={},ws={};function ae(r){let e=Ti(xi,r);if(!e){let t=Ti(ws,r);e=new Ii({name:r,logLevel:t}),bs(xi,r,e)}return e}function Yp(r,e){bs(ws,r,e);let t=Ti(xi,r);t&&(t.level=e)}import{PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import yl from"big.js";import Xt from"bn.js";import Ae from"bn.js";var gn=9e15,Gt=1e9,Bi="0123456789abcdef",Rr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Si={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},hs,Ot,J=!0,Nr="[DecimalError] ",Ut=Nr+"Invalid argument: ",Ts=Nr+"Precision limit exceeded",Is=Nr+"crypto unavailable",xs="[object Decimal]",Ue=Math.floor,Oe=Math.pow,oc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ac=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Bs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,Q=7,uc=9007199254740991,cc=Rr.length-1,Ki=Lr.length-1,L={toStringTag:xs};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};L.ceil=function(){return X(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Ut+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=lc(n,Ls(n,t)),n.precision=r,n.rounding=e,X(Ot==2||Ot==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Oe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Fe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Oe(t,1/3),r=Ue((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ue(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return we(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return X(we(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return X(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/_r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wn(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=wn(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/_r(5,r)),i=wn(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(i,e,t,!0)};L.hyperbolicTangent=L.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=we(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ki)return s=pt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ki)return s=pt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,X(s,l.precision=m,l.rounding=p,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&Ue(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),_n(u.d,i=m,p))do if(a+=10,s=qt(c,a),n=e?Or(l,a+10):qt(r,a),u=we(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(_n(u.d,i+=10,p));return J=!0,X(u,m,p)};L.minus=L.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?X(r,a,u):r}if(t=Ue(r.e/Q),l=Ue(d.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Mr(c,t),J?X(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):(J=!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),J=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Ci(this)};L.naturalLogarithm=L.ln=function(){return qt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?X(r,a,u):r;if(o=Ue(m.e/Q),n=Ue(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Mr(c,n),J?X(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Ut+r);return t.d?(e=Ss(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};L.sine=L.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=dc(n,Ls(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ue((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(we(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,r)};L.tangent=L.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=Ue(l.e/Q)+Ue(r.e/Q),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Mr(o,t),J?X(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return Li(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(et(r,0,Gt),e===void 0?e=n.rounding:et(e,0,8),X(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Pt(n,!0):(et(r,0,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r+1,e),t=Pt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Pt(i):(et(r,0,Gt),e===void 0?e=o.rounding:et(e,0,8),n=X(new o(i),r+i.e+1,e),t=Pt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ss(y)-d.e-1,s=o%Q,e.d[0]=Oe(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Ut+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Fe(y)),l=f.precision,f.precision=o=y.length*Q*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=d.s,p=we(c,n,o,1).minus(d).abs().cmp(we(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};L.toHexadecimal=L.toHex=function(r,e){return Li(this,16,r,e)};L.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:et(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=we(t,r,0,e,1).times(r),J=!0,X(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return Li(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Oe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return X(a,n,o);if(e=Ue(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=uc)return i=Ks(u,a,t,n),r.s<0?new u(1).div(i):X(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Oe(+a,c),e=t==0||!isFinite(t)?Ue(c*(Math.log("0."+Fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ci(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),_n(i.d,n,o)&&(e=n+10,i=X(Ci(r.times(qt(a,e+t)),e),e+5,1),+Fe(i.d).slice(n+1,n+15)+1==1e14&&(i=X(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,X(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Pt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(et(r,1,Gt),e===void 0?e=i.rounding:et(e,0,8),n=X(new i(n),r,e),t=Pt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(et(r,1,Gt),e===void 0?e=n.rounding:et(e,0,8)),X(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=Pt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return X(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=Pt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Fe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Dt(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Dt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function et(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Ut+r)}function _n(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Oe(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Oe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Oe(10,e-3)-1,s}function Cr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Bi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function lc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_r(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,T,h,I,S,x,O,V,F,Z,D=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new D(!n.s||!i.s||(ee?se&&ee[0]==se[0]:!se)?NaN:ee&&ee[0]==0||!se?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=ft,d=Q,l=Ue(n.e/d)-Ue(i.e/d)),F=se.length,O=ee.length,g=new D(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=D.precision,s=D.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/d+2|0,m=0,F==1){for(p=0,se=se[0],I++;(m<O||p)&&I--;m++)S=p*u+(ee[m]||0),P[m]=S/se|0,p=S%se|0;y=p||m<O}else{for(p=u/(se[0]+1)|0,p>1&&(se=r(se,p,u),ee=r(ee,p,u),F=se.length,O=ee.length),x=F,A=ee.slice(0,F),T=A.length;T<F;)A[T++]=0;Z=se.slice(),Z.unshift(0),V=se[0],se[1]>=u/2&&++V;do p=0,c=e(se,A,F,T),c<0?(h=A[0],F!=T&&(h=h*u+(A[1]||0)),p=h/V|0,p>1?(p>=u&&(p=u-1),f=r(se,p,u),b=f.length,T=A.length,c=e(f,A,b,T),c==1&&(p--,t(f,F<b?Z:se,b,u))):(p==0&&(c=p=1),f=se.slice()),b=f.length,b<T&&f.unshift(0),t(A,f,T,u),c==-1&&(T=A.length,c=e(se,A,F,T),c<1&&(p++,t(A,F<T?Z:se,T,u))),T=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[T++]=ee[x]||0:(A=[ee[x]],T=1);while((x++<O||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,hs=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[p=0],u=l/Oe(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/Q),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Oe(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Oe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Oe(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Oe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Oe(10,Q-o),m[p]=s>0?(l/Oe(10,i-s)%Oe(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=ft)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function Pt(r,e,t){if(!r.isFinite())return Rs(r);var n,i=r.e,o=Fe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Dt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Dt(-i-1)+o,t&&(n=t-s)>0&&(o+=Dt(n))):i>=s?(o+=Dt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Dt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Dt(n))),o}function Mr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Or(r,e,t){if(e>cc)throw J=!0,t&&(r.precision=t),Error(Ts);return X(new r(Rr),e,1,!0)}function pt(r,e,t){if(e>Ki)throw Error(Ts);return X(new r(Lr),e,t,!0)}function Ss(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Dt(r){for(var e="";r--;)e+="0";return e}function Ks(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for(J=!1;;){if(t%2&&(o=o.times(e),ks(o.d,s)&&(i=!0)),t=Ue(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ks(e.d,s)}return J=!0,o}function As(r){return r.d[r.d.length-1]&1}function Cs(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ci(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Oe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=X(o.times(r),u,1),t=t.times(++l),a=s.plus(we(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&_n(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return X(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function qt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Fe(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Or(g,l+2,A).times(o+""),f=qt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,P,J=!0):f;for(m=f,u=s=f=we(f.minus(1),f.plus(1),l,1),p=X(f.times(f),l,1),i=3;;){if(s=X(s.times(p),l,1),c=u.plus(we(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Or(g,l+2,A).times(o+""))),u=we(u,new g(d),l,1),e==null)if(_n(u.d,l-y,P,a))g.precision=l+=y,c=s=f=we(m.minus(1),m.plus(1),l,1),p=X(f.times(f),l,1),i=a=1;else return X(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function Rs(r){return String(r.s*r.s/0)}function Ri(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function mc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Bs.test(e))return Ri(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(sc.test(e))t=16,e=e.toLowerCase();else if(oc.test(e))t=2;else if(ac.test(e))t=8;else throw Error(Ut+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Ks(n,new n(t),o,o*2)),c=Cr(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Mr(c,l),r.d=c,J=!1,s&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Vn.pow(2,u))),J=!0,r)}function dc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_r(5,t)),e=wn(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function wn(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(J=!1,u=t.times(t),a=new r(n);;){if(s=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=we(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function _r(r,e){for(var t=r;--e;)t*=r;return t}function Ls(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=As(t)?n?2:3:n?4:1,e;Ot=As(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Li(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(et(t,1,Gt),n===void 0?n=d.rounding:et(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=Rs(r);else{for(l=Pt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Cr(Pt(p),10,i),p.e=p.d.length),m=Cr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=we(r,p,t,n,0,i),m=r.d,o=r.e,c=hs),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Bi.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Cr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Bi.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function ks(r,e){if(r.length>e)return r.length=e,!0}function pc(r){return new this(r).abs()}function fc(r){return new this(r).acos()}function yc(r){return new this(r).acosh()}function bc(r,e){return new this(r).plus(e)}function gc(r){return new this(r).asin()}function wc(r){return new this(r).asinh()}function Ac(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function Pc(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(we(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,o,1)),t}function hc(r){return new this(r).cbrt()}function Tc(r){return X(r=new this(r),r.e+1,2)}function Ic(r,e,t){return new this(r).clamp(e,t)}function xc(r){if(!r||typeof r!="object")throw Error(Nr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Gt,"rounding",0,8,"toExpNeg",-gn,0,"toExpPos",0,gn,"maxE",0,gn,"minE",-gn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Si[t]),(n=r[t])!==void 0)if(Ue(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ut+t+": "+n);if(t="crypto",i&&(this[t]=Si[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(Is);else this[t]=!1;else throw Error(Ut+t+": "+n);return this}function Bc(r){return new this(r).cos()}function Sc(r){return new this(r).cosh()}function Os(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Ps(o)){c.s=o.s,J?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Ri(c,o.toString())}else if(u!=="string")throw Error(Ut+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Bs.test(o)?Ri(c,o):mc(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=xc,i.clone=Os,i.isDecimal=Ps,i.abs=pc,i.acos=fc,i.acosh=yc,i.add=bc,i.asin=gc,i.asinh=wc,i.atan=Ac,i.atanh=kc,i.atan2=Pc,i.cbrt=hc,i.ceil=Tc,i.clamp=Ic,i.cos=Bc,i.cosh=Sc,i.div=Kc,i.exp=Cc,i.floor=Rc,i.hypot=Lc,i.ln=Oc,i.log=Nc,i.log10=_c,i.log2=Mc,i.max=Vc,i.min=Ec,i.mod=Fc,i.mul=vc,i.pow=Wc,i.random=Dc,i.round=qc,i.sign=Uc,i.sin=Gc,i.sinh=Xc,i.sqrt=zc,i.sub=Yc,i.sum=Qc,i.tan=jc,i.tanh=Hc,i.trunc=Zc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Kc(r,e){return new this(r).div(e)}function Cc(r){return new this(r).exp()}function Rc(r){return X(r=new this(r),r.e+1,3)}function Lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function Ps(r){return r instanceof Vn||r&&r.toStringTag===xs||!1}function Oc(r){return new this(r).ln()}function Nc(r,e){return new this(r).log(e)}function Mc(r){return new this(r).log(2)}function _c(r){return new this(r).log(10)}function Vc(){return Cs(this,arguments,"lt")}function Ec(){return Cs(this,arguments,"gt")}function Fc(r,e){return new this(r).mod(e)}function vc(r,e){return new this(r).mul(e)}function Wc(r,e){return new this(r).pow(e)}function Dc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:et(r,1,Gt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Is);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Oe(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function qc(r){return X(r=new this(r),r.e+1,this.rounding)}function Uc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Gc(r){return new this(r).sin()}function Xc(r){return new this(r).sinh()}function zc(r){return new this(r).sqrt()}function Yc(r,e){return new this(r).sub(e)}function Qc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,X(t,this.precision,this.rounding)}function jc(r){return new this(r).tan()}function Hc(r){return new this(r).tanh()}function Zc(r){return X(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Vn=L.constructor=Os(Si);Rr=new Vn(Rr);Lr=new Vn(Lr);var E=Vn;import{PublicKey as Ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $c}from"@solana/spl-token";import{PublicKey as Ie,SystemProgram as Ns,SYSVAR_RENT_PUBKEY as Jc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Oi=[k({pubkey:$c,isWritable:!1}),k({pubkey:Ns.programId,isWritable:!1}),k({pubkey:Jc,isWritable:!1})];function Ni({publicKey:r,transformSol:e}){let t=Mi(r.toString());if(t instanceof Ie)return e&&t.equals(Ne)?te:t;if(e&&t.toString()===Ne.toBase58())return te;if(typeof t=="string"){if(t===Ie.default.toBase58())return Ie.default;try{return new Ie(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Mi(r){try{return new Ie(r)}catch{return r}}var An=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ms=new Ie("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new Ie("SysvarRent111111111111111111111111111111111"),_i=new Ie("SysvarC1ock11111111111111111111111111111111"),kn=new Ie("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vr=new Ie("Sysvar1nstructions1111111111111111111111111"),_s=Ns.programId,Jp=new Ie("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ef=new Ie("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),tf=new Ie("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),nf=new Ie("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),rf=new Ie("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),of=new Ie("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),sf=new Ie("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),af=new Ie("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),uf=new Ie("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),cf=new Ie("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),lf=new Ie("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new Ie("So11111111111111111111111111111111111111112"),Ne=Ie.default;function Vi(r){return Ni({publicKey:r,transformSol:!0})}import{PublicKey as el}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vs}from"@solana/spl-token";var ht={chainId:101,address:el.default.toBase58(),programId:Vs.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Vs.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 Fi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Ei&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Ei(Me.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Ei.default:Ni({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=Fi;de.WSOL=new Fi(W(N({},Me),{mint:Me.address}));import Fr from"big.js";import rl from"bn.js";import il from"decimal.js-light";import tl from"toformat";var nl=tl,En=nl;var Er=ae("module/fraction"),vi=En(Fr),Fn=En(il),ol={[0]:Fn.ROUND_DOWN,[1]:Fn.ROUND_HALF_UP,[2]:Fn.ROUND_UP},sl={[0]:Fr.roundDown,[1]:Fr.roundHalfUp,[2]:Fr.roundUp},ne=class{constructor(e,t=new rl(1)){this.numerator=U(e),this.denominator=U(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(U(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(U(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<=0&&Er.logWithError(`${e} is not positive.`),Fn.set({precision:e+1,rounding:ol[n]});let i=new Fn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Er.logWithError(`${e} is not an integer.`),e<0&&Er.logWithError(`${e} is negative.`),vi.DP=e,vi.RM=sl[n]||1,new vi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var al=ae("Raydium_price"),Ge=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(Di(n.decimals),Di(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&al.logWithError("mul token not equals");let n=super.mul(t);return new Ge({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var qi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},vn=qi;vn.SOL=new qi(ht);function vf(r,e){return r instanceof de&&e instanceof de?r.equals(e):r instanceof de||e instanceof de?!1:r===e}import ul from"bn.js";var Es=new ne(new ul(100)),ve=class extends ne{toSignificant(e=5,t,n){return this.mul(Es).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Es).toFixed(e,t,n)}};function Ke(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof Pe)try{return Ke(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Yf(r){var n;if(r instanceof ve)return{fr:new ne(r.numerator,r.denominator)};if(r instanceof Ge)return{fr:r.adjusted};if(r instanceof Pe)return{fr:Ke(r.toExact()),decimals:r.token.decimals};if(r instanceof ne)return{fr:r};let e=String(r),t=tn(e);return{fr:new ne(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Qf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Se)}function cl(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gt(Se)}function jf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.lte(Se)}function Hf(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.gte(Se)}function ll(r,e){if(r==null||e==null)return!1;let t=Ke(r),n=Ke(e);return t.sub(n).numerator.eq(Se)}function Zf(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);try{return t.div(n)}catch{return t}}function $f(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.sub(n)}function Jf(r){return r==null?!1:!ll(r,0)}function ey(r,e){return cl(e,r)?e:r}function Ui(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.mul(n)}function ty(r,e){if(r==null||e==null)return;let t=Ke(r),n=Ke(e);return t.add(n)}var Wi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(Wi||{}),Se=new Ae(0),Ds=new Ae(1),fy=new Ae(2),yy=new Ae(3),by=new Ae(5),nn=new Ae(10),gy=new Ae(100),wy=new Ae(1e3),Ay=new Ae(1e4),Fs=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ae)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ae(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Fs||r<=-Fs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ae(String(r))):typeof r=="bigint"?new Ae(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ae(0))}function Di(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Ae)return{numerator:r.toString(),denominator:"1"};if(r instanceof ne)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function vr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function ml(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function dl(r,e=0){return r instanceof Ae?r:new Ae(ml(qs(r).mul(nn.pow(new Ae(String(e))))))}function qs(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Ge)return r.adjusted;if(r instanceof Pe)try{return qs(r.toExact())}catch{return new ne(Se)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function ky(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new Ae(t),new Ae(n).mul(e!=null&&e.alreadyDecimaled?new Ae(100):new Ae(1)))}function Py(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new de({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new Ae(o).mul(nn.pow(new Ae(e.decimals))):o,u=new Ae(s).mul(nn.pow(new Ae(i.decimals)));return new Ge({baseToken:i,denominator:u.toString(),quoteToken:new de(W(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function vs(r){let e=new vn({decimals:6,symbol:"usd",name:"usd"}),t=dl(Ui(r,10**e.decimals));return new rn(e,t)}function hy(r,e){return vs(!e||!r?0:Ui(r,e))}function pl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ne(e,t)}function fl(r){return r instanceof E}function Ws(r){return fl(r)?pl(r):Array.isArray(r)?r.map(e=>Ws(e)):Gi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ws(t)])):r}var bl=ae("Raydium_amount"),Wr=En(yl);function Us(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):bl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Pe=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Us(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Pe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},rn=class extends ne{constructor(t,n,i=!0,o){let s=new Xt(0),a=nn.pow(new Xt(t.decimals));if(i)s=U(n);else{let u=new Xt(0),c=new Xt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Us(n.toString(),t.decimals);u=U(l),c=U(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new rn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new rn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Wr.DP=this.currency.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Gs(r){new Promise(e=>setTimeout(e,r))}function zy(){return new Date().getTime()}function Gi(r){return typeof r=="object"&&r!==null&&![de,Pe,gl,ne,wl,Ge,ve].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Mi(r):Array.isArray(r)?r.map(e=>fe(e)):Gi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as Un,sendAndConfirmTransaction as Qi,Transaction as Gn,TransactionMessage as Xn,VersionedTransaction as zn}from"@solana/web3.js";import Sl from"axios";var Wn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Wn||{}),_={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as zs,ComputeBudgetProgram as Xs,Transaction as qr,TransactionMessage as Al,Keypair as Ys,VersionedTransaction as Qs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),js=1644;function Ur(r){let e=[],t=[];return r.microLamports&&(e.push(Xs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(_.SetComputeUnitPrice)),r.units&&(e.push(Xs.setComputeUnitLimit({units:r.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Gr(r,e){r.length<1&&Nt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Nt.logWithError(`no signers provided:, ${e.toString()}`);let t=new qr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<js}catch{return!1}}async function Hs(r,e,t,n=!0){let i=new zs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new qr;s.feePayer=i;for(let c of e)Gr([...s.instructions,c],[i])||(o.push(s),s=new qr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await Pl(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Nt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Nt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Nt.debug("filteredLog:",u),l.length||Nt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Zs(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Nt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Mt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Nt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(r,e){let[t,n]=zs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Pl(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Nt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Dn({instructions:r,payer:e,signers:t}){return Gr(r,[e,...t])}function qn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ys.generate().publicKey.toString()}){let o=new Al({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Qs(o).serialize()).toString("base64").length<js}catch{return!1}}var Dr={time:0,data:void 0};async function rb(r){if(!Dr.data||(Date.now()-Dr.time)/1e3>30){let e=await r.getEpochInfo();return Dr={time:Date.now(),data:e},e}else return Dr.data}var hl=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function on(r){let e=[];return r.forEach(t=>{t instanceof qr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Ys.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Qs&&(n=hl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as $s,AddressLookupTableAccount as Xr}from"@solana/web3.js";import{PublicKey as Tl}from"@solana/web3.js";import{getTransferFeeConfig as Il,unpackMint as xl}from"@solana/spl-token";var Xi=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=zi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=zi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Xi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&Xi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new Tl(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Xi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>W(N({},i),{accountInfo:n[o]}))}var Bl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Bl||{}),db=1;async function pb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await hn(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=xl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=W(N({},a),{feeConfig:(o=Il(a))!=null?o:void 0})}return n}async function Yi({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new $s(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Xr({key:s,state:Xr.deserialize(o.data)});n[s.toString()]=a,zr[s.toString()]=a}return n}var zr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Xr({key:new $s("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Xr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Yr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Sl.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Ur(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Un.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new Gn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var i;let n=await Pn(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),on([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:await Qi(this.connection,t,this.signers.find(o=>o.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer]),signedTx:t};if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0}),signedTx:o[0]}}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var d;let{sequentially:l,onTxUpdate:m}=c||{},p=await Pn(this.connection);if((d=this.owner)!=null&&d.isKeyPair)return{txIds:await await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=p,await Qi(this.connection,y,a[f].find(b=>b.publicKey.equals(this.owner.publicKey))?a[f]:[...a[f],this.owner.signer])))),signedTxs:s};if(this.signAllTransactions){let y=s.map((b,g)=>(b.recentBlockhash=p,a[g].length&&b.sign(...a[g]),b));on(y);let f=await this.signAllTransactions(y);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),m==null||m([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:g.map(A=>A.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Te(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},zr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Un(d));let c=await Yi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Xn({payerKey:this.feePayer,recentBlockhash:i?Un.default.toBase58():await Pn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new zn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var d;if(on([m]),(d=this.owner)!=null&&d.isKeyPair){this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:!0}),{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:!0}),signedTx:y[0]}}throw new Error("please connect wallet first")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var p;on(s);let{sequentially:l,onTxUpdate:m}=c||{};if((p=this.owner)!=null&&p.isKeyPair){let{lastValidBlockHeight:d,blockhash:y}=await this.connection.getLatestBlockhash();return s.forEach((f,b)=>{a[b].find(g=>g.publicKey.equals(this.owner.publicKey))||f.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async f=>{let b=await this.connection.sendTransaction(f);return await this.connection.confirmTransaction({blockhash:y,lastValidBlockHeight:d,signature:b},"confirmed"),b})),signedTxs:s}}if(this.signAllTransactions){let d=await this.signAllTransactions(s);if(l){let y=0,f=[],b=async()=>{if(!d[y])return;let g=await this.connection.sendTransaction(d[y],{skipPreflight:!0});f.push({txId:g,status:"sent",signedTx:d[y]}),m==null||m([...f]),y++,this.connection.onSignature(g,P=>{let A=f.findIndex(T=>T.txId===g);A>-1&&(f[A].status=P.err?"error":"success"),m==null||m([...f]),P.err||b()},"processed"),this.connection.getSignatureStatus(g)};return b(),{txIds:[],signedTxs:d}}else{let y=[];for(let f=0;f<d.length;f+=1){let b=await this.connection.sendTransaction(d[f],{skipPreflight:!0});y.push(b)}return{txIds:y,signedTxs:d}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Te(c,["computeBudgetConfig"]),i=t?Ur(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],p=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Un(f));if(u.length<12&&Dn({instructions:p,payer:this.feePayer,signers:y})||Dn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Dn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Gn().add(...i.instructions,...u)):s.push(new Gn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:p}=l||{},d=await Pn(this.connection);if(s.forEach(async(f,b)=>{f.recentBlockhash=d,a[b].length&&f.sign(...a[b])}),on(s),(y=this.owner)!=null&&y.isKeyPair)return{txIds:await Promise.all(s.map(async(f,b)=>await Qi(this.connection,f,a[b].find(g=>g.publicKey.equals(this.owner.publicKey))?a[b]:[...a[b],this.owner.signer]))),signedTxs:s};if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendRawTransaction(f[b].serialize(),{skipPreflight:!0});g.push({txId:A,status:"sent",signedTx:f[b]}),p==null||p([...g]),b++,this.connection.onSignature(A,T=>{let h=g.findIndex(I=>I.txId===A);h>-1&&(g[h].status=T.err?"error":"success"),p==null||p([...g]),T.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:g.map(A=>A.txId),signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Te(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},zr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Un(g));let c=await Yi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Ur(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection),p=this.signers.reduce((g,P)=>W(N({},g),{[P.publicKey.toBase58()]:P}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&qn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||qn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let T={};for(let h of[...new Set(a)])s[h]!==void 0&&(T[h]=s[h]);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(h))}else{let h=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(h))}y.push(Array.from(new Set(f.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(h=>p[h]).filter(h=>h!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&qn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}else{let A=new Xn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new zn(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var T;let{sequentially:P,onTxUpdate:A}=g||{};if(d.map(async(h,I)=>{y[I].length&&h.sign(y[I])}),on(d),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:h,blockhash:I}=await this.connection.getLatestBlockhash();return d.forEach((S,x)=>{y[x].find(O=>O.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async S=>{let x=await this.connection.sendTransaction(S);return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:h,signature:x},"confirmed"),x})),signedTxs:d}}if(this.signAllTransactions){let h=await this.signAllTransactions(d);if(P){let I=0,S=[],x=async()=>{if(!h[I])return;let O=await this.connection.sendTransaction(h[I],{skipPreflight:!0});S.push({txId:O,status:"sent",signedTx:h[I]}),A==null||A([...S]),I++,this.connection.onSignature(O,V=>{let F=S.findIndex(Z=>Z.txId===O);F>-1&&(S[F].status=V.err?"error":"success"),A==null||A([...S]),V.err||x()},"processed"),this.connection.getSignatureStatus(O)};return x(),{txIds:[],signedTxs:h}}else{let I=[];for(let S=0;S<h.length;S+=1){let x=await this.connection.sendTransaction(h[S],{skipPreflight:!0});I.push(x)}return{txIds:I,signedTxs:h}}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function zi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Rb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Lb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function Ob(r){return[...new Set(r)]}var Js=r=>typeof r=="number",ea=r=>r?new Date(r):new Date,Kl=r=>ea(r).getTime();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}function na(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 Mb(r,e){let n=Kl(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return ea(n)}import{PublicKey as Re}from"@solana/web3.js";var ji=new Re("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Hi=new Re("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Tn=new Re("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Cl=new Re("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Rl=new Re("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qr=new Re("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zi=new Re("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ll=new Re("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ol=new Re("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Nl=new Re("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ml=new Re("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),_l=new Re("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Vl=new Re("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),El=new Re("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Fl=new Re("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vl=new Re("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wl=new Re("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eb=new Re("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Fb=new Re("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),vb=new Re("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Yn={IDO_PROGRAM_ID_V1:Ml,IDO_PROGRAM_ID_V2:_l,IDO_PROGRAM_ID_V3:Vl,IDO_PROGRAM_ID_V4:El},Wb={AMM_V4:Zi,AMM_STABLE:Ll,CLMM_PROGRAM_ID:Ol,FARM_PROGRAM_ID_V3:ji,FARM_PROGRAM_ID_V5:Hi,FARM_PROGRAM_ID_V6:Tn,OPEN_BOOK_PROGRAM:Rl,SERUM_PROGRAM_ID_V3:Qr,UTIL1216:Cl,Router:Nl,CREATE_CPMM_POOL_PROGRAM:Fl,CREATE_CPMM_POOL_AUTH:vl,CREATE_CPMM_POOL_FEE_ACC:Wl};import{PublicKey as Dl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";function ye(r,e,t){return oe([r.toBuffer(),(t!=null?t:ql).toBuffer(),e.toBuffer()],new Dl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var It=1e4;function Yb(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new Le(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===It){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(It)),new Le(It-i.transferFeeBasisPoints)),u=new Le(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=zt(c.mul(new Le(i.transferFeeBasisPoints)),new Le(It)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=zt(r.mul(new Le(i.transferFeeBasisPoints)),new Le(It)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function he(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=W(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Le(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===It){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(It)),new Le(It-o.transferFeeBasisPoints)),c=new Le(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=zt(l.mul(new Le(o.transferFeeBasisPoints)),new Le(It)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=zt(r.mul(new Le(o.transferFeeBasisPoints)),new Le(It)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function sn(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Le(0))?t.add(new Le(1)):t}var $i=(t=>(t.ALL="all",t.Strict="strict",t))($i||{}),Ul=(n=>(n.All="all",n.Standard="standard",n.Concentrated="concentrated",n))(Ul||{});var Xe={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},pg=N({},Xe);var ra="ray_tab_hash",Ji="ray_req_hash",Gl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(ra);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(ra,r)),r},jr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Te(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ji)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(N({},t),{time:Date.now(),session:Gl()}));try{localStorage.setItem(Ji,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Ji,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return jr(W(N({},t),{logCount:r,removeLastLog:!0}))}};var In=ae("Raydium_Api"),eo=new Map;async function Og(r,e,t=1e3){let n;for(;n==null;)try{In.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){In.error(`Request ${r} failed, retry after ${t} ms`,i),await Gs(t)}return n}var Hr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Xl.create({baseURL:this.urlConfigs.BASE_HOST||Xe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return In.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(In.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:p}=a;return n&&jr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),In.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&jr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),In.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Xe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Xe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return this.api.get(this.urlConfigs.CHAIN_TIME||Xe.CHAIN_TIME)}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Xe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Xe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Xe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Xe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Xe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Xe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>eo.has(s)?(n.push(eo.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Xe.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{eo.set(a.id,a)})),n.concat(o)}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Xe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Xe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Xe.CHECK_AVAILABILITY)).data}};import{merge as Fp}from"lodash";var Zr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",ia="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as yo,TOKEN_PROGRAM_ID as Ht,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as td}from"@solana/spl-token";import{PublicKey as ii,SystemProgram as nd}from"@solana/web3.js";var 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 Yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,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 jm,createCloseAccountInstruction as Hm,createTransferInstruction as Zm,TOKEN_PROGRAM_ID as xn}from"@solana/spl-token";import{PublicKey as $m,SystemProgram as Jm}from"@solana/web3.js";import ed from"bn.js";import{PublicKey as ka,Keypair as Xm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import Ym from"bn.js";import{PublicKey as Em}from"@solana/web3.js";import ma,{isBN as da}from"bn.js";import{bits as zl,BitStructure as Yl,blob as Ql,Blob as jl,cstr as Hl,f32 as Zl,f32be as $l,f64 as Jl,f64be as em,greedy as tm,Layout as nm,ns64 as rm,ns64be as im,nu64 as om,nu64be as sm,offset as am,s16 as um,s16be as cm,s24 as lm,s24be as mm,s32 as dm,s32be as pm,s40 as fm,s40be as ym,s48 as bm,s48be as gm,s8 as wm,seq as Am,struct as Xg,Structure as km,u16 as Pm,u16be as hm,u24 as Tm,u24be as Im,u32 as xm,u32be as Bm,u40 as Sm,u40be as Km,u48 as Cm,u48be as Rm,u8 as Lm,UInt as Om,union as Nm,Union as Mm,unionLayoutDiscriminator as _m,utf8 as Vm}from"@solana/buffer-layout";var Qn=nm,oa=km,sa=Mm,zg=Yl,no=Om,aa=jl,Yg=tm,$r=Lm,xt=Pm,Qg=Tm,jn=xm,jg=Sm,Hg=Cm,ua=om,Zg=hm,$g=Im,Jg=Bm,ew=Km,tw=Rm,nw=sm,rw=wm,iw=um,ow=lm,We=dm,sw=fm,aw=bm,uw=rm,cw=cm,lw=mm,mw=pm,dw=ym,pw=gm,fw=im,yw=Zl,bw=$l,gw=Jl,ww=em;var ca=Am,la=Nm,Aw=_m,pe=Ql,kw=Hl,Pw=Vm,ro=zl,io=am;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new ma(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 ma(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jr=class extends Qn{constructor(t){super(8,t);this._lower=ro(jn(),!1),this._upper=ro(jn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function M(r){return new no(1,r)}function ze(r){return new no(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function pa(r){return new an(1,!0,r)}function ei(r){return new an(8,!0,r)}function fa(r){return new an(16,!0,r)}var _t=class extends Qn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function B(r){return new _t(pe(32),e=>new Em(e),e=>e.toBuffer(),r)}var oo=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=$r()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Bw(r,e){return new oo(r,e)}function De(r){return new _t($r(),Fm,vm,r)}function Fm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vm(r){return r?1:0}function Sw(r,e){let t=jn("length"),n=R([t,q(r,io(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Kw(r,e,t){let n=R([w("tag"),e.replicate("data")]);function i({tag:o,data:s}){if(!o.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+o.toString("hex"));return s}return new _t(n,i,o=>({tag:r,data:o}),t)}function Wm(r){let e=jn("length"),t=R([e,pe(io(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Cw(r){return new _t(Wm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Rw(r,e){let t=la($r(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Lw(r,e,t){let n=R([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var so=class extends oa{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new so(r,e,t)}var ao=class extends sa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Ow(r,e,t){return new ao(r,e,t)}var uo=class extends aa{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Nw(r){return new uo(r)}function q(r,e,t){let n,i=typeof e=="number"?e:da(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=da(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return ca(r,i,t)}var Yt=R([B("mint"),B("owner"),w("amount"),ze("delegateOption"),B("delegate"),M("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),B("closeAuthority")]);function Dm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function co(r,...e){if(!Dm(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function lo(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 ya(r,e){co(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ni=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),bt=(r,e)=>r<<32-e|r>>>e;var Ww=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function mo(r){return typeof r=="string"&&(r=qm(r)),co(r),r}var ti=class{clone(){return this._cloneInto()}},Dw={}.toString;function ba(r){let e=n=>r().update(mo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Um(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var ga=(r,e,t)=>r&e^~r&t,wa=(r,e,t)=>r&e^r&t^e&t,ri=class extends ti{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){lo(this);let{view:t,buffer:n,blockLen:i}=this;e=mo(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ni(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){lo(this),ya(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Um(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=ni(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Gm=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jt=new Uint32Array(64),po=class extends ri{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)jt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=jt[m-15],d=jt[m-2],y=bt(p,7)^bt(p,18)^p>>>3,f=bt(d,17)^bt(d,19)^d>>>10;jt[m]=f+jt[m-7]+y+jt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=bt(a,6)^bt(a,11)^bt(a,25),d=l+p+ga(a,u,c)+Gm[m]+jt[m]|0,f=(bt(n,2)^bt(n,13)^bt(n,22))+wa(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){jt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Aa=ba(()=>new po);var iA=ae("Raydium_Util");function Pa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:ye(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ka.default,amount:new Ym(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=zm}){let t=Xm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qm(r,t,e),seed:t}}function Qm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Aa(n);return new ka(i)}function fo(r){let{mint:e,tokenAccount:t,owner:n,programId:i=xn}=r;return jm(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=xn}=r;return Hm(e,t,i,n,o)}async function Bt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Yt.span,n),u=U(t).add(new ed(a)),c=Ye({fromPublicKey:i,programId:xn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Jm.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:xn}),fo({mint:new $m(Me.address),tokenAccount:c.publicKey,owner:o,programId:xn})],instructionTypes:[_.CreateAccount,_.InitAccount],endInstructionTypes:s?[]:[_.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Hn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=xn}){return Zm(r,e,t,BigInt(String(n)),i,o)}var Zn=class extends 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=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Ht},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:td},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Pa({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Ht,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new ii(t.tokenProgram||Ht),m=this.getAssociatedTokenAccount(n,new ii(l)),p=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=yo(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(_.CreateATA);else if(!(P.owner.equals(l)&&Bn.decode(P.data).mint.equals(n)&&Bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(_.CreateATA);if(n.equals(te)&&i.amount){let P=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...P.instructions||[]),d.endInstructions.push(...P.endInstructions||[]),d.instructionTypes.push(...P.instructionTypes||[]),d.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(d.instructions.push(Hn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Ht})),d.instructionTypes.push(_.TransferAmount))}return u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(_.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=Ye({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),A=nd.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Bn.span,programId:l});return d.instructions.push(A,fo({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(_.CreateAccount),d.instructionTypes.push(_.InitAccount),u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(_.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=Ht,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await yo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[_.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[_.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Ht,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new ii(te).equals(o)){let d=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=yo(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Ht)&&Bn.decode(f.data).mint.equals(o)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[_.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Ht,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ii(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Te(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=Te(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Td}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as Id}from"@solana/web3.js";import{PublicKey as Ka}from"@solana/web3.js";var bo=R([M("instruction")]),go=R([M("instruction")]),rd=R([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),B("rewardVault"),B("rewardMint"),B("rewardSender"),w("rewardType"),q(w(),15,"padding")]),id=R([w("state"),w("nonce"),B("lpVault"),B("rewardVault"),B(),B(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),od=R([w("state"),w("nonce"),B("lpVault"),B("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),M("option"),B("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),B()]),sd=R([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),B("lpMint"),B("lpVault"),q(rd,5,"rewardInfos"),B("creator"),B(),q(w(),32,"padding")]),ha=new Proxy(id,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ta=new Proxy(od,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),$n=new Proxy(sd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return W(N({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ad=R([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),wo=R([M("instruction"),w("nonce"),q(ad,5,"rewardTimeInfo")]),Ao=R([M("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),ko=R([M("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),VA=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Jn=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),EA=R([w("state"),B("id"),B("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Ia=R([w("state"),B("id"),B("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),xa=R([w(),w("state"),B("id"),B("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),$e=R([M("instruction"),w("amount")]),ud=R([B("mint"),B("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),pa("digitShift"),q(M(),7,"reserved1"),q(w(),7,"reserved2")]),Ba=R([pe(8),B("governanceProgramId"),B("realm"),B("realmGoverningTokenMint"),B("realmAuthority"),q(M(),32,"reserved1"),q(ud,4,"votingMints"),ei("timeOffset"),M("bump"),q(M(),7,"reserved2"),q(w(),11,"reserved3")]),cd=R([ei("startTime"),ei("endTime"),M("kind"),q(M(),15,"reserved")]),ld=R([q(cd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),De("isUsed"),De("allowClawback"),M("votingMintConfigIdx"),q(M(),29,"reserved")]),Sa=R([pe(8),B("voterAuthority"),B("registrar"),q(ld,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),q(M(),94,"reserved")]);var XA=ae("Raydium_farm_config"),Ca=new Ka("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ra=new Ka("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),La={3:ha,5:Ta,6:$n},Oa={3:Jn,5:Ia,6:xa},Po=r=>[3,5,6].indexOf(r)!==-1,ho=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},Zt={"Standard SPL":0,"Option tokens":1},gt={[ji.toString()]:3,[Hi.toString()]:5,[Tn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as pd,SYSVAR_CLOCK_PUBKEY as nr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as fd,TOKEN_PROGRAM_ID as st,ASSOCIATED_TOKEN_PROGRAM_ID as yd}from"@solana/spl-token";import si from"bn.js";function To(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function Io(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function xo(r,e){return oe([e.toBuffer()],r)}function Bo(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function So(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Ko(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var er=ae("Raydium.farm.util");function tr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function rt({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var Na=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Ma(r){return{isSet:new nt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Co(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function oi(r){let e=Oa[r];return e||er.logWithError("invalid version",r),e}function md(r){let e=La[r];return e||er.logWithError("invalid version",r),e}function dd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new nt(t)))return r;let i=new nt(t).sub(r.lastSlot);r.lastSlot=new nt(t);for(let o of r.rewardInfos){if(e.amount.eq(new nt(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new nt(10).pow(new nt(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new nt(0)))continue;let o=nt.min(new nt(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new nt(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function uk({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new nt(10),u=[];for(let p of e){let d=fe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:rt({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await hn(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=md(d);(!b||!b.data||b.data.length!==P.span)&&er.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==Yt.span)&&er.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=oi(d);b&&b.data&&(b.data.length!==P.span&&er.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=dd(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new nt(9)):a.pow(new nt(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=W(N({},c[p].wrapped),{pendingRewards:b})}return c}function ck(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ta(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>na(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 Ro(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ba.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=Sa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var bd=ae("Raydium_farm_instruction"),rr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function _a(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||bd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(bo.span);bo.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:pd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:_.FarmV3CreateLedger}}function Va(r){var n;let e=Buffer.alloc(wo.span);wo.encode({instruction:0,nonce:new si(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Oi,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:Ne}),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 Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6Create}}function Ea(r){let e=Buffer.alloc(go.span);go.encode({instruction:5},e);let t=[k({pubkey:st,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 Ve({programId:r.programId,keys:t,data:e}),instructionType:_.FarmV6CreatorWithdraw}}function gd(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=R([M("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...rr.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function wd(r,e,t,n){let i=R([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...rr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function Ad(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([M("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...rr.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function kd(r,e,t,n,i,o){let s=R([M("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Ve({keys:a,programId:r,data:u})}function Pd(r,e,t,n,i,o,s,a){let u=R([M("voterBump"),M("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Vr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...rr.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function hd(r,e,t,n,i,o,s,a,u,c,l,m){let p=R([M("depositEntryIndex"),M("kind"),M("option"),w("startTs"),ze("periods"),De("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:un.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:yd,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...rr.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:d,programId:r,data:f})}async function Bk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=To(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new si(0)))throw Error("user do not has new stake amount");let y=Io(e,a).publicKey,f=xo(e,a).publicKey,{publicKey:b,nonce:g}=Bo(n,c,s),P=ye(b,y,u).publicKey,{publicKey:A,nonce:T}=So(n,c,s),h=Ko(t,i,o,s).publicKey,I=[],S=ye(s,y,u).publicKey;if(await r.getAccountInfo(S)===null&&I.push(fd(s,S,s,y)),await r.getAccountInfo(b)===null){let Z=kd(t,i,s,o,s,h);I.push(Z,Pd(n,c,b,A,s,s,g,T))}let{index:V,isInit:F}=await Ro(r,c,b,y);return F||I.push(hd(n,c,b,P,s,s,y,V,0,void 0,0,!1)),I.push(gd(n,c,b,P,S,s,l,a,y,f,e,V,d),wd(n,c,b,A)),I}async function Sk({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=To(n,i,o).publicKey,l=rt({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Jn.decode(m.data);if(p.voteLockedBalance.eq(new si(0)))throw Error("user has vote locked balance = 0");let d=Io(e,a).publicKey,y=xo(e,a).publicKey,{publicKey:f}=Bo(n,c,s),b=ye(f,d,u).publicKey,{publicKey:g}=So(n,c,s),P=Ko(t,i,o,s).publicKey,A=[],{index:T,isInit:h}=await Ro(r,c,f,d);if(!h)throw Error("deposit entry index check error");return A.push(Ad(n,c,f,s,P,g,b,ye(s,d,u).publicKey,l,a,d,y,e,T,p.voteLockedBalance)),A}function Lo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(Ao.span);Ao.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[k({pubkey:st,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 Ve({programId:n.programId,keys:s,data:o})}function Oo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(ko.span);ko.encode({instruction:4,isSet:new si(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Oi,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 Ve({programId:t.programId,keys:s,data:o})}function Kk(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new ie(e.programId),new ie(e.id)],p=rt({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc($e.span);$e.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:st,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:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new ie(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new ie(t.rewardInfos[0].vault)}),k({pubkey:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new 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:o[f]}));return new Ve({programId:l,keys:y,data:d})}function ir(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:2,amount:U(s)},l);let m=[k({pubkey:st,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}function or(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:12,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function sr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Fa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc($e.span);$e.encode({instruction:10,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function va(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new ie(e.programId),new ie(e.id)],l=rt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc($e.span);$e.encode({instruction:11,amount:U(s)},m);let p=[k({pubkey:c}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,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:nr,isWritable:!1}),k({pubkey:st,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new ie(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new ie(e.programId),new ie(e.id)],c=rt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc($e.span);$e.encode({instruction:1,amount:U(s)},l);let m=[k({pubkey:st,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:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new ie(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Ve({programId:a,keys:m,data:l})}var ar=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Co(W(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Tn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:Ca,lockVault:Ra},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ye({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption($n.span);u.addInstruction({instructions:[Id.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:$n.span,programId:a.programId})]});let{publicKey:p,nonce:d}=Na({programId:new ke(a.programId),poolId:l.publicKey}),y=tr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(Zt[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(Ma(T));let{rewardPubKey:h,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:T,payer:c});I&&u.addInstruction(I),h||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let S=T.mint.equals(Ne)?new ke(Me.address):T.mint;b.push({rewardMint:S,rewardVault:tr({programId:a.programId,poolId:l.publicKey,mint:S,type:"rewardVault"}),userRewardToken:h})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:A}=Va({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[P],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new ke(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ne,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[Lo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[_.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ne)?new ke(Me.address):m.mint,d=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ne,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=Lo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[_.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=gt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new ke(Me.address):i.mint,m=tr({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[Oo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[_.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=gt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new ke(Me.address):l.mint,p=tr({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Oo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:W(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[_.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:p}=n,d=gt[p];Po(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=rt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let D of this.scope.account.tokenAccounts)if(a){let j=ye(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&j.equals(D.publicKey)&&(A[D.mint.toString()]=D.publicKey)}else A[D.mint.toString()]=D.publicKey;let T=b.lpMint,h=A[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let D of m){let j=s&&D.mint.address===te.toString(),ee=A[D.mint.address];if(!ee){let{account:se,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D.mint.programId,mint:new ke(D.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=se,dt&&P.addInstruction(dt)}A[D.mint.address]=ee,I.push(ee)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=oi(d).decode(x.data)),n.programId!==Tn.toString()&&!S){let{instruction:D,instructionType:j}=_a({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[D],instructionTypes:[j]})}let O=ho({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});O&&this.logAndCreateError(O);let V={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:h,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(D=>new ke(D))},F=d===6?Wa(V):d===5?va(V):Fa(V),Z={3:_.FarmV3Deposit,5:_.FarmV5Deposit,6:_.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[Z[d]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=gt[n.programId];Po(d)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let O of this.scope.account.tokenAccounts)if(u){let V=ye(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&V.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let O=rt({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:d}),V=await this.scope.connection.getAccountInfo(O);V||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:V}),oi(d).decode(V.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=O,V&&f.addInstruction(V)}b[g.toString()]=A;let T=[];for(let O of p){let V=s&&O.mint.address===te.toString(),F=b[O.mint.address];if(!F){let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:O.mint.programId,mint:new ke(O.mint.address),notUseTokenAccount:V,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=Z,D&&f.addInstruction(D)}b[O.mint.address]=F,T.push(F)}let h=ho({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new ke(O))},S=d===6?ir(I):d===5?or(I):sr(I),x={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=gt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new ke(Me.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ne,c=this.createTxBuilder(),l;if(t.equals(Ne)){let y=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Co(W(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[Td(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[_.CreateATA]})):l=y}let{instruction:m,instructionType:p}=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:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=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 d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>W(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=gt[f],T=b.address,h=n&&T===te.toString(),I=m[T];if(!I){let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(T),notUseTokenAccount:h,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:o,checkCreateATAOwner:s});I=Z,D&&l.addInstruction(D)}m[T.toString()]=I;let S=[];for(let Z of g){let D=n&&Z.mint.address===te.toString(),j=m[Z.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Z.mint.programId,mint:new ke(Z.mint.address),notUseTokenAccount:D,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[Z.mint.address]=j,S.push(j)}let x=d[P],O={amount:Se,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(Z=>new ke(Z))},V=A===6?ir(O):A===5?or(O):sr(O),F={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};l.addInstruction({instructions:[V],instructionTypes:[F[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as it}from"@solana/web3.js";import{NATIVE_MINT as Iu,TOKEN_PROGRAM_ID as di}from"@solana/spl-token";var Zk=R([ze("mintAuthorityOption"),B("mintAuthority"),w("supply"),M("decimals"),M("isInitialized"),ze("freezeAuthorityOption"),B("freezeAuthority")]);import{PublicKey as xd}from"@solana/web3.js";import{MintLayout as Da,TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";var oP=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new xd(e));return!t||t.data.length!==Da.span?void 0:Da.decode(t.data)},sP=({mint:r,decimals:e,programId:t=Bd,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},qa=r=>new de({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),aP=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Te(o,["amount","isRaw","name"]);return new Pe(new de({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function uP(r){return r.address===ht.address?Me:r}function cP(r){return r.address===Me.address?ht:r}import{TOKEN_PROGRAM_ID as ur,ASSOCIATED_TOKEN_PROGRAM_ID as Dd}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Et,SystemProgram as vo,SYSVAR_RENT_PUBKEY as qd}from"@solana/web3.js";var No=R([M("instruction"),w("amountIn"),w("minAmountOut")]),Mo=R([M("instruction"),w("maxAmountIn"),w("amountOut")]),PP=R([M("instruction"),M("nonce")]),_o=R([M("instruction"),M("nonce"),w("startTime")]),Sd=R([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("withdrawQueue"),B("lpVault"),B("owner"),w("lpReserve"),q(w(),3,"padding")]),Kd=R([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),B("baseVault"),B("quoteVault"),B("baseMint"),B("quoteMint"),B("lpMint"),B("modelDataAccount"),B("openOrders"),B("marketId"),B("marketProgramId"),B("targetOrders"),B("owner"),q(w(),64,"padding")]),Vo=R([M("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Eo=R([M("instruction"),w("amountIn")]),hP={4:Sd,5:Kd},Ua=R([w("fee")]);import{PublicKey as Cd}from"@solana/web3.js";var Kn=new Cd("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Rd=R([w("x"),w("y"),w("price")]),Ld=R([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Rd,ln,"DataElement")]);function Od(r,e){return[0,ln-2]}function Nd(r){return[0,ln-2]}function Md(r){return[0,ln-2]}function _d(r,e,t){let[n,i]=Od(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=ln-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Fo(r,e,t){let[n,i,o]=_d(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function cn(r,e,t){return e*r.multiplier/t}function Ga(r,e,t){return e*t/r.multiplier}function Vd(r,e){let[t,n]=Nd(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>ln-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Ed(r,e){let[t,n]=Md(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=ln-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=Vd(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Fd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Ed(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function vd(r,e){let t=Xa(r,e,0,!1);return t[3]?t[0]:0}function za(r,e,t,n){let i=Fo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,p]=Xa(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ga(r,d,i)}}function Ya(r,e,t,n){let i=Fo(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,p]=Fd(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ga(r,d,i)}}function Wd(r){let e=Ld.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Qa(r,e,t,n){let i=vd(r,cn(r,e,Fo(r,e,t)))/r.multiplier;return n?i:1/i}var Sn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(Kn);e&&(this._layoutData=Wd(e==null?void 0:e.data))}}};var ja=ae("Raydium_liquidity_instruction");function Ha(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Vo.span);Vo.encode({instruction:3,baseAmountIn:U(i),quoteAmountIn:U(o),fixedSide:s==="base"?Se:Ds},a);let u=[k({pubkey:ur,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:Kn})),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 Et({programId:new be(e.programId),keys:u,data:a})}function Wo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=fe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Eo.span);Eo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:ur,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return s===5?u.push(k({pubkey:Kn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Et({programId:o.programId,keys:u,data:a})}return new Et({programId:o.programId,keys:[]})}function Za({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:T,pcAmount:h,ammConfigId:I,feeDestinationId:S}){let x=R([M("instruction"),M("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),O=[{pubkey:ur,isSigner:!1,isWritable:!1},{pubkey:Dd,isSigner:!1,isWritable:!1},{pubkey:vo.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],V=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:T,pcAmount:h},V),{instruction:new Et({keys:O,programId:r,data:V}),instructionType:_.AmmV4CreatePool}}function FP(r){let e=R([M("instruction"),M("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 Et({programId:new be(r.programId),keys:n,data:t})}function Ud({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=fe(r),s=Buffer.alloc(No.span);No.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:ur,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders})];return i===4&&a.push(k({pubkey:o.targetOrders})),a.push(k({pubkey:o.vault.A}),k({pubkey:o.vault.B})),i===5&&a.push(k({pubkey:Kn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Et({programId:o.programId,keys:a,data:s})}function Gd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=fe(r),s=Buffer.alloc(Mo.span);Mo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:vo.programId,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return i===5&&a.push(k({pubkey:Kn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Et({programId:o.programId,keys:a,data:s})}function ai(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ud(W(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Gd(W(N({},a),{maxAmountIn:i,amountOut:o}),t);ja.logWithError("invalid params","params",r)}throw ja.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function vP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(_o.span);_o.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=fe(r),o=[k({pubkey:ur,isWritable:!1}),k({pubkey:vo.programId,isWritable:!1}),k({pubkey:qd,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 Et({programId:i.programId,keys:o,data:n})}function $a({poolKeys:r}){let e=R([M("instruction"),M("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[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 Et({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as qe,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as wt,SystemProgram as Cn,Keypair as Qo}from"@solana/web3.js";import gu from"bn.js";import tp from"bn.js";function Ja(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function DP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function qP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ui(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Do(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function qo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function cr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function eu(r,e){return cr(r,e)?null:Do(r,e)}function tu(r,e){return cr(r,e)?null:qo(r,e)}var Xd=Buffer.from("amm_config","utf8"),zd=Buffer.from("pool","utf8"),Yd=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),nu=Buffer.from("position","utf8"),jd=Buffer.from("tick_array","utf8"),Hd=Buffer.from("operation","utf8"),Zd=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zP(r,e){return oe([Xd,Ja(e)],r)}function ru(r,e,t,n){return oe([zd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Uo(r,e,t){return oe([Yd,e.toBuffer(),t.toBuffer()],r)}function iu(r,e,t){return oe([Qd,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return oe([jd,e.toBuffer(),ui(t)],r)}function mn(r,e,t,n){return oe([nu,e.toBuffer(),ui(t),ui(n)],r)}function St(r,e){return oe([nu,e.toBuffer()],r)}function ci(r){return oe([Buffer.from("metadata","utf8"),kn.toBuffer(),r.toBuffer()],kn)}function lr(r){return oe([Hd],r)}function ct(r,e){return oe([Zd,e.toBuffer()],r)}import Kt from"bn.js";var me=new Kt(0),at=new Kt(1),Ft=new Kt(-1),ut=new Kt(1).shln(64),li=new Kt(1).shln(128),Go=ut.sub(at),mr=64,ou=li.subn(1),Qe=-443636,Je=-Qe,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),su=16,au="59543866431248",uu="184467440737095516",cu="15793534762490258745",mi=new Kt(10).pow(new Kt(6)),$d=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))($d||{}),jP={[500]:10,[3e3]:60,[1e4]:200},HP={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:[]},ZP=new Kt("18446744073700000000");var Jd=15,le=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=G.getTickArrayStartIndexByTick(i,o),l=G.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Jd/2));for(let d=0;d<l.length;d++){let{publicKey:y}=ge(t,n,l[d]);u.push(y)}let m=(await Tt(e,u)).map(d=>d!==null?dr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=W(N({},y),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=G.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/le.tickCount(t)),a=n?G.searchLowBitFromStart(i,o,s-1,1,t):G.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=_e-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<_e;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ge(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<_e;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;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(G.checkIsOutOfBoundary(e)){if(e>Je)return!1;let n=G.getTickArrayStartIndexByTick(Qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return _e*e}};import re from"bn.js";import{PublicKey as $t}from"@solana/web3.js";import Ce from"bn.js";var Xo=14,vt=class{static maxTickInTickarrayBitmap(e){return e*_e*dn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!le.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-le.tickCount(n):t+le.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*_e,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=eu(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=tu(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-le.tickCount(n)}}}},pr=class{static getBitmapOffset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(Je<=t)throw Error(`extensionTickBoundary check error: ${Je}, ${t}`);if(n<=Qe)throw Error(`extensionTickBoundary check error: ${n}, ${Qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:G.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=le.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=G.mergeTickArrayBitmap(e).shln(dn-1-a),c=cr(512,u)?null:Do(512,u);if(c!==null){let l=t-c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=G.mergeTickArrayBitmap(e).shrn(a),c=cr(512,u)?null:qo(512,u);if(c!==null){let l=t+c*le.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-le.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/le.tickCount(t));return e<0&&n!=0&&(i=dn-i),i}};import Lt from"bn.js";var fr=class{static getfeeGrowthInside(e,t,n){let i=new Lt(0),o=new Lt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Lt(0),a=new Lt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ut),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ut),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,ut),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Lt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Lt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=H.getSqrtPriceX64FromTick(t.tickLower),c=H.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[he(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[he(new Lt(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),he(new Lt(new E(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as mu}from"@solana/spl-token";var je=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(Ft),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=ge(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=pn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ft),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=je.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?pr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ge(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=pr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Qe||t>Je)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=W(N({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $t(p)});if(d.tokenMint.equals($t.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Ce(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),P=$.mulDivFloor(f,d.emissionsPerSecondX64,ut),A=d.rewardTotalEmissioned.add(P);s.push(W(N({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=G.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>Je&&(t=le.getArrayStartIndex(Je,e)+le.tickCount(e)),n<Qe&&(n=le.getArrayStartIndex(Qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!le.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/le.tickCount(t)*dn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=fu.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=G.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=G.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=ge(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=dr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(St(d,p).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=pu.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=G._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=G._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:T}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:T,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>W(N({},x),{pendingReward:new Ce(0)})),leverage:h,tokenFeeAmountA:new Ce(0),tokenFeeAmountB:new Ce(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),S=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=S}if(o){let p=Object.values(m),d=await Tt(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=dr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,T=y[m[P].toString()],h=y[m[A].toString()],I=T.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=h.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:O}=await fr.GetPositionFees(f,g,I,S),V=await fr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=x.gte(new Ce(0))?x:new Ce(0),g.tokenFeeAmountB=O.gte(new Ce(0))?O:new Ce(0);for(let F=0;F<V.length;F++)g.rewardInfos[F].pendingReward=V[F].gte(new Ce(0))?V[F]:new Ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var V;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new E(0))?u=c?Ct.add(new Ce(1)):Rt.sub(new Ce(1)):u=H.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=je.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((V=p.fee)!=null?V:me),u),g=he(d,m,i,!1),P=H.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new E(1).div(P),T=d.mul(new Ce(Math.floor((1-s)*1e10))).div(new Ce(1e10)),h=he(T,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),S=new E(A).sub(I).abs(),x=I,O=new ve(new E(S).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:h,expirationTime:sn(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:O,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new de(W(N({},u),{mint:u.address,isToken2022:u.programId===mu.toBase58()})),new de(W(N({},c),{mint:c.address,isToken2022:c.programId===mu.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:T}=await je.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),h=W(N({},p),{amount:new Pe(l,p.amount),fee:p.fee===void 0?void 0:new Pe(l,p.fee)}),I=W(N({},d),{amount:new Pe(m,d.amount),fee:d.fee===void 0?void 0:new Pe(m,d.fee)}),S=W(N({},y),{amount:new Pe(m,y.amount),fee:y.fee===void 0?void 0:new Pe(m,y.fee)}),x=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),O=new Ge({baseToken:l,denominator:new Ce(10).pow(new Ce(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),V=new Pe(l,A);return{realAmountIn:h,amountOut:I,minAmountOut:S,expirationTime:f,currentPrice:x,executionPrice:O,priceImpact:P,fee:V,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=G.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=G.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[Vi(e.mintA.address).toString()],p=i[Vi(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=H.getSqrtPriceX64FromTick(s),g=H.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(A.toString()).div(new E(10).pow(y)).mul(p.value)),S=new E(T.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(h.toString()).div(new E(10).pow(y)).mul(p.value)),x=S.div(I.add(S)).div(S),V=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,Z=e.rewardDefaultInfos.map(D=>{var se,dt;let j=D.mint.decimals,ee=i[D.mint.address];return u<((se=D.startTime)!=null?se:0)||u>((dt=D.endTime)!=null?dt:0)||!D.perSecond||!ee||j===void 0?0:new E(ee.value).mul(new E(D.perSecond).mul(F)).div(new E(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:V,rewardsApr:Z,apr:V+Z.reduce((D,j)=>D+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=H.getSqrtPriceX64FromTick(n),p=H.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=he(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Ce(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,p,f,!a):new Ce(0);else if(l.lte(p)){let A=ce.getLiquidityFromTokenAmountA(l,p,f,!a),T=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:T}else b=t?new Ce(0):ce.getLiquidityFromTokenAmountB(m,p,f);return je.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=H.getSqrtPriceX64FromTick(n),c=H.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(H.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[he(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),he(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[he(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),he(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:sn(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new $t(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=du.decode(i.data),s=ct(e,new $t(n.id)).publicKey,a=await je.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return W(N({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:W(N({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function Vh({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,T,h,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=H.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=H.getSqrtPriceX64FromTick(c),f=H.getSqrtPriceX64FromTick(l),[b,g]=[he(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),he(p,(T=r.mintB.extensions)==null?void 0:T.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((h=b.fee)!=null?h:me),g.amount.sub((I=g.fee)!=null?I:me));return ce.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(at)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(at)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(li).sub(t).mod(li)}};function Ee(r,e){return zo(r.mul(e),64,256)}function ep(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function zo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var H=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(mr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,at,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(mr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,at,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Qe||e>Je)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new re("37481735321082"))),e>0&&(n=ou.div(n)),n}static getTickFromPrice(e,t,n){return H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Rt)||e.lt(Ct))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),i=ep(n,32,128),o=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new re(0))&&s<su;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new re(au)),p=zo(m.sub(new re(uu)),64,128).toNumber(),d=zo(m.add(new re(cu)),64,128).toNumber();return p==d?p:H.getSqrtPriceX64FromTick(d).lte(e)?d:p}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=H.getTickFromSqrtPriceX64(H.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=fn.getTickWithPriceAndTickspacing(e,t,n,i),s=H.getSqrtPriceX64FromTick(o);return H.sqrtPriceX64ToPrice(s,n,i)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(mr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),at,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),ut):$.mulDivFloor(n,t.sub(e),ut)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,at,Go):a.shrn(mr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Go,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,i,!1),a=ce.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,i,o),a=ce.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new re(new E(u.toString()).mul(l).toFixed(0)),p=new re(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,T,h;let c=H.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=H.getSqrtPriceX64FromTick(t),m=H.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[he(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),he(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[he(new re(new E(d.amountA.toString()).mul(p).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),he(new re(new E(d.amountB.toString()).mul(p).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:sn(y.expirationTime,f.expirationTime)}}},pn=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(at):Rt.sub(at)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+le.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new re(0)},g=d,P=n[d],A=0,T=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,T),S=I||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let V=je.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!V.isExist)throw Error("swapCompute LiquidityInsufficient");g=V.nextStartIndex;let{publicKey:F}=ge(e,t,g);x=F,P=n[g],S=G.firstInitializedTick(P,s)}h.tickNext=S.tick,h.initialized=S.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),h.tickNext<Qe?h.tickNext=Qe:h.tickNext>Je&&(h.tickNext=Je),h.sqrtPriceNextX64=H.getSqrtPriceX64FromTick(h.tickNext);let O;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?O=y:O=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(h.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),b.amountCalculated=b.amountCalculated.sub(h.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(h.amountOut),b.amountCalculated=b.amountCalculated.add(h.amountIn.add(h.feeAmount))),b.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let V=S.liquidityNet;s&&(V=V.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,V)}T=h.tickNext!=b.tick&&!s&&P.startTickIndex===h.tickNext,b.tick=s?h.tickNext-1:h.tickNext}else if(b.sqrtPriceX64!=h.sqrtPriceStartX64){let V=H.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=V!=b.tick&&!s&&P.startTickIndex===V,b.tick=V}++A}try{let{nextStartIndex:h,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==h&&(b.accounts.push(ge(e,t,h).publicKey),d=h)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new 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=$.mulDivFloor(i,mi.sub(new re(o.toString())),mi);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ft).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=H.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ft),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(Ft))&&(s.amountOut=i.mul(Ft)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new re(o),mi.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=ge(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new tp(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=ge(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Qe||e>Je}static nextInitTick(e,t,n,i,o){if(le.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<_e;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=_e-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<_e;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=H.getSqrtPriceX64FromTick(t),o=H.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=H.getSqrtPriceX64FromTick(o),a=H.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var sT=R([pe(8),M("bump"),xt("index"),B(""),ze("protocolFeeRate"),ze("tradeFeeRate"),xt("tickSpacing"),q(w(),8,"")]),np=R([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Yo=R([pe(8),De("initialized"),B("poolId"),q(np,1e3,"observations"),q(z(),5,"")]),rp=R([M("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),B("tokenMint"),B("tokenVault"),B("creator"),z("rewardGrowthGlobalX64")]),du=R([pe(8),M("bump"),B("ammConfig"),B("creator"),B("mintA"),B("mintB"),B("vaultA"),B("vaultB"),B("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),xt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),We("tickCurrent"),xt("observationIndex"),xt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),M("status"),q(M(),7,""),q(rp,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),ip=R([z("growthInsideLastX64"),w("rewardAmountOwed")]),pu=R([pe(8),M("bump"),B("nftMint"),B("poolId"),We("tickLower"),We("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ip,3,"rewardInfos"),q(w(),8,"")]),aT=R([pe(8),M("bump"),B("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),op=R([We("tick"),fa("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),dr=R([pe(8),B("poolId"),We("startTickIndex"),q(op,_e,"ticks"),M("initializedTickCount"),q(M(),115,"")]),yu=R([pe(329),q(B(),100,"whitelistMints")]),fu=R([pe(8),B("poolId"),q(q(w(),8),Xo,"positiveTickArrayBitmap"),q(q(w(),8),Xo,"negativeTickArrayBitmap")]);var wu=ae("Raydium_Clmm"),At={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Be=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...At.createPool,...g]);return new wt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ye({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[Cn.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Yo.span),space:Yo.span,programId:n})],{publicKey:f}=ru(n,a,p,d),{publicKey:b}=Uo(n,f,p),{publicKey:g}=Uo(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||qe),d,g,new v(s.programId||qe),ct(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),Z=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Z],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:I,amountMaxA:S,amountMaxB:x,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...At.openPosition,...j]);return new wt({keys:D,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Qo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:T}=ci(y),{publicKey:h}=St(p,y),{publicKey:I}=mn(p,d,i,o),S=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Qo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,qe),{publicKey:T}=ci(y),{publicKey:h}=St(p,y),{publicKey:I}=mn(p,d,i,o),S=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ct(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,T,h,I,S,x,O,V){let F=R([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),De("withMetadata"),M("optionBaseFlag"),De("baseFlag")]),Z=[...V?[{pubkey:V,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:bu,isSigner:!1,isWritable:!1},{pubkey:kn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Z],j=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:h,liquidity:new gu(0),amountMaxA:S==="MintA"?x:O,amountMaxB:S==="MintA"?O:x,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...At.openPosition,...j]);return new wt({keys:D,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new v((await l(1))[0]);else{let x=Qo.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(d,y,f),{publicKey:P}=ge(d,y,b),{publicKey:A}=ye(n.wallet,m,qe),{publicKey:T}=ci(m),{publicKey:h}=St(d,m),{publicKey:I}=mn(d,y,i,o),S=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,T,I,g,P,h,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ct(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:I},instructions:[S],signers:p,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...At.closePosition,...u]);return new wt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=ye(n.wallet,i.nftMint,qe),{publicKey:a}=St(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...At.increaseLiquidity,...I]);return new wt({keys:h,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=St(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,qe),{publicKey:f}=St(u,n.nftMint),{publicKey:b}=mn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ct(u,c).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=R([z("liquidity"),w("amountMaxA"),w("amountMaxB"),M("optionBaseFlag"),De("baseFlag")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],I=Buffer.alloc(A.span);A.encode({liquidity:new gu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...At.increaseLiquidity,...I]);return new wt({keys:h,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let T=R([z("liquidity"),w("amountMinA"),w("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],S=Buffer.alloc(T.span);T.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...At.decreaseLiquidity,...S]);return new wt({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(c,l,m),{publicKey:y}=ge(c,l,p),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:b}=St(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)P.push({poolRewardVault:new v(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new v(e.rewardDefaultInfos[T].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,je.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ct(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let P=R([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),De("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},h);let I=Buffer.from([...At.swap,...h]);return new wt({keys:T,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,ct(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=R([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Cn.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:U(l),endTime:U(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...At.initReward,...f]);return new wt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=iu(o,s,i.mint).publicKey,u=lr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=R([M("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:U(l),endTime:U(m)},f);let b=Buffer.from([...At.setRewardEmissions,...f]);return new wt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=lr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([M("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...At.collectReward,...l]);return new wt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&wu.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as cp}from"@solana/web3.js";import{PublicKey as ap}from"@solana/web3.js";import Au from"bn.js";var ku=new Au(25),Pu=new Au(1e4),sp={4:3,5:3};var up=ae("Raydium_liquidity_serum");function hu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=ap.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw up.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import yr from"bn.js";function Ho({programId:r}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function yn({name:r,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function lp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function mp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=yn({name:"amm_associated_seed",programId:a,marketId:t}),l=yn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=mp({programId:a}),d=yn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=yn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=yn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=lp({programId:a,marketId:t}),g=yn({name:"target_associated_seed",programId:a,marketId:t}),P=yn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=hu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:cp.default,configId:Ho({programId:a})}}var jo;async function ET({connection:r,poolKeysList:e,config:t}){jo||(jo=new Sn({connection:r}),await jo.initStableModelLayout());let n=e.map(s=>$a({poolKeys:s}));return(await Hs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Zs(s,"GetPoolData"),u=new yr(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),p=new yr(Mt(a,"pool_coin_amount")),d=new yr(Mt(a,"pool_pc_amount")),y=new yr(Mt(a,"pool_lp_supply")),f="0";try{f=Mt(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new yr(f)}})}import He from"bn.js";var br=class extends xe{constructor(t){super(t);this.stableLayout=new Sn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new He(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=qa(t[o?"mintB":"mintA"]),[u,c]=[new He(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new He(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new He(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=o?"base":"quote";this.logDebug("input side:",m);let p=Se;s.isZero()||(p=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c));let d=vr(s.mul(l),new He(m==="base"?t.mintAmountA:t.mintAmountB).mul(new He(10).pow(new He(t[m==="base"?"mintA":"mintB"].decimals)))),f=new ve(new He(1)).add(i).mul(p).quotient,b=new Pe(a,p),g=new Pe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new it(n.lpMint.address)}),P=[d,y],A=[f,b],T=[i.raw,o.raw],h=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(h)||this.logAndCreateError("invalid fixedSide","fixedSide",s),h==="quote"?(P.reverse(),A.reverse(),T.reverse(),I=s==="a"?"quote":"base"):h==="base"&&(I=s==="a"?"base":"quote");let[S,x]=P,[O,V]=A,[F,Z]=T,D=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:F,mint:S.mint,tokenAccount:O,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Wt,se=Te(Wt,["tokenAccount"]);j.addInstruction(se);let Sr=await l.handleTokenAccount({side:"in",amount:Z,mint:x.mint,tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:dt}=Sr,Nn=Te(Sr,["tokenAccount"]);j.addInstruction(Nn);let Mn=await l.handleTokenAccount({side:"out",amount:0,mint:new it(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Pi}=Mn,hi=Te(Mn,["tokenAccount"]);return j.addInstruction(hi),j.addInstruction({instructions:[Ha({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:ee,quoteTokenAccount:dt,lpTokenAccount:Pi,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:Z,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new it(n.mintA.address),new it(n.mintB.address),new it(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),S=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=S,T=Te(S,["tokenAccount"]);b.addInstruction(T);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:h}=x,I=Te(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Wo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:h,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=di,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,ee.accountInfo.mint,di).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new He(0)),A=t.mintA.address===de.WSOL.mint.toString(),T=t.mintB.address===de.WSOL.mint.toString(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:di,mint:new it(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),h===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:di,mint:new it(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=h,b[t.mintB.address]=S,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Wt of s.rewardInfos){let Sr=Wt.mint.address===de.WSOL.mint.toString();if(b[Wt.mint.address])ee.push(b[Wt.mint.address]);else{let{account:Mn,instructionParams:ds}=await this.scope.account.getOrCreateTokenAccount({mint:new it(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Sr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Mn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),ds&&f.addInstruction(ds),ee.push(Mn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ee},Nn=gt[s.programId],Pi=Nn===6?ir(dt):Nn===5?or(dt):sr(dt),hi={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};f.addInstruction({instructions:[Pi],instructionTypes:[hi[Nn]]})}let O=await this.getAmmPoolKeys(t.id),V=Wo({poolInfo:t,poolKeys:O,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:S,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:O.lookupTableAccount?[O.lookupTableAccount]:[]});let[F,Z]=t.mintA.address===n.mintA.address?[h,S]:[S,h],D=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Be.openPositionFromBaseInstructions(W(N({poolInfo:n,poolKeys:D,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:Z},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var Z;let b=c.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),g=c.useSOLBalance&&i.mint.equals(Iu),P=c.useSOLBalance&&o.mint.equals(Iu),A=this.createTxBuilder(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(h||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),T===void 0||I===void 0)throw Error("you don't has some token account");let x=Tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),O={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:V,instructionType:F}=Za(W(N({},O),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:I,userLpVault:ye(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[V],instructionTypes:[F]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:O}})}async getCreatePoolFee({programId:t}){let n=Ho({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ua.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===Zi.toBase58(),y;if(d)y=new E(p.toString()).div(m.toString());else{let x=Qa(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new He(0),g=new He(0);if(!f.isZero())if(d){g=zt(f.mul(ku),Pu);let x=f.sub(g),O=m.add(x);b=p.mul(x).div(O)}else{g=f.mul(new He(2)).div(new He(1e4));let x=f.sub(g);l==="quote"?b=new He(za(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new He(Ya(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new He(new E(b.toString()).mul(1-s).toFixed(0)),A=b,T=P,h=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(h=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(h).div(y).mul(100);return{amountOut:A,minAmountOut:T,currentPrice:y,executionPrice:h,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new it(l.address),programId:new it(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new it(m.address),programId:new it(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new it(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=T,f=Te(T,["tokenAccount"]);c.addInstruction(f);let h=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new it(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=h,g=Te(h,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ai({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import kt from"bn.js";var gr=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)||ue.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new kt(new ue(i.address).toBuffer()).gt(new kt(new ue(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=H.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Be.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:W(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:d,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},lu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:d,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[T,h]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:x,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(O||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id),F=await Be.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:W(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(F),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:p,getEphemeralSigners:d}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),P=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(T||{});let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});h&&(b=h),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Be.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:d});return y.addInstruction(x),y.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(T||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(T||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),I=Be.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,P&&p.addInstruction(P);let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,T&&p.addInstruction(T);let h=[];for(let O of t.rewardDefaultInfos){let V=i.useSOLBalance&&O.mint.address===te.toString(),F;if(O.mint.address===t.mintA.address)F=f;else if(O.mint.address===t.mintB.address)F=b;else{let{account:Z,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(O.mint.programId),mint:new ue(O.mint.address),notUseTokenAccount:V,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!V,associatedOnly:V?!1:u,checkCreateATAOwner:c});F=Z,D&&p.addInstruction(D)}h.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await Be.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:h},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:S.instructions,instructionTypes:[_.ClmmDecreasePosition]});let x=N({},S.address);if(i.closePosition){let O=await Be.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),x=N(N({},x),O.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Be.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Be.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Be.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),d=Be.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new kt(new E(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),p||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:p},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Be.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Be.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?Ct.add(new kt(1)):Rt.sub(new kt(1)):y=H.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=P,A&&m.addInstruction(A)}let b;if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=P,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Be.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(T=>!T.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new ue(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,T&&l.addInstruction(T)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new ue(p.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=A,T&&l.addInstruction(T)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let T=n.useSOLBalance&&A.mint.address===te.toString(),h=c[A.mint.address];if(!h){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:i});h=I,S&&l.addInstruction(S)}c[A.mint.address]=h,g.push(h)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let T=Be.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new kt(0),amountMinA:new kt(0),amountMinB:new kt(0)});l.addInstruction(T)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(lr(e).publicKey);return t?yu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as fi,TOKEN_PROGRAM_ID as en,AccountLayout as _u}from"@solana/spl-token";var dp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),pp=Buffer.from("amm_config","utf8"),fp=Buffer.from("pool","utf8"),yp=Buffer.from("pool_lp_mint","utf8"),bp=Buffer.from("pool_vault","utf8"),gp=Buffer.from("observation","utf8");function wp(r){return oe([dp],r)}function Ap(r,e){return oe([pp,hp(e)],r)}function kp(r,e,t,n){return oe([fp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Pp(r,e){return oe([yp,e.toBuffer()],r)}function xu(r,e,t){return oe([bp,e.toBuffer(),t.toBuffer()],r)}function pi(r,e){return oe([gp,e.toBuffer()],r)}function hp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Bu({programId:r,mintA:e,mintB:t}){let n=Ap(r,0).publicKey,i=wp(r).publicKey,o=kp(r,n,e,t).publicKey,s=Pp(r,o).publicKey,a=xu(r,o,e).publicKey,u=xu(r,o,t).publicKey,c=pi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo,TOKEN_2022_PROGRAM_ID as Su,ASSOCIATED_TOKEN_PROGRAM_ID as Tp}from"@solana/spl-token";var Ip=ae("Raydium_cpmm"),Ar={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Ku(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let T=R([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Tp,isSigner:!1,isWritable:!1},{pubkey:_s,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(T.span);return T.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new wr({keys:h,programId:r,data:Buffer.from([...Ar.initialize,...I])})}function Cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Ip.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.deposit,...g])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=R([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Zo,isSigner:!1,isWritable:!1},{pubkey:Su,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Ms,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new wr({keys:b,programId:r,data:Buffer.from([...Ar.withdraw,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=R([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseInput,...P])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=R([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new wr({keys:g,programId:r,data:Buffer.from([...Ar.swapBaseOutput,...P])})}import ot from"bn.js";var Nu=R([pe(8),M("bump"),De("disableCreatePool"),xt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),B("protocolOwner"),B("fundOwner"),q(w(),16)]),Mu=R([pe(8),B("configId"),B("poolCreator"),B("vaultA"),B("vaultB"),B("mintLp"),B("mintA"),B("mintB"),B("mintProgramA"),B("mintProgramB"),B("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends 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){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=Mu.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=Nu.decode(u.data))}return W(N({},i),{baseReserve:new ot(_u.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new ot(_u.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Te(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Z,D,j;let p=i.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),d=new ot(new Y(c.mintA.address).toBuffer()).lte(new ot(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===fi.toBase58(),A=i.useSOLBalance&&f.address===fi.toBase58(),[T,h]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:p,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(V||{}),S===void 0||O===void 0)throw Error("you don't has some token account");let F=Bu({programId:e,mintA:T,mintB:h});return I.addInstruction({instructions:[Ku(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,T,h,F.lpMint,S,O,ye(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((D=y.programId)!=null?D:en),new Y((j=f.programId)!=null?j:en),F.observationId,b,g,n)],instructionTypes:[_.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:W(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===fi.toString(),A=t.mintB.address===fi.toString(),T=this.createTxBuilder(),[h,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});T.addInstruction(x||{});let{account:O,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});T.addInstruction(V||{}),!S&&!O&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let F=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Z}=ee,D=Te(ee,["tokenAccount"]);T.addInstruction(D);let j=await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[Cu(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),Z,S,O,new Y(j.vault.A),new Y(j.vault.B),h,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[_.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),T.addCustomComputeBudget(a),T.versionBuild({txVersion:c})}async withdrawLiquidity(e){let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new ot(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],{account:m}=this.scope,p=this.createTxBuilder(),[d,y]=[new Y(t.mintA.address),new Y(t.mintB.address)],f=d.equals(te),b=y.equals(te),g,P,{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});g=A,T&&p.addInstruction(T);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:!b,checkCreateATAOwner:!1});P=h,I&&p.addInstruction(I),(!g||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let S=await m.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});S||this.logAndCreateError("cannot found lp token account","tokenAccounts",m.tokenAccounts);let x=await this.getCpmmPoolKeys(t.id);return p.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(x.authority),new Y(t.id),S,g,P,new Y(x.vault.A),new Y(x.vault.B),d,y,new Y(t.lpMint.address),n,c,l)],instructionTypes:[_.CpmmWithdrawLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]}),p.addCustomComputeBudget(o),p.versionBuild({txVersion:s})}async swap(e){var T,h,x,O,V,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintA.programId)!=null?T:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintB.programId)!=null?h:en),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Te(I,["tokenAccount"]);l.addInstruction(b);let S=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=S,P=Te(S,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:en),new Y((O=t.mintB.programId)!=null?O:en),m,p,pi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Ou(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((V=t.mintB.programId)!=null?V:en),new Y((F=t.mintA.programId)!=null?F:en),p,m,pi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?_.CpmmSwapBaseIn:_.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,T,h,I,S,x,O;let s=1-Number(n.toSignificant())/100,a=new ot(new E(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=he(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new ot(0)),[l,m]=[new ot(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new ot(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new ot(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(T=(A=u.fee)==null?void 0:A.toString())!=null?T:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:Se,fee:void 0,expirationTime:void 0};c.isZero()||(f=he(xp(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new ot(1)).add(n),g=he(b.mul(f.amount.sub((h=f.fee)!=null?h:new ot(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(I=f.fee)==null?void 0:I.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(O=(x=g.fee)==null?void 0:x.toString())!=null?O:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function xp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new ot(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new ot(1))),{amountA:i,amountB:o}}var Pr=class extends xe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(Se)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Se)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=U(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Vt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Hn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await Bt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[Hn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Vt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";import{PublicKey as Sp,Transaction as $o,TransactionInstruction as Kp}from"@solana/web3.js";import Vu from"bn.js";var Ze=class extends xe{static getPdaPoolId(e,t){return oe([Ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([Ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Vu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Ze.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Ze.POOL_LAYOUT.span||b.data.length!==Ze.OWNER_LAYOUT.span)continue;let g=Ze.POOL_LAYOUT.decode(f.data),P=Ze.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),T=g.endTime.toNumber(),h=P.tokenInfo.map(x=>x.debtAmount.gt(new Vu(0))).filter(x=>!x).length!==3,I=o>A&&o<T&&g.status===1,S=h&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:A,endTime:T,canClaim:S,canClaimErrorType:h?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,O)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[O].debtAmount.add(P.tokenInfo[O].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(de.WSOL.mint),associatedOnly:u.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(de.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(de.WSOL.mint),associatedOnly:m.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Ze.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Gr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new $o().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new $o().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new $o().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=R([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Bp,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Kp({keys:o,programId:e,data:a})}},lt=Ze;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=R([pe(8),M("bump"),M("status"),w("openTime"),w("endTime"),B("ammId"),q(R([M("mintDecimals"),B("mintAddress"),B("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=R([pe(8),M("bump"),M("version"),B("poolId"),B("owner"),w("lpAmount"),q(R([B("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Sp(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as es}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Du}from"@solana/spl-token";import hr from"bn.js";import{TransactionInstruction as Rp,SYSVAR_RENT_PUBKEY as Lp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import{createInitializeAccountInstruction as Fu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as vu}from"@solana/web3.js";function Cp(r="accountFlags"){let e=new Jr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Jo=R([pe(5),Cp("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 Op({programId:r,marketInfo:e}){let t=R([M("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),xt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Lp,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 Rp({keys:n,programId:r,data:i})}async function Wu({connection:r,wallet:e,marketInfo:t}){let n=new vu,i=await r.getMinimumBalanceForRentExemption(165);n.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:Eu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Eu}),Fu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Fu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new vu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Jo.span),space:Jo.span,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Op({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:o,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}var Rn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ye({fromPublicKey:u,programId:o}),l=Ye({fromPublicKey:u,programId:o}),m=Ye({fromPublicKey:u,programId:o}),p=Ye({fromPublicKey:u,programId:o}),d=Ye({fromPublicKey:u,programId:o}),y=Ye({fromPublicKey:u,programId:Du}),f=Ye({fromPublicKey:u,programId:Du}),b=0,g=new hr(100);function P(){let V=new hr(0);for(;;)try{return{vaultOwner:es.createProgramAddressSync([c.publicKey.toBuffer(),V.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:V}}catch{if(V.iaddn(1),V.gt(new hr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:T}=P(),h=new hr(Math.round(10**e.decimals*n)),I=new hr(Math.round(n*10**t.decimals*i));if(h.eq(Se))throw Error("lot size is too small");if(I.eq(Se))throw Error("tick size or lot size is too small");let S=await Wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:T,baseLotSize:h,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});let O=[];for await(let V of S.slice(1,S.length)){let F=this.createTxBuilder();F.addCustomComputeBudget(a),F.addInstruction({instructions:V.transaction.instructions,signers:V.signer,instructionTypes:V.instructionTypes});let Z=await F.versionBuild({txVersion:s});O.push(Z)}return x.versionMultiBuild({extraPreBuildData:O,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new es(e.mint),quoteMin:new es(t.mint)}},txVersion:s})}};import{PublicKey as Ir}from"@solana/web3.js";import{PublicKey as Np,TransactionInstruction as ns,SYSVAR_CLOCK_PUBKEY as Mp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as rs}from"@solana/spl-token";var ts=R([M("instruction"),ua("amount")]),Tr=R([M("instruction")]);function BB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Np("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:rs,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:_i,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(ts.span);return ts.encode({instruction:1,amount:Number(e)},i),new ns({keys:n,programId:r,data:i})}function yi({programId:r},e){let t=[{pubkey:rs,isSigner:!1,isWritable:!1},{pubkey:_i,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(Tr.span);return Tr.encode({instruction:2},n),new ns({keys:t,programId:r,data:n})}function is(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Tr.span);Tr.encode({instruction:2},s);let a=[{pubkey:rs,isWritable:!1,isSigner:!1},{pubkey:Mp,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new ns({programId:e.programId,keys:a,data:s})}import qu from"bn.js";var _p={[Yn.IDO_PROGRAM_ID_V1.toString()]:1,[Yn.IDO_PROGRAM_ID_V2.toString()]:2,[Yn.IDO_PROGRAM_ID_V3.toString()]:3,[Yn.IDO_PROGRAM_ID_V4.toString()]:4},Ln=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=_p[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new qu(e.coin).isZero(),!new qu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[yi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[yi({programId:new Ir(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[yi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new Ir(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:f,ledgerAccount:new Ir(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[is(W(N({},g),{side:"base"}))]:[],...l?[is(W(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as Vp}from"@solana/web3.js";import{MintLayout as Ep,TOKEN_2022_PROGRAM_ID as os,TOKEN_PROGRAM_ID as ss}from"@solana/spl-token";var xr=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._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(ht.address,ht),this._mintGroup.official.add(ht.address),s.forEach(u=>{this._blackTokenMap.set(u.address,W(N({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?os.toBase58():ss.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?os.toBase58():ss.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,W(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?os.toBase58():ss.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return ht;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new Vp(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ep.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var bi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n,this._owner=i?new yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ar({scope:this,moduleName:"Raydium_Farm"}),this.account=new Zn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new br({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new xr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Pr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new gr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Rn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Ln({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){let t=Fp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Hr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new bi(W(N({},t),{api:u}));return await c.fetchAvailabilityStatus(e.disableFeatureCheck),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Zr);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(ia);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(Zr),new Error(Zr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()-e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as cs,TOKEN_2022_PROGRAM_ID as as}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as ls,SystemProgram as Gu}from"@solana/web3.js";import us from"bn.js";function OS(r,e,t,n,i,o,s,a,u,c,l,m){let p=R([M("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:cs,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new ls({keys:d,programId:r,data:y})}function NS(r,e,t,n,i,o,s,a,u,c){let l=R([M("instruction")]),m=[{pubkey:Gu.programId,isSigner:!1,isWritable:!1},{pubkey:cs,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=fe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new ls({keys:m,programId:r,data:p})}function Uu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=fe(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(as)||a.mintB.programId.equals(as)?[{pubkey:as,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ct(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function vp(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=R([M("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:cs,isSigner:!1,isWritable:!1}];f.push(...Uu(a,c,o,t,n,d[0])),f.push(...Uu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new ls({keys:f,programId:r,data:b})}async function MS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=fe(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(at):Rt.sub(at);return await Be.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new us(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ai({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new us(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?_.AmmV5SwapBaseIn:_.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[vp(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new us(0)),n.remainingAccounts)],instructionTypes:[_.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import zu from"bn.js";var ms=new zu(1e6);function Wp(r,e,t){return r.mul(e).add(t).sub(new zu(1)).div(t)}function Xu(r,e,t){return r.mul(e).div(t)}var gi=class{static tradingFee(e,t){return Wp(e,t,ms)}static protocolFee(e,t){return Xu(e,t,ms)}static fundFee(e,t){return Xu(e,t,ms)}};import Br from"bn.js";function wi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Dp(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=wi(r,e);if(n.gt(On)){t=t.add(new Br(1));let i=r.div(t);n=wi(r,t),n.gt(On)&&(i=i.add(new Br(1)))}return[t,e]}var On=new Br(0),Ai=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Dp(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return wi(e.mul(n),t).gt(On)&&s.gt(On)&&(s=s.add(new Br(1))),wi(e.mul(i),t).gt(On)&&a.gt(On)&&(a=a.add(new Br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Yu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Yu||{}),Qu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=gi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ai.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var ju={[Qr.toBase58()]:3},Hu={3:Qr};var qp=R([pe(5),pe(8),B("ownAddress"),w("vaultSignerNonce"),B("baseMint"),B("quoteMint"),B("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),B("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),B("requestQueue"),B("eventQueue"),B("bids"),B("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),Zu={3:qp};import{PublicKey as $u}from"@solana/web3.js";var ki=ae("Serum"),Ju=class{static getProgramId(e){let t=Hu[e];return t||ki.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||ki.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Zu[e];return t||ki.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=$u.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return ki.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:$u.default,nonce:i}}};var KK=r=>r;export{db as ACCOUNT_TYPE_SIZE,Wb as ALL_PROGRAM_ID,Xd as AMM_CONFIG_SEED,Ll as AMM_STABLE,Zi as AMM_V4,cf as ANAMint,Xe as API_URLS,Bl as AccountType,sT as AmmConfigLayout,Hr as Api,su as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,gy as BN_100,wy as BN_1000,Ay as BN_10000,by as BN_FIVE,Ds as BN_ONE,nn as BN_TEN,yy as BN_THREE,fy as BN_TWO,Se as BN_ZERO,zg as BitStructure,aa as Blob,Ol as CLMM_PROGRAM_ID,_i as CLOCK_PROGRAM_ID,vl as CREATE_CPMM_POOL_AUTH,Wl as CREATE_CPMM_POOL_FEE_ACC,Fl as CREATE_CPMM_POOL_PROGRAM,gr as Clmm,Be as ClmmInstrument,Ai as ConstantProductCurve,Nu as CpmmConfigInfoLayout,gi as CpmmFee,Mu as CpmmPoolInfoLayout,vn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,pg as DEV_API_URLS,Fb as DEV_CREATE_CPMM_POOL_AUTH,vb as DEV_CREATE_CPMM_POOL_FEE_ACC,Eb as DEV_CREATE_CPMM_POOL_PROGRAM,Rd as DataElement,lf as ETHMint,Xo as EXTENSION_TICKARRAY_BITMAP_SIZE,Ca as FARM_LOCK_MINT,Ra as FARM_LOCK_VAULT,ji as FARM_PROGRAM_ID_V3,Hi as FARM_PROGRAM_ID_V5,Tn as FARM_PROGRAM_ID_V6,gt as FARM_PROGRAM_TO_VERSION,Oa as FARM_VERSION_TO_LEDGER_LAYOUT,La as FARM_VERSION_TO_STATE_LAYOUT,mi as FEE_RATE_DENOMINATOR,ms as FEE_RATE_DENOMINATOR_VALUE,Jd as FETCH_TICKARRAY_COUNT,$d as Fee,ne as Fraction,Yn as IDO_ALL_PROGRAM,Ml as IDO_PROGRAM_ID_V1,_l as IDO_PROGRAM_ID_V2,Vl as IDO_PROGRAM_ID_V3,El as IDO_PROGRAM_ID_V4,Vr as INSTRUCTION_PROGRAM_ID,_ as InstructionType,$i as JupTokenType,Pu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,sp as LIQUIDITY_VERSION_TO_SERUM_VERSION,hP as LIQUIDITY_VERSION_TO_STATE_LAYOUT,au as LOG_B_2_X32,uu as LOG_B_P_ERR_MARGIN_LOWER_X64,cu as LOG_B_P_ERR_MARGIN_UPPER_X64,zr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,ic as LogLevel,Ii as Logger,Jo as MARKET_STATE_LAYOUT_V2,qp as MARKET_STATE_LAYOUT_V3,Zu as MARKET_VERSION_TO_STATE_LAYOUT,js as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,Je as MAX_TICK,An as MEMO_PROGRAM_ID,Ms as MEMO_PROGRAM_ID2,kn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,Kn as MODEL_DATA_PUBKEY,Ju as Market,$ as MathUtil,Go as MaxU64,ou as MaxUint128,Ft as NEGATIVE_ONE,uf as NRVMint,at as ONE,Rl as OPEN_BOOK_PROGRAM,Hd as OPERATION_SEED,Yo as ObservationInfoLayout,np as ObservationLayout,yu as OperationLayout,oo as OptionLayout,yt as Owner,ef as PAIMint,Qd as POOL_REWARD_VAULT_SEED,zd as POOL_SEED,Zd as POOL_TICK_ARRAY_BITMAP_SEED,Yd as POOL_VAULT_SEED,nu as POSITION_SEED,ve as Percent,Ul as PoolFetchType,du as PoolInfoLayout,je as PoolUtils,pu as PositionInfoLayout,ip as PositionRewardInfoLayout,fr as PositionUtils,Ge as Price,aT as ProtocolPositionLayout,li as Q128,ut as Q64,Jp as RAYMint,tt as RENT_PROGRAM_ID,bi as Raydium,rp as RewardInfo,Yu as RoundDirection,Wi as Rounding,Nl as Router,ju as SERUM_PROGRAMID_TO_VERSION,Qr as SERUM_PROGRAM_ID_V3,Hu as SERUM_VERSION_TO_PROGRAMID,ra as SESSION_KEY,Ne as SOLMint,ht as SOL_INFO,Zk as SPL_MINT_LAYOUT,tf as SRMMint,Ji as STORAGE_KEY,_s as SYSTEM_PROGRAM_ID,H as SqrtPriceMath,Sn as StableLayout,so as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,jd as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,jP as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,fu as TickArrayBitmapExtensionLayout,pr as TickArrayBitmapExtensionUtils,dr as TickArrayLayout,op as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,de as Token,Pe as TokenAmount,Yr as TxBuilder,Wn as TxVersion,mr as U64Resolution,ZP as U64_IGNORE_RANGE,no as UInt,nf as USDCMint,af as USDHMint,rf as USDTMint,Cl as UTIL1216,ao as Union,Sa as Voter,ld as VoterDepositEntry,cd as VoterLockup,Ba as VoterRegistrar,ud as VoterVotingMintConfig,te as WSOLMint,Jr as WideBits,_t as WrappedLayout,me as ZERO,Es as _100_PERCENT,k as accountMeta,ty as add,Ur as addComputeBudget,Vo as addLiquidityLayout,Lw as array,bo as associatedLedgerAccountLayout,ro as bits,pe as blob,De as bool,Co as calFarmRewardAmount,Wp as ceilDiv,Dn as checkLegacyTxSize,qn as checkV0TxSize,zi as chunkArray,Tr as claimLayout,Vt as closeAccountInstruction,Oi as commonSystemAccountMeta,_a as createAssociatedLedgerAccountInstruction,ae as createLogger,Ua as createPoolFeeLayout,Za as createPoolV4InstructionV2,PP as createPoolV4Layout,Bt as createWSolAccountInstructions,kw as cstr,vf as currencyEquals,pl as decimalToFraction,Fm as decodeBool,Zf as div,vr as divCeil,$e as dwLayout,vm as encodeBool,Og as endlessRetry,ll as eq,yw as f32,bw as f32be,gw as f64,ww as f64be,ko as farmAddRewardLayout,VA as farmLedgerLayoutV3_1,Jn as farmLedgerLayoutV3_2,EA as farmLedgerLayoutV5_1,Ia as farmLedgerLayoutV5_2,xa as farmLedgerLayoutV6_1,Ma as farmRewardInfoToConfig,wo as farmRewardLayout,Ao as farmRewardRestartLayout,ad as farmRewardTimeInfoLayout,ha as farmStateV3Layout,Ta as farmStateV5Layout,$n as farmStateV6Layout,uk as fetchMultipleFarmInfoAndUpdate,ET as fetchMultipleInfo,pb as fetchMultipleMintInfos,oe as findProgramAddress,No as fixedSwapInLayout,Mo as fixedSwapOutLayout,Xu as floorDiv,Gr as forecastTransactionSize,Wd as formatLayout,Ye as generatePubKey,ye as getATAAddress,Na as getAssociatedAuthority,Ho as getAssociatedConfigId,rt as getAssociatedLedgerAccount,tr as getAssociatedLedgerPoolAccount,lp as getAssociatedOpenOrders,Tu as getAssociatedPoolKeys,Ap as getCpmmPdaAmmConfigId,kp as getCpmmPdaPoolId,Bu as getCreatePoolKeys,ea as getDate,Ro as getDepositEntryIndex,Ya as getDxByDyBaseIn,za as getDyByDxBaseIn,rb as getEpochInfo,oi as getFarmLedgerLayout,md as getFarmStateLayout,mp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,Vh as getLiquidityFromAmounts,ey as getMax,Tt as getMultipleAccountsInfo,hn as getMultipleAccountsInfoWithCustomFlags,Yi as getMultipleLookupTableInfo,zP as getPdaAmmConfigId,ct as getPdaExBitmapAccount,Pp as getPdaLpMint,ci as getPdaMetadataKey,pi as getPdaObservationId,lr as getPdaOperationAccount,St as getPdaPersonalPositionAddress,wp as getPdaPoolAuthority,ru as getPdaPoolId,iu as getPdaPoolRewardVaulId,Uo as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,xu as getPdaVault,Pn as getRecentBlockHash,To as getRegistrarAddress,Gl as getSessionKey,Qa as getStablePrice,Kl as getTime,zy as getTimestamp,Ko as getTokenOwnerRecordAddress,Yb as getTransferAmountFee,he as getTransferAmountFeeV2,Bo as getVoterAddress,So as getVoterWeightRecordAddress,xo as getVotingMintAuthority,Io as getVotingTokenMint,kd as governanceCreateTokenOwnerRecord,Yg as greedy,cl as gt,Hf as gte,fa as i128,DP as i16ToBytes,ui as i32ToBytes,ei as i64,pa as i8,_o as initPoolLayout,fo as initTokenAccountInstruction,Op as initializeMarket,Rb as intersection,na as isDateAfter,ta as isDateBefore,fl as isDecimal,Jf as isMeaningfulNumber,Js as isNumber,Po as isValidFarmVersion,cr as isZero,fe as jsonInfo2PoolKeys,ck as judgeFarmType,Do as leadingZeros,tu as leastSignificantBit,Sd as liquidityStateV4Layout,Kd as liquidityStateV5Layout,Qf as lt,jf as lte,of as mSOLMint,ai as makeAMMSwapInstruction,Ha as makeAddLiquidityInstruction,Oo as makeAddNewRewardInstruction,yi as makeClaimInstruction,is as makeClaimInstructionV4,Ku as makeCreateCpmmPoolInInstruction,Va as makeCreateFarmInstruction,Wu as makeCreateMarketInstruction,Ea as makeCreatorWithdrawFarmRewardInstruction,Cu as makeDepositCpmmInInstruction,Fa as makeDepositInstructionV3,va as makeDepositInstructionV5,Wa as makeDepositInstructionV6,Bk as makeDepositTokenInstruction,Kk as makeDepositWithdrawInstruction,vP as makeInitPoolInstructionV4,BB as makePurchaseInstruction,Lo as makeRestartRewardInstruction,$a as makeSimulatePoolInfoInstruction,Lu as makeSwapCpmmBaseInInInstruction,Ou as makeSwapCpmmBaseOutInInstruction,Ud as makeSwapFixedInInstruction,Gd as makeSwapFixedOutInstruction,MS as makeSwapInstruction,Hn as makeTransferInstruction,Ru as makeWithdrawCpmmInInstruction,sr as makeWithdrawInstructionV3,or as makeWithdrawInstructionV5,ir as makeWithdrawInstructionV6,Sk as makeWithdrawTokenInstruction,sn as minExpirationTime,HP as mockCreatePoolInfo,lu as mockV3CreatePoolInfo,Ld as modelDataInfoLayout,eu as mostSignificantBit,Ui as mul,Gi as notInnerObject,uw as ns64,fw as ns64be,ua as nu64,nw as nu64be,io as offset,Mb as offsetDateTime,Bw as option,U as parseBigNumberish,tn as parseNumberInfo,Zs as parseSimulateLogToJson,Mt as parseSimulateValue,Pa as parseTokenAccountResp,oP as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,B as publicKey,ts as purchaseLayout,id as realFarmStateV3Layout,od as realFarmStateV5Layout,sd as realFarmV6Layout,Ws as recursivelyDecimalToFraction,Wo as removeLiquidityInstruction,Eo as removeLiquidityLayout,OS as route1Instruction,NS as route2Instruction,vp as routeInstruction,Rw as rustEnum,iw as s16,cw as s16be,ow as s24,lw as s24be,We as s32,mw as s32be,sw as s40,dw as s40be,aw as s48,pw as s48be,rw as s8,q as seq,Yp as setLoggerLevel,ml as shakeFractionDecimal,Hs as simulateMultipleInstruction,FP as simulatePoolInfoInstruction,Pl as simulateTransaction,Gs as sleep,Vi as solToWSol,uP as solToWSolToken,Yt as splAccountLayout,Us as splitNumber,sf as stSOLMint,Cw as str,R as struct,$f as sub,Kw as tagged,Di as tenExponential,dl as toBN,hl as toBuffer,qs as toFraction,Yf as toFractionWithDecimals,ky as toPercent,qa as toToken,aP as toTokenAmount,sP as toTokenInfo,Py as toTokenPrice,hy as toTotalPrice,vs as toUsdCurrency,qo as trailingZeros,Mi as tryParsePublicKey,z as u128,xt as u16,Ja as u16ToBytes,Zg as u16be,Qg as u24,$g as u24be,ze as u32,qP as u32ToBytes,Jg as u32be,jg as u40,ew as u40be,Hg as u48,tw as u48be,w as u64,M as u8,Ow as union,KK as unionArr,Aw as unionLayoutDiscriminator,Ob as uniq,dd as updateFarmPoolInfo,jr as updateReqHistory,Pw as utf8,Ni as validateAndParsePublicKey,ho as validateFarmRewards,Sw as vec,Wm as vecU8,hd as voterStakeRegistryCreateDepositEntry,Pd as voterStakeRegistryCreateVoter,gd as voterStakeRegistryDeposit,wd as voterStakeRegistryUpdateVoterWeightRecord,Ad as voterStakeRegistryWithdraw,cP as wSolToSolToken,go as withdrawRewardLayout,Lb as xor,Nw as zeros};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map