@raydium-io/raydium-sdk-v2 0.0.44-alpha → 0.0.46-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +5 -5
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/type.d.ts +1 -1
  41. package/lib/raydium/farm/config.d.ts +1 -1
  42. package/lib/raydium/farm/farm.d.ts +3 -3
  43. package/lib/raydium/farm/index.d.ts +1 -1
  44. package/lib/raydium/farm/instruction.d.ts +1 -1
  45. package/lib/raydium/farm/layout.d.ts +1 -1
  46. package/lib/raydium/farm/type.d.ts +1 -1
  47. package/lib/raydium/farm/util.d.ts +1 -1
  48. package/lib/raydium/ido/ido.d.ts +3 -3
  49. package/lib/raydium/ido/index.d.ts +3 -3
  50. package/lib/raydium/ido/instruction.d.ts +1 -1
  51. package/lib/raydium/ido/type.d.ts +1 -1
  52. package/lib/raydium/index.d.ts +3 -3
  53. package/lib/raydium/index.js +1 -1
  54. package/lib/raydium/index.js.map +1 -1
  55. package/lib/raydium/index.mjs +1 -1
  56. package/lib/raydium/index.mjs.map +1 -1
  57. package/lib/raydium/liquidity/index.d.ts +1 -1
  58. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  59. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  60. package/lib/raydium/liquidity/liquidity.js +1 -1
  61. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  62. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  63. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  64. package/lib/raydium/liquidity/type.d.ts +1 -1
  65. package/lib/raydium/liquidity/utils.d.ts +1 -1
  66. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  67. package/lib/raydium/marketV2/index.d.ts +3 -3
  68. package/lib/raydium/moduleBase.d.ts +3 -3
  69. package/lib/raydium/raydium.d.ts +3 -3
  70. package/lib/raydium/raydium.js +1 -1
  71. package/lib/raydium/raydium.js.map +1 -1
  72. package/lib/raydium/raydium.mjs +1 -1
  73. package/lib/raydium/raydium.mjs.map +1 -1
  74. package/lib/raydium/token/constant.d.ts +1 -1
  75. package/lib/raydium/token/index.d.ts +1 -1
  76. package/lib/raydium/token/token.d.ts +3 -3
  77. package/lib/raydium/token/type.d.ts +1 -1
  78. package/lib/raydium/token/utils.d.ts +1 -1
  79. package/lib/raydium/tradeV2/index.d.ts +2 -2
  80. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  81. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  82. package/lib/raydium/tradeV2/type.d.ts +2 -2
  83. package/lib/raydium/type.d.ts +1 -1
  84. package/lib/raydium/utils1216/index.d.ts +3 -3
  85. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  86. package/lib/{raydium-6435918d.d.ts → raydium-506bacbc.d.ts} +2 -2
  87. package/lib/{type-291f7eb1.d.ts → type-389634c9.d.ts} +1 -1
  88. package/lib/{type-515cebdd.d.ts → type-9fe71e3c.d.ts} +3 -3
  89. package/package.json +1 -1
  90. package/src/raydium/liquidity/liquidity.ts +2 -2
package/lib/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- var tc=Object.defineProperty,nc=Object.defineProperties;var rc=Object.getOwnPropertyDescriptors;var Rr=Object.getOwnPropertySymbols;var bs=Object.prototype.hasOwnProperty,gs=Object.prototype.propertyIsEnumerable;var ys=(r,e,t)=>e in r?tc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))bs.call(e,t)&&ys(r,t,e[t]);if(Rr)for(var t of Rr(e))gs.call(e,t)&&ys(r,t,e[t]);return r},D=(r,e)=>nc(r,rc(e));var Ie=(r,e)=>{var t={};for(var n in r)bs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Rr)for(var n of Rr(r))e.indexOf(n)<0&&gs.call(r,n)&&(t[n]=r[n]);return t};import Hl from"axios";import{get as Ki,set as ws}from"lodash";import As from"dayjs";import ic from"dayjs/plugin/utc";As.extend(ic);var oc=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(oc||{}),Ci=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 As().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}},Ri={},Ps={};function ae(r){let e=Ki(Ri,r);if(!e){let t=Ki(Ps,r);e=new Ci({name:r,logLevel:t}),ws(Ri,r,e)}return e}function jp(r,e){ws(Ps,r,e);let t=Ki(Ri,r);t&&(t.level=e)}import{PublicKey as wl}from"@solana/web3.js";import Al from"bn.js";import bl from"big.js";import Xt from"bn.js";import ke from"bn.js";var gn=9e15,Gt=1e9,Li="0123456789abcdef",Or="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Nr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Oi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Is,Ot,J=!0,_r="[DecimalError] ",Ut=_r+"Invalid argument: ",xs=_r+"Precision limit exceeded",Bs=_r+"crypto unavailable",Ss="[object Decimal]",Ge=Math.floor,Oe=Math.pow,sc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ac=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,uc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ks=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,bt=1e7,Q=7,cc=9007199254740991,lc=Or.length-1,Ni=Nr.length-1,O={toStringTag:Ss};O.absoluteValue=O.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};O.ceil=function(){return X(new this.constructor(this),this.e+1,2)};O.clampedTo=O.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)};O.comparedTo=O.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};O.cosine=O.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=mc(n,Ns(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)};O.cubeRoot=O.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=Ge((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Ae(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,r,m.rounding,e)};O.decimalPlaces=O.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ge(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(r){return Ae(this,new this.constructor(r))};O.dividedToIntegerBy=O.divToInt=function(r){var e=this,t=e.constructor;return X(Ae(e,new t(r),0,1,1),t.precision,t.rounding)};O.equals=O.eq=function(r){return this.cmp(r)===0};O.floor=function(){return X(new this.constructor(this),this.e+1,3)};O.greaterThan=O.gt=function(r){return this.cmp(r)>0};O.greaterThanOrEqualTo=O.gte=function(r){var e=this.cmp(r);return e==1||e===0};O.hyperbolicCosine=O.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/Er(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)};O.hyperbolicSine=O.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/Er(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)};O.hyperbolicTangent=O.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,Ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};O.inverseCosine=O.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()?yt(t,i,o):new t(0):new t(NaN):e.isZero()?yt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=yt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};O.inverseHyperbolicCosine=O.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)};O.inverseHyperbolicSine=O.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())};O.inverseHyperbolicTangent=O.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};O.inverseSine=O.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=yt(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)))};O.inverseTangent=O.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<=Ni)return s=yt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ni)return s=yt(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)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&Ge(this.e/Q)>this.d.length-2};O.isNaN=function(){return!this.s};O.isNegative=O.isNeg=function(){return this.s<0};O.isPositive=O.isPos=function(){return this.s>0};O.isZero=function(){return!!this.d&&this.d[0]===0};O.lessThan=O.lt=function(r){return this.cmp(r)<0};O.lessThanOrEqualTo=O.lte=function(r){return this.cmp(r)<1};O.logarithm=O.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?Mr(l,a+10):qt(r,a),u=Ae(s,n,a,1),En(u.d,i=m,p))do if(a+=10,s=qt(c,a),n=e?Mr(l,a+10):qt(r,a),u=Ae(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(En(u.d,i+=10,p));return J=!0,X(u,m,p)};O.minus=O.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=Ge(r.e/Q),l=Ge(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]=bt-1;--c[i],c[n]+=bt}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=Vr(c,t),J?X(r,a,u):r):new y(u===3?-0:0)};O.modulo=O.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=Ae(t,r.abs(),0,3,1),e.s*=r.s):e=Ae(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return Mi(this)};O.naturalLogarithm=O.ln=function(){return qt(this)};O.negated=O.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};O.plus=O.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=Ge(m.e/Q),n=Ge(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)/bt|0,c[i]%=bt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Vr(c,n),J?X(r,a,u):r};O.precision=O.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=Cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};O.sine=O.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=pc(n,Ns(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};O.squareRoot=O.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=Ge((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Ae(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,r)};O.tangent=O.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=Ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};O.times=O.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=Ge(l.e/Q)+Ge(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%bt|0,e=a/bt|0;o[i]=(o[i]+e)%bt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Vr(o,t),J?X(r,m.precision,m.rounding):r};O.toBinary=function(r,e){return Vi(this,2,r,e)};O.toDecimalPlaces=O.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))};O.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(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=ht(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=ht(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=ht(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};O.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=Cs(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=Ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=Ae(c,n,o,1).minus(d).abs().cmp(Ae(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};O.toHexadecimal=O.toHex=function(r,e){return Vi(this,16,r,e)};O.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=Ae(t,r,0,e,1).times(r),J=!0,X(t)):(r.s=t.s,t=r),t};O.toNumber=function(){return+this};O.toOctal=function(r,e){return Vi(this,8,r,e)};O.toPower=O.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=Ge(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=cc)return i=Rs(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)?Ge(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=Mi(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),En(i.d,n,o)&&(e=n+10,i=X(Mi(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))};O.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(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=ht(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toSignificantDigits=O.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)};O.toString=function(){var r=this,e=r.constructor,t=ht(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};O.truncated=O.trunc=function(){return X(new this.constructor(this),this.e+1,1)};O.valueOf=O.toJSON=function(){var r=this,e=r.constructor,t=ht(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 En(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 Lr(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]+=Li.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 mc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Er(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var Ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M,E,H,v=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new v(!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=bt,d=Q,l=Ge(n.e/d)-Ge(i.e/d)),E=se.length,K=ee.length,g=new v(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=v.precision,s=v.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,E==1){for(p=0,se=se[0],I++;(m<K||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/se|0,p=B%se|0;y=p||m<K}else{for(p=u/(se[0]+1)|0,p>1&&(se=r(se,p,u),ee=r(ee,p,u),E=se.length,K=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;H=se.slice(),H.unshift(0),M=se[0],se[1]>=u/2&&++M;do p=0,c=e(se,A,E,h),c<0?(T=A[0],E!=h&&(T=T*u+(A[1]||0)),p=T/M|0,p>1?(p>=u&&(p=u-1),f=r(se,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?H:se,b,u))):(p==0&&(c=p=1),f=se.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(se,A,E,h),c<1&&(p++,t(A,E<h?H:se,h,u))),h=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[h++]=ee[x]||0:(A=[ee[x]],h=1);while((x++<K||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,Is=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]==bt&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=bt)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 ht(r,e,t){if(!r.isFinite())return Os(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 Vr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Mr(r,e,t){if(e>lc)throw J=!0,t&&(r.precision=t),Error(xs);return X(new r(Or),e,1,!0)}function yt(r,e,t){if(e>Ni)throw Error(xs);return X(new r(Nr),e,t,!0)}function Cs(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 Rs(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),hs(o.d,s)&&(i=!0)),t=Ge(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),hs(e.d,s)}return J=!0,o}function ks(r){return r.d[r.d.length-1]&1}function Ls(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Mi(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(Ae(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&En(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=Mr(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=Ae(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(Ae(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Mr(g,l+2,A).times(o+""))),u=Ae(u,new g(d),l,1),e==null)if(En(u.d,l-y,P,a))g.precision=l+=y,c=s=f=Ae(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 Os(r){return String(r.s*r.s/0)}function _i(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 dc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ks.test(e))return _i(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(ac.test(e))t=16,e=e.toLowerCase();else if(sc.test(e))t=2;else if(uc.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=Rs(n,new n(t),o,o*2)),c=Lr(e,t,bt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Vr(c,l),r.d=c,J=!1,s&&(r=Ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Fn.pow(2,u))),J=!0,r)}function pc(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/Er(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=Ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function Er(r,e){for(var t=r;--e;)t*=r;return t}function Ns(r,e){var t,n=e.s<0,i=yt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=ks(t)?n?2:3:n?4:1,e;Ot=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Vi(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=Os(r);else{for(l=ht(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=Lr(ht(p),10,i),p.e=p.d.length),m=Lr(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=Ae(r,p,t,n,0,i),m=r.d,o=r.e,c=Is),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Li.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=Lr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Li.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 hs(r,e){if(r.length>e)return r.length=e,!0}function fc(r){return new this(r).abs()}function yc(r){return new this(r).acos()}function bc(r){return new this(r).acosh()}function gc(r,e){return new this(r).plus(e)}function wc(r){return new this(r).asin()}function Ac(r){return new this(r).asinh()}function Pc(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function hc(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=yt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?yt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=yt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Ae(r,e,o,1)),e=yt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Ae(r,e,o,1)),t}function Tc(r){return new this(r).cbrt()}function Ic(r){return X(r=new this(r),r.e+1,2)}function xc(r,e,t){return new this(r).clamp(e,t)}function Bc(r){if(!r||typeof r!="object")throw Error(_r+"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]=Oi[t]),(n=r[t])!==void 0)if(Ge(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]=Oi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Bs);else this[t]=!1;else throw Error(Ut+t+": "+n);return this}function Sc(r){return new this(r).cos()}function Kc(r){return new this(r).cosh()}function Ms(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,Ts(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 _i(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),Ks.test(o)?_i(c,o):dc(c,o)}if(i.prototype=O,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=Bc,i.clone=Ms,i.isDecimal=Ts,i.abs=fc,i.acos=yc,i.acosh=bc,i.add=gc,i.asin=wc,i.asinh=Ac,i.atan=Pc,i.atanh=kc,i.atan2=hc,i.cbrt=Tc,i.ceil=Ic,i.clamp=xc,i.cos=Sc,i.cosh=Kc,i.div=Cc,i.exp=Rc,i.floor=Lc,i.hypot=Oc,i.ln=Nc,i.log=Mc,i.log10=Vc,i.log2=_c,i.max=Ec,i.min=Fc,i.mod=vc,i.mul=Wc,i.pow=Dc,i.random=qc,i.round=Uc,i.sign=Gc,i.sin=Xc,i.sinh=zc,i.sqrt=Yc,i.sub=Hc,i.sum=Qc,i.tan=jc,i.tanh=Zc,i.trunc=$c,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 Cc(r,e){return new this(r).div(e)}function Rc(r){return new this(r).exp()}function Lc(r){return X(r=new this(r),r.e+1,3)}function Oc(){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 Ts(r){return r instanceof Fn||r&&r.toStringTag===Ss||!1}function Nc(r){return new this(r).ln()}function Mc(r,e){return new this(r).log(e)}function _c(r){return new this(r).log(2)}function Vc(r){return new this(r).log(10)}function Ec(){return Ls(this,arguments,"lt")}function Fc(){return Ls(this,arguments,"gt")}function vc(r,e){return new this(r).mod(e)}function Wc(r,e){return new this(r).mul(e)}function Dc(r,e){return new this(r).pow(e)}function qc(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(Bs);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 Uc(r){return X(r=new this(r),r.e+1,this.rounding)}function Gc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Xc(r){return new this(r).sin()}function zc(r){return new this(r).sinh()}function Yc(r){return new this(r).sqrt()}function Hc(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 Zc(r){return new this(r).tanh()}function $c(r){return X(r=new this(r),r.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var Fn=O.constructor=Ms(Oi);Or=new Fn(Or);Nr=new Fn(Nr);var F=Fn;import{PublicKey as Di}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jc}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as _s,SYSVAR_RENT_PUBKEY as el}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ei=[k({pubkey:Jc,isWritable:!1}),k({pubkey:_s.programId,isWritable:!1}),k({pubkey:el,isWritable:!1})];function Fi({publicKey:r,transformSol:e}){let t=vi(r.toString());if(t instanceof xe)return e&&t.equals(Ne)?te:t;if(e&&t.toString()===Ne.toBase58())return te;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function vi(r){try{return new xe(r)}catch{return r}}var An=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vs=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new xe("SysvarRent111111111111111111111111111111111"),Wi=new xe("SysvarC1ock11111111111111111111111111111111"),Pn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fr=new xe("Sysvar1nstructions1111111111111111111111111"),Es=_s.programId,nf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),rf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),of=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),sf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),af=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),uf=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),cf=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),lf=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),mf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),df=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),pf=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new xe("So11111111111111111111111111111111111111112"),Ne=xe.default;function kn(r){return Fi({publicKey:r,transformSol:!0})}import{PublicKey as tl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fs}from"@solana/spl-token";var Tt={chainId:101,address:tl.default.toBase58(),programId:Fs.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:Fs.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 qi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Di&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Di(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?Di.default:Fi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},pe=qi;pe.WSOL=new qi(D(N({},Me),{mint:Me.address}));import Wr from"big.js";import il from"bn.js";import ol from"decimal.js-light";import nl from"toformat";var rl=nl,vn=rl;var vr=ae("module/fraction"),Ui=vn(Wr),Wn=vn(ol),sl={[0]:Wn.ROUND_DOWN,[1]:Wn.ROUND_HALF_UP,[2]:Wn.ROUND_UP},al={[0]:Wr.roundDown,[1]:Wr.roundHalfUp,[2]:Wr.roundUp},ne=class{constructor(e,t=new il(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)||vr.logWithError(`${e} is not an integer.`),e<=0&&vr.logWithError(`${e} is not positive.`),Wn.set({precision:e+1,rounding:sl[n]});let i=new Wn(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)||vr.logWithError(`${e} is not an integer.`),e<0&&vr.logWithError(`${e} is negative.`),Ui.DP=e,Ui.RM=al[n]||1,new Ui(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ul=ae("Raydium_price"),Xe=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(Xi(n.decimals),Xi(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Xe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ul.logWithError("mul token not equals");let n=super.mul(t);return new Xe({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 zi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Dn=zi;Dn.SOL=new zi(Tt);function qf(r,e){return r instanceof pe&&e instanceof pe?r.equals(e):r instanceof pe||e instanceof pe?!1:r===e}import cl from"bn.js";var vs=new ne(new cl(100)),ve=class extends ne{toSignificant(e=5,t,n){return this.mul(vs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(vs).toFixed(e,t,n)}};function Ce(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Ce(r.toExact())}catch{return new ne(Ke)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function jf(r){var n;if(r instanceof ve)return{fr:new ne(r.numerator,r.denominator)};if(r instanceof Xe)return{fr:r.adjusted};if(r instanceof Te)return{fr:Ce(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 Zf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ke)}function ll(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gt(Ke)}function $f(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.lte(Ke)}function Jf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gte(Ke)}function ml(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.eq(Ke)}function ey(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);try{return t.div(n)}catch{return t}}function ty(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.sub(n)}function ny(r){return r==null?!1:!ml(r,0)}function ry(r,e){return ll(e,r)?e:r}function Yi(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.mul(n)}function iy(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.add(n)}var Gi=(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))(Gi||{}),Ke=new ke(0),Us=new ke(1),gy=new ke(2),wy=new ke(3),Ay=new ke(5),nn=new ke(10),Py=new ke(100),ky=new ke(1e3),hy=new ke(1e4),Ws=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof ke)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ke(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Ws||r<=-Ws)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ke(String(r))):typeof r=="bigint"?new ke(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ke(0))}function Xi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof ke)return{numerator:r.toString(),denominator:"1"};if(r instanceof 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 Dr(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 dl(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function pl(r,e=0){return r instanceof ke?r:new ke(dl(Gs(r).mul(nn.pow(new ke(String(e))))))}function Gs(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Gs(r.toExact())}catch{return new ne(Ke)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Ty(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new ke(t),new ke(n).mul(e!=null&&e.alreadyDecimaled?new ke(100):new ke(1)))}function Iy(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new pe({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new ke(o).mul(nn.pow(new ke(e.decimals))):o,u=new ke(s).mul(nn.pow(new ke(i.decimals)));return new Xe({baseToken:i,denominator:u.toString(),quoteToken:new pe(D(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Ds(r){let e=new Dn({decimals:6,symbol:"usd",name:"usd"}),t=pl(Yi(r,10**e.decimals));return new rn(e,t)}function xy(r,e){return Ds(!e||!r?0:Yi(r,e))}function fl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ne(e,t)}function yl(r){return r instanceof F}function qs(r){return yl(r)?fl(r):Array.isArray(r)?r.map(e=>qs(e)):Hi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,qs(t)])):r}var gl=ae("Raydium_amount"),qr=vn(bl);function Xs(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")):gl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Te=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]=Xs(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 qr.DP=this.token.decimals,new qr(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]=Xs(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 qr.DP=this.currency.decimals,new qr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function zs(r){new Promise(e=>setTimeout(e,r))}function Qy(){return new Date().getTime()}function Hi(r){return typeof r=="object"&&r!==null&&![pe,Te,wl,ne,Al,Xe,ve].some(e=>typeof e=="object"&&r instanceof e)}function ye(r){return typeof r=="string"?vi(r):Array.isArray(r)?r.map(e=>ye(e)):Hi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ye(t)])):r}import{PublicKey as Gn,sendAndConfirmTransaction as Qr,Transaction as Xn,TransactionMessage as zn,VersionedTransaction as Yn}from"@solana/web3.js";import Kl from"axios";var hn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(hn||{}),V={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 Hs,ComputeBudgetProgram as Ys,Transaction as Gr,TransactionMessage as Pl,Keypair as Qs,VersionedTransaction as js}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),Zs=1644;function Xr(r){let e=[],t=[];return r.microLamports&&(e.push(Ys.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(Ys.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Tn(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 zr(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 Gr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Zs}catch{return!1}}async function $s(r,e,t,n=!0){let i=new Hs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Gr;s.feePayer=i;for(let c of e)zr([...s.instructions,c],[i])||(o.push(s),s=new Gr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await hl(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 Js(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]=Hs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function hl(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 qn({instructions:r,payer:e,signers:t}){return zr(r,[e,...t])}function Un({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Qs.generate().publicKey.toString()}){let o=new Pl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new js(o).serialize()).toString("base64").length<Zs}catch{return!1}}var Ur={time:0,data:void 0};async function sb(r){if(!Ur.data||(Date.now()-Ur.time)/1e3>30){let e=await r.getEpochInfo();return Ur={time:Date.now(),data:e},e}else return Ur.data}var Tl=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 Gr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Qs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof js&&(n=Tl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as ea,AddressLookupTableAccount as Yr}from"@solana/web3.js";import{PublicKey as Il}from"@solana/web3.js";import{getTransferFeeConfig as xl,unpackMint as Bl}from"@solana/spl-token";var Qi=ae("Raydium_accountInfo_util");async function It(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=ji(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=ji(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Qi.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"&&Qi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new Il(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Qi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function In(r,e,t){let n=await It(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}var Sl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Sl||{}),yb=1;async function bb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await In(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=Bl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=D(N({},a),{feeConfig:(o=xl(a))!=null?o:void 0})}return n}async function Zi({connection:r,address:e}){let t=await It(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ea(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Yr({key:s,state:Yr.deserialize(o.data)});n[s.toString()]=a,Hr[s.toString()]=a}return n}var Hr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Yr({key:new ea("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Yr.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 jr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Kl.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}=Xr(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!==Gn.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 Xn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Tn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),on([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Qr(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction: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 f;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{},y=p!=null?p:await Tn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Qr(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:d})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));on(b);let g=await this.signAllTransactions(b);if(l){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:d});A.push({txId:T,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:d});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Ie(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:Hr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Gn(d));let c=await Zi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new zn({payerKey:this.feePayer,recentBlockhash:i?Gn.default.toBase58():await Tn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Yn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async d=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=d||{};if(y&&(m.message.recentBlockhash=y),on([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction: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 y;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{};if(p&&s.forEach(f=>f.message.recentBlockhash=p),on(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:d});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:d});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,h=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=h.err?"error":"success"),m==null||m([...g]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendTransaction(f[g],{skipPreflight:d});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ie(c,["computeBudgetConfig"]),i=t?Xr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],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 Gn(f));if(u.length<12&&qn({instructions:p,payer:this.feePayer,signers:y})||qn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Xn().add(...i.instructions,...u)):s.push(new Xn().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);qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Xn().add(...i.instructions,...u)):s.push(new Xn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:p,recentBlockHash:d,skipPreflight:y=!0}=l||{},f=d!=null?d:await Tn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),on(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let P of s){let A=await Qr(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,P)=>await Qr(this.connection,g,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[P]}),p==null||p([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),p==null||p([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Ie(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:Hr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Gn(g));let c=await Zi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Xr(t):{instructions:[],instructionTypes:[]},m=await Tn(this.connection),p=this.signers.reduce((g,P)=>D(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&&Un({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Un({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new Yn(T))}else{let T=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new Yn(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>p[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new Yn(A))}else{let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new Yn(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:T=!0}=g||{};if(d.map(async(B,x)=>{y[x].length&&B.sign(y[x]),h&&(B.message.recentBlockhash=h)}),on(d),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();if(d.forEach((K,M)=>{y[M].find(E=>E.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let M of d){let E=await this.connection.sendTransaction(M,{skipPreflight:T}),{lastValidBlockHeight:H,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:H,signature:E},"confirmed"),K.push(E)}return{txIds:K,signedTxs:d}}return{txIds:await Promise.all(d.map(async K=>{let M=await this.connection.sendTransaction(K,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:M},"confirmed"),M})),signedTxs:d}}if(this.signAllTransactions){let B=await this.signAllTransactions(d);if(P){let x=0,K=[],M=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:T});K.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...K]),x++,this.connection.onSignature(E,H=>{let v=K.findIndex(j=>j.txId===E);v>-1&&(K[v].status=H.err?"error":"success"),A==null||A([...K]),H.err||M()},"processed"),this.connection.getSignatureStatus(E)};return M(),{txIds:[],signedTxs:B}}else{let x=[];for(let K=0;K<B.length;K+=1){let M=await this.connection.sendTransaction(B[K],{skipPreflight:T});x.push(M)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var gt=class{constructor(e){this._owner=e}get publicKey(){return gt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return gt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return gt.isKeyPair(this._owner)}get isPublicKey(){return gt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!gt.isKeyPair(e)}};function ji(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Nb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Mb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function _b(r){return[...new Set(r)]}var ta=r=>typeof r=="number",na=r=>r?new Date(r):new Date,Cl=r=>na(r).getTime();function ra(r,e,t){let n=ta(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ia(r,e,t){let n=ta(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Eb(r,e){let n=Cl(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 na(n)}import{PublicKey as me}from"@solana/web3.js";var $i=new me("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ji=new me("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xn=new me("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Rl=new me("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ll=new me("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Zr=new me("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),eo=new me("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ol=new me("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nl=new me("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ml=new me("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wb=new me("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),_l=new me("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Vl=new me("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),El=new me("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fl=new me("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),vl=new me("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Wl=new me("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dl=new me("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ql=new me("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ul=new me("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Gl=new me("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Hn={IDO_PROGRAM_ID_V1:_l,IDO_PROGRAM_ID_V2:Vl,IDO_PROGRAM_ID_V3:El,IDO_PROGRAM_ID_V4:Fl},Db={AMM_V4:eo,AMM_STABLE:Ol,CLMM_PROGRAM_ID:Nl,FARM_PROGRAM_ID_V3:$i,FARM_PROGRAM_ID_V5:Ji,FARM_PROGRAM_ID_V6:xn,OPEN_BOOK_PROGRAM:Ll,SERUM_PROGRAM_ID_V3:Zr,UTIL1216:Rl,Router:Ml,CREATE_CPMM_POOL_PROGRAM:vl,CREATE_CPMM_POOL_AUTH:Wl,CREATE_CPMM_POOL_FEE_ACC:Dl},qb={SERUM_MARKET:me.default,OPENBOOK_MARKET:new me("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:me.default,FarmV3:new me("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new me("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new me("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new me("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new me("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new me("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new me("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ql,CREATE_CPMM_POOL_AUTH:Ul,CREATE_CPMM_POOL_FEE_ACC:Gl,FEE_DESTINATION_ID:new me("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Xl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";function be(r,e,t){return oe([r.toBuffer(),(t!=null?t:zl).toBuffer(),e.toBuffer()],new Xl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var xt=1e4;function Qb(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===xt){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(xt)),new Le(xt-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(xt)),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(xt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new 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===xt){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(xt)),new Le(xt-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(xt)),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(xt)),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 to=(t=>(t.ALL="all",t.Strict="strict",t))(to||{}),oa=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(oa||{});var We={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},yg=N({},We);var sa="ray_tab_hash",no="ray_req_hash",Yl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(sa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(sa,r)),r},$r=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Ie(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(no)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(D(N({},t),{time:Date.now(),session:Yl()}));try{localStorage.setItem(no,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(no,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return $r(D(N({},t),{logCount:r,removeLastLog:!0}))}};var Bn=ae("Raydium_Api"),ro=new Map;async function _g(r,e,t=1e3){let n;for(;n==null;)try{Bn.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){Bn.error(`Request ${r} failed, retry after ${t} ms`,i),await zs(t)}return n}var Jr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Hl.create({baseURL:this.urlConfigs.BASE_HOST||We.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Bn.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Bn.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&&$r({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),Bn.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&&$r({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),Bn.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||We.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||We.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(await this.api.get(this.urlConfigs.CHAIN_TIME||We.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||We.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||We.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||We.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||We.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||We.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||We.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>ro.has(s)?(n.push(ro.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||We.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{ro.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&kn(t).toBase58(),n&&n!=="undefined"?kn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||We.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||We.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||We.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||We.CHECK_AVAILABILITY)).data}};import{merge as Dp}from"lodash";var ei="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",aa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as wo,TOKEN_PROGRAM_ID as jt,AccountLayout as Kn,TOKEN_2022_PROGRAM_ID as id}from"@solana/spl-token";import{PublicKey as ai,SystemProgram as od}from"@solana/web3.js";var io=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Be=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new jr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(io(e))}logInfo(...e){this.logger.info(io(e))}logAndCreateError(...e){let t=io(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as $m,createCloseAccountInstruction as Jm,createTransferInstruction as ed,TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";import{PublicKey as td,SystemProgram as nd}from"@solana/web3.js";import rd from"bn.js";import{PublicKey as Ta,Keypair as Hm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qm}from"@solana/spl-token";import jm from"bn.js";import{PublicKey as Wm}from"@solana/web3.js";import fa,{isBN as ya}from"bn.js";import{bits as Ql,BitStructure as jl,blob as Zl,Blob as $l,cstr as Jl,f32 as em,f32be as tm,f64 as nm,f64be as rm,greedy as im,Layout as om,ns64 as sm,ns64be as am,nu64 as um,nu64be as cm,offset as lm,s16 as mm,s16be as dm,s24 as pm,s24be as fm,s32 as ym,s32be as bm,s40 as gm,s40be as wm,s48 as Am,s48be as Pm,s8 as km,seq as hm,struct as Hg,Structure as Tm,u16 as Im,u16be as xm,u24 as Bm,u24be as Sm,u32 as Km,u32be as Cm,u40 as Rm,u40be as Lm,u48 as Om,u48be as Nm,u8 as Mm,UInt as _m,union as Vm,Union as Em,unionLayoutDiscriminator as Fm,utf8 as vm}from"@solana/buffer-layout";var Qn=om,ua=Tm,ca=Em,Qg=jl,oo=_m,la=$l,jg=im,ti=Mm,Bt=Im,Zg=Bm,jn=Km,$g=Rm,Jg=Om,ma=um,ew=xm,tw=Sm,nw=Cm,rw=Lm,iw=Nm,ow=cm,sw=km,aw=mm,uw=pm,De=ym,cw=gm,lw=Am,mw=sm,dw=dm,pw=fm,fw=bm,yw=wm,bw=Pm,gw=am,ww=em,Aw=tm,Pw=nm,kw=rm;var da=hm,pa=Vm,hw=Fm,fe=Zl,Tw=Jl,Iw=vm,so=Ql,ao=lm;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=fe(t),this.signed=n}decode(t,n=0){let i=new fa(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 fa(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},ni=class extends Qn{constructor(t){super(8,t);this._lower=so(jn(),!1),this._upper=so(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 _(r){return new oo(1,r)}function ze(r){return new oo(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function ba(r){return new an(1,!0,r)}function ri(r){return new an(8,!0,r)}function ga(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 S(r){return new _t(fe(32),e=>new Wm(e),e=>e.toBuffer(),r)}var uo=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=ti()}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 Cw(r,e){return new uo(r,e)}function qe(r){return new _t(ti(),Dm,qm,r)}function Dm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function qm(r){return r?1:0}function Rw(r,e){let t=jn("length"),n=L([t,q(r,ao(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Lw(r,e,t){let n=L([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 Um(r){let e=jn("length"),t=L([e,fe(ao(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Ow(r){return new _t(Um(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Nw(r,e){let t=pa(ti(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Mw(r,e,t){let n=L([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var co=class extends ua{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new co(r,e,t)}var lo=class extends ca{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 _w(r,e,t){return new lo(r,e,t)}var mo=class extends la{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Vw(r){return new mo(r)}function q(r,e,t){let n,i=typeof e=="number"?e:ya(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ya(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 da(r,i,t)}var Yt=L([S("mint"),S("owner"),w("amount"),ze("delegateOption"),S("delegate"),_("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),S("closeAuthority")]);function Gm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function po(r,...e){if(!Gm(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 fo(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 wa(r,e){po(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var oi=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),wt=(r,e)=>r<<32-e|r>>>e;var Uw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Xm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function yo(r){return typeof r=="string"&&(r=Xm(r)),po(r),r}var ii=class{clone(){return this._cloneInto()}},Gw={}.toString;function Aa(r){let e=n=>r().update(yo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zm(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 Pa=(r,e,t)=>r&e^~r&t,ka=(r,e,t)=>r&e^r&t^e&t,si=class extends ii{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=oi(this.buffer)}update(e){fo(this);let{view:t,buffer:n,blockLen:i}=this;e=yo(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=oi(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){fo(this),wa(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;zm(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=oi(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 Ym=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]),Ht=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qt=new Uint32Array(64),bo=class extends si{constructor(){super(64,32,8,!1),this.A=Ht[0]|0,this.B=Ht[1]|0,this.C=Ht[2]|0,this.D=Ht[3]|0,this.E=Ht[4]|0,this.F=Ht[5]|0,this.G=Ht[6]|0,this.H=Ht[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)Qt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Qt[m-15],d=Qt[m-2],y=wt(p,7)^wt(p,18)^p>>>3,f=wt(d,17)^wt(d,19)^d>>>10;Qt[m]=f+Qt[m-7]+y+Qt[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=wt(a,6)^wt(a,11)^wt(a,25),d=l+p+Pa(a,u,c)+Ym[m]+Qt[m]|0,f=(wt(n,2)^wt(n,13)^wt(n,22))+ka(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(){Qt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ha=Aa(()=>new bo);var aA=ae("Raydium_Util");function Ia({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:be(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Ta.default,amount:new jm(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=Qm}){let t=Hm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Zm(r,t,e),seed:t}}function Zm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ha(n);return new Ta(i)}function go(r){let{mint:e,tokenAccount:t,owner:n,programId:i=Sn}=r;return $m(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=Sn}=r;return Jm(e,t,i,n,o)}async function St(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 rd(a)),c=Ye({fromPublicKey:i,programId:Sn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[nd.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:Sn}),go({mint:new td(Me.address),tokenAccount:c.publicKey,owner:o,programId:Sn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Zn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=Sn}){return ed(r,e,t,BigInt(String(n)),i,o)}var $n=class extends Be{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return be(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:jt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:id},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Ia({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=jt,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 ai(t.tokenProgram||jt),m=this.getAssociatedTokenAccount(n,new ai(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=wo(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(V.CreateATA);else if(!(P.owner.equals(l)&&Kn.decode(P.data).mint.equals(n)&&Kn.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(V.CreateATA);if(n.equals(te)&&i.amount){let P=await St({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(Zn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:jt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await St({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(Kn.span),A=od.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Kn.span,programId:l});return d.instructions.push(A,go({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(V.CreateAccount),d.instructionTypes.push(V.InitAccount),u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=jt,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 wo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[V.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new ai(te).equals(o)){let d=await St({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=wo(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(jt)&&Kn.decode(f.data).mint.equals(o)&&Kn.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:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=jt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ai(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Ie(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=Ie(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Bd}from"@solana/spl-token";import{PublicKey as he,SystemProgram as Sd}from"@solana/web3.js";import{PublicKey as La}from"@solana/web3.js";var Ao=L([_("instruction")]),Po=L([_("instruction")]),sd=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),ad=L([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),ud=L([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),fe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),cd=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(sd,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),xa=new Proxy(ad,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ba=new Proxy(ud,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),Jn=new Proxy(cd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(N({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ld=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),ko=L([_("instruction"),w("nonce"),q(ld,5,"rewardTimeInfo")]),ho=L([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),To=L([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),vA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),er=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),WA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Sa=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Ka=L([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),$e=L([_("instruction"),w("amount")]),md=L([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ba("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),Ca=L([fe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(md,4,"votingMints"),ri("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),dd=L([ri("startTime"),ri("endTime"),_("kind"),q(_(),15,"reserved")]),pd=L([q(dd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),qe("isUsed"),qe("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),Ra=L([fe(8),S("voterAuthority"),S("registrar"),q(pd,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var HA=ae("Raydium_farm_config"),Oa=new La("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Na=new La("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Ma={3:xa,5:Ba,6:Jn},_a={3:er,5:Sa,6:Ka},Io=r=>[3,5,6].indexOf(r)!==-1,xo=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},At={[$i.toString()]:3,[Ji.toString()]:5,[xn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as bd,SYSVAR_CLOCK_PUBKEY as rr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as gd,TOKEN_PROGRAM_ID as ot,ASSOCIATED_TOKEN_PROGRAM_ID as wd}from"@solana/spl-token";import ci from"bn.js";function Bo(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function So(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Ko(r,e){return oe([e.toBuffer()],r)}function Co(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ro(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Lo(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var tr=ae("Raydium.farm.util");function nr({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 Va=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Ea(r){return{isSet:new nt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Oo(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function ui(r){let e=_a[r];return e||tr.logWithError("invalid version",r),e}function fd(r){let e=Ma[r];return e||tr.logWithError("invalid version",r),e}function yd(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 mP({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=ye(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 In(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=fd(d);(!b||!b.data||b.data.length!==P.span)&&tr.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)&&tr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=ui(d);b&&b.data&&(b.data.length!==P.span&&tr.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=yd(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=D(N({},c[p].wrapped),{pendingRewards:b})}return c}function dP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ra(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ia(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 No(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ca.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=Ra.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var Ad=ae("Raydium_farm_instruction"),ir={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Fa(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Ad.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ao.span);Ao.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:bd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function va(r){var n;let e=Buffer.alloc(ko.span);ko.encode({instruction:0,nonce:new ci(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Ei,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:V.FarmV6Create}}function Wa(r){let e=Buffer.alloc(Po.span);Po.encode({instruction:5},e);let t=[k({pubkey:ot,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function Pd(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Fr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...ir.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function kd(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...ir.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function hd(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Fr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...ir.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function Td(r,e,t,n,i,o){let s=L([_("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 Id(r,e,t,n,i,o,s,a){let u=L([_("voterBump"),_("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:Fr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...ir.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function xd(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),ze("periods"),qe("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:ot,isSigner:!1,isWritable:!1},{pubkey:wd,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([...ir.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:d,programId:r,data:f})}async function CP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Bo(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=er.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new ci(0)))throw Error("user do not has new stake amount");let y=So(e,a).publicKey,f=Ko(e,a).publicKey,{publicKey:b,nonce:g}=Co(n,c,s),P=be(b,y,u).publicKey,{publicKey:A,nonce:h}=Ro(n,c,s),T=Lo(t,i,o,s).publicKey,I=[],B=be(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(gd(s,B,s,y)),await r.getAccountInfo(b)===null){let H=Td(t,i,s,o,s,T);I.push(H,Id(n,c,b,A,s,s,g,h))}let{index:M,isInit:E}=await No(r,c,b,y);return E||I.push(xd(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(Pd(n,c,b,P,B,s,l,a,y,f,e,M,d),kd(n,c,b,A)),I}async function RP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Bo(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=er.decode(m.data);if(p.voteLockedBalance.eq(new ci(0)))throw Error("user has vote locked balance = 0");let d=So(e,a).publicKey,y=Ko(e,a).publicKey,{publicKey:f}=Co(n,c,s),b=be(f,d,u).publicKey,{publicKey:g}=Ro(n,c,s),P=Lo(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await No(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(hd(n,c,f,s,P,g,b,be(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function Mo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(ho.span);ho.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[k({pubkey:ot,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:n.programId,keys:s,data:o})}function _o({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(To.span);To.encode({instruction:4,isSet:new ci(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Ei,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 LP(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:ot,isWritable:!1}),...c?[k({pubkey:un.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey: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:rr,isWritable:!1}),k({pubkey:ot,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 or(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:ot,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey: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 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: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:rr,isWritable:!1}),k({pubkey:ot,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 ar(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:rr,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Da(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:rr,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function qa(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:rr,isWritable:!1}),k({pubkey:ot,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 Ua(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:ot,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey: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 ur=class extends Be{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Oo(D(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=xn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new he(e.lpMint.address),lockInfo:{lockMint:Oa,lockVault:Na},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(Jn.span);u.addInstruction({instructions:[Sd.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Jn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=Va({programId:new he(a.programId),poolId:l.publicKey}),y=nr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let h of a.rewardInfos){h.openTime>=h.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",h.openTime.toString()),isNaN(Zt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(Ea(h));let{rewardPubKey:T,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:h,payer:c});I&&u.addInstruction(I),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=h.mint.equals(Ne)?new he(Me.address):h.mint;b.push({rewardMint:B,rewardVault:nr({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:T})}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=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new he(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new he(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:[Mo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[V.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ne)?new he(Me.address):m.mint,d=a.rewardInfos.findIndex(A=>new he(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=Mo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[V.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new he(Me.address):i.mint,m=nr({programId:new he(n.programId),poolId:new he(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:[_o({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[V.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new he(Me.address):l.mint,p=nr({programId:new he(n.programId),poolId:new he(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=_o({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:D(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[V.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=At[p];Io(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new he(n.programId),new he(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 v of this.scope.account.tokenAccounts)if(a){let j=be(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let h=b.lpMint,T=A[h.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let v of m){let j=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:se,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new he(v.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=se,ft&&P.addInstruction(ft)}A[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=ui(d).decode(x.data)),n.programId!==xn.toString()&&!B){let{instruction:v,instructionType:j}=Fa({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[v],instructionTypes:[j]})}let K=xo({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new he(v))},E=d===6?Ua(M):d===5?qa(M):Da(M),H={3:V.FarmV3Deposit,5:V.FarmV5Deposit,6:V.FarmV6Deposit};return P.addInstruction({instructions:[E],instructionTypes:[H[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=At[n.programId];Io(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 K of this.scope.account.tokenAccounts)if(u){let M=be(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&M.equals(K.publicKey)&&(b[K.mint.toString()]=K.publicKey)}else b[K.mint.toString()]=K.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=rt({programId:new he(n.programId),poolId:new he(n.id),owner:this.scope.ownerPubKey,version:d}),M=await this.scope.connection.getAccountInfo(K);M||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:M}),ui(d).decode(M.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:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new he(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,M&&f.addInstruction(M)}b[g.toString()]=A;let h=[];for(let K of p){let M=s&&K.mint.address===te.toString(),E=b[K.mint.address];if(!E){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new he(K.mint.address),notUseTokenAccount:M,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});E=H,v&&f.addInstruction(v)}b[K.mint.address]=E,h.push(E)}let T=xo({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new he(K))},B=d===6?or(I):d===5?sr(I):ar(I),x={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new he(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 St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Oo(D(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new F(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:[Bd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=Wa({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=be(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=At[f],h=b.address,T=n&&h===te.toString(),I=m[h];if(!I){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new he(h),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:o,checkCreateATAOwner:s});I=H,v&&l.addInstruction(v)}m[h.toString()]=I;let B=[];for(let H of g){let v=n&&H.mint.address===te.toString(),j=m[H.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new he(H.mint.address),notUseTokenAccount:v,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[H.mint.address]=j,B.push(j)}let x=d[P],K={amount:Ke,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new he(H))},M=A===6?or(K):A===5?sr(K):ar(K),E={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};l.addInstruction({instructions:[M],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as it}from"@solana/web3.js";import{NATIVE_MINT as xu,TOKEN_PROGRAM_ID as gi}from"@solana/spl-token";var ek=L([ze("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),ze("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as Kd}from"@solana/web3.js";import{MintLayout as Ga,TOKEN_PROGRAM_ID as Cd}from"@solana/spl-token";var uk=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new Kd(e));return!t||t.data.length!==Ga.span?void 0:Ga.decode(t.data)},ck=({mint:r,decimals:e,programId:t=Cd,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}},Xa=r=>new pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),lk=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Ie(o,["amount","isRaw","name"]);return new Te(new pe({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function mk(r){return r.address===Tt.address?Me:r}function dk(r){return r.address===Me.address?Tt:r}import{TOKEN_PROGRAM_ID as cr,ASSOCIATED_TOKEN_PROGRAM_ID as Gd}from"@solana/spl-token";import{PublicKey as ge,TransactionInstruction as Et,SystemProgram as qo,SYSVAR_RENT_PUBKEY as Xd}from"@solana/web3.js";var Vo=L([_("instruction"),w("amountIn"),w("minAmountOut")]),Eo=L([_("instruction"),w("maxAmountIn"),w("amountOut")]),Ik=L([_("instruction"),_("nonce")]),Fo=L([_("instruction"),_("nonce"),w("startTime")]),Rd=L([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),w("lpReserve"),q(w(),3,"padding")]),Ld=L([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(w(),64,"padding")]),vo=L([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Wo=L([_("instruction"),w("amountIn")]),xk={4:Rd,5:Ld},za=L([w("fee")]);import{PublicKey as Od}from"@solana/web3.js";var Rn=new Od("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Nd=L([w("x"),w("y"),w("price")]),Md=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Nd,ln,"DataElement")]);function _d(r,e){return[0,ln-2]}function Vd(r){return[0,ln-2]}function Ed(r){return[0,ln-2]}function Fd(r,e,t){let[n,i]=_d(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 Do(r,e,t){let[n,i,o]=Fd(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 Ya(r,e,t){return e*t/r.multiplier}function vd(r,e){let[t,n]=Vd(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 Wd(r,e){let[t,n]=Ed(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 Ha(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 Dd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Wd(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 qd(r,e){let t=Ha(r,e,0,!1);return t[3]?t[0]:0}function Qa(r,e,t,n){let i=Do(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,p]=Ha(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ya(r,d,i)}}function ja(r,e,t,n){let i=Do(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,p]=Dd(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ya(r,d,i)}}function Ud(r){let e=Md.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 Za(r,e,t,n){let i=qd(r,cn(r,e,Do(r,e,t)))/r.multiplier;return n?i:1/i}var Cn=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(Rn);e&&(this._layoutData=Ud(e==null?void 0:e.data))}}};var $a=ae("Raydium_liquidity_instruction");function Ja(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"?Ke:Us},a);let u=[k({pubkey:cr,isWritable:!1}),k({pubkey:new ge(e.id)}),k({pubkey:new ge(t.authority),isWritable:!1}),k({pubkey:new ge(t.openOrders),isWritable:!1}),k({pubkey:new ge(t.targetOrders)}),k({pubkey:new ge(e.lpMint.address)}),k({pubkey:new ge(t.vault.A)}),k({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Rn})),u.push(k({pubkey:new ge(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 ge(t.marketEventQueue),isWritable:!1})),new Et({programId:new ge(e.programId),keys:u,data:a})}function Uo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ye(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Wo.span);Wo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:cr,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:Rn})):(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 eu({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:h,pcAmount:T,ammConfigId:I,feeDestinationId:B}){let x=L([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:cr,isSigner:!1,isWritable:!1},{pubkey:Gd,isSigner:!1,isWritable:!1},{pubkey:qo.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:B,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}],M=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:T},M),{instruction:new Et({keys:K,programId:r,data:M}),instructionType:V.AmmV4CreatePool}}function Dk(r){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return new Et({programId:new ge(r.programId),keys:n,data:t})}function zd({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ye(r),s=Buffer.alloc(Vo.span);Vo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:cr,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:Rn})),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 Yd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ye(r),s=Buffer.alloc(Eo.span);Eo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:qo.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:Rn})),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 li(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 zd(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Yd(D(N({},a),{maxAmountIn:i,amountOut:o}),t);$a.logWithError("invalid params","params",r)}throw $a.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function qk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Fo.span);Fo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=ye(r),o=[k({pubkey:cr,isWritable:!1}),k({pubkey:qo.programId,isWritable:!1}),k({pubkey:Xd,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 tu({poolKeys:r}){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new ge(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ue,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as gu}from"@solana/spl-token";import{PublicKey as W,TransactionInstruction as Pt,SystemProgram as Ln,Keypair as Zo}from"@solana/web3.js";import wu from"bn.js";import ip from"bn.js";function nu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Gk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function Xk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function mi(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Go(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Xo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function lr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function ru(r,e){return lr(r,e)?null:Go(r,e)}function iu(r,e){return lr(r,e)?null:Xo(r,e)}var Hd=Buffer.from("amm_config","utf8"),Qd=Buffer.from("pool","utf8"),jd=Buffer.from("pool_vault","utf8"),Zd=Buffer.from("pool_reward_vault","utf8"),ou=Buffer.from("position","utf8"),$d=Buffer.from("tick_array","utf8"),Jd=Buffer.from("operation","utf8"),ep=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Qk(r,e){return oe([Hd,nu(e)],r)}function su(r,e,t,n){return oe([Qd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function zo(r,e,t){return oe([jd,e.toBuffer(),t.toBuffer()],r)}function au(r,e,t){return oe([Zd,e.toBuffer(),t.toBuffer()],r)}function we(r,e,t){return oe([$d,e.toBuffer(),mi(t)],r)}function mn(r,e,t,n){return oe([ou,e.toBuffer(),mi(t),mi(n)],r)}function ct(r,e){return oe([ou,e.toBuffer()],r)}function di(r){return oe([Buffer.from("metadata","utf8"),Pn.toBuffer(),r.toBuffer()],Pn)}function mr(r){return oe([Jd],r)}function lt(r,e){return oe([ep,e.toBuffer()],r)}import Kt from"bn.js";var de=new Kt(0),st=new Kt(1),Ft=new Kt(-1),at=new Kt(1).shln(64),pi=new Kt(1).shln(128),Yo=at.sub(st),dr=64,uu=pi.subn(1),He=-443636,Je=-He,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),cu=16,lu="59543866431248",mu="184467440737095516",du="15793534762490258745",fi=new Kt(10).pow(new Kt(6)),tp=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(tp||{}),$k={[500]:10,[3e3]:60,[1e4]:200},Jk={version:6,liquidity:de,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:de,feeGrowthGlobalX64B:de,protocolFeesTokenA:de,protocolFeesTokenB:de,swapInAmountTokenA:de,swapOutAmountTokenB:de,swapInAmountTokenB:de,swapOutAmountTokenA:de,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},pu={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:[]},eh=new Kt("18446744073700000000");var np=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(np/2));for(let d=0;d<l.length;d++){let{publicKey:y}=we(t,n,l[d]);u.push(y)}let m=(await It(e,u)).map(d=>d!==null?pr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=D(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}=we(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let 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}=we(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(G.checkIsOutOfBoundary(e)){if(e>Je)return!1;let n=G.getTickArrayStartIndexByTick(He,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 Re from"bn.js";var Ho=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=ru(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=iu(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)}}}},fr=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<=He)throw Error(`extensionTickBoundary check error: ${n}, ${He}`);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=lr(512,u)?null:Go(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=lr(512,u)?null:Xo(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 yr=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,at),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,at),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,at),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,at),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=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Pe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Pe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Pe(new Lt(new F(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Pe(new Lt(new F(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 fu}from"@solana/spl-token";var Qe=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}=we(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}=Qe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?fr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=we(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=we(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=fr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<He||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=D(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(de)){s.push(d);continue}let y=new Re(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,at),A=d.rewardTotalEmissioned.add(P);s.push(D(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<He&&(n=le.getArrayStartIndex(He,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 In(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=yu.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}=we(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await In(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=pr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ct(d,p).publicKey);let l=await It(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=bi.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:h}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),T=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:h,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=>D(N({},x),{pendingReward:new Re(0)})),leverage:T,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=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}`]=B}if(o){let p=Object.values(m),d=await It(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]=pr.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}`,h=y[m[P].toString()],T=y[m[A].toString()],I=h.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await yr.GetPositionFees(f,g,I,B),M=await yr.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Re(0))?x:new Re(0),g.tokenFeeAmountB=K.gte(new Re(0))?K:new Re(0);for(let E=0;E<M.length;E++)g.rewardInfos[E].pendingReward=M[E].gte(new Re(0))?M[E]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new F(0)}){var M;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 F(0))?u=c?Ct.add(new Re(1)):Rt.sub(new Re(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Pe(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Qe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((M=p.fee)!=null?M:de),u),g=Pe(d,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new F(1).div(P),h=d.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),T=Pe(h,m,i,!1),I=c?e.currentPrice:new F(1).div(e.currentPrice),B=new F(A).sub(I).abs(),x=I,K=new ve(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:sn(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:K,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 pe(D(N({},u),{mint:u.address,isToken2022:u.programId===fu.toBase58()})),new pe(D(N({},c),{mint:c.address,isToken2022:c.programId===fu.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await Qe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(N({},p),{amount:new Te(l,p.amount),fee:p.fee===void 0?void 0:new Te(l,p.fee)}),I=D(N({},d),{amount:new Te(m,d.amount),fee:d.fee===void 0?void 0:new Te(m,d.fee)}),B=D(N({},y),{amount:new Te(m,y.amount),fee:y.fee===void 0?void 0:new Te(m,y.fee)}),x=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),K=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),M=new Te(l,A);return{realAmountIn:T,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:K,priceImpact:P,fee:M,remainingAccounts:h}}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[kn(e.mintA.address).toString()],p=i[kn(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=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),b=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new F(P.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(A.toString()).div(new F(10).pow(y)).mul(p.value)),B=new F(h.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(T.toString()).div(new F(10).pow(y)).mul(p.value)),x=B.div(I.add(B)).div(B),M=new F(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,H=e.rewardDefaultInfos.map(v=>{var se,ft;let j=v.mint.decimals,ee=i[v.mint.address];return u<((se=v.startTime)!=null?se:0)||u>((ft=v.endTime)!=null?ft:0)||!v.perSecond||!ee||j===void 0?0:new F(ee.value).mul(new F(v.perSecond).mul(E)).div(new F(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:M,rewardsApr:H,apr:M+H.reduce((v,j)=>v+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=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),p=Z.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=Pe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Re(new F(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,p,f,!a):new Re(0);else if(l.lte(p)){let A=ce.getLiquidityFromTokenAmountA(l,p,f,!a),h=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Re(0):ce.getLiquidityFromTokenAmountB(m,p,f);return Qe.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=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Pe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Pe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity: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=yi.decode(i.data),s=lt(e,new $t(n.id)).publicKey,a=await Qe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(N({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(N({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new F(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,h,T,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=Z.priceToSqrtPriceX64(new F(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[Pe(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Pe(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:de),g.amount.sub((I=g.fee)!=null?I:de));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(de)||(o=o.add(st)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(st)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(pi).sub(t).mod(pi)}};function Ee(r,e){return Qo(r.mul(e),64,256)}function rp(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Qo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(F.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(F.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln(dr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,st,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(dr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,st,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<He||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=uu.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.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=rp(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<cu;){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(lu)),p=Qo(m.sub(new re(mu)),64,128).toNumber(),d=Qo(m.add(new re(du)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.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=Z.getSqrtPriceX64FromTick(o);return Z.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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(dr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),st,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),at):$.mulDivFloor(n,t.sub(e),at)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,st,Yo):a.shrn(dr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Yo,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 F(u.toString()).mul(l).toFixed(0)),p=new re(new F(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,h,T;let c=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Pe(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Pe(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Pe(new re(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Pe(new re(new F(d.amountB.toString()).mul(p).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.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(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(st):Rt.sub(st)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(de),b={amountSpecifiedRemaining:p,amountCalculated:de,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,h=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Qe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");g=M.nextStartIndex;let{publicKey:E}=we(e,t,g);x=E,P=n[g],B=G.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<He?T.tickNext=He:T.tickNext>Je&&(T.tickNext=Je),T.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(T.tickNext);let K;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?K=y:K=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,K,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let M=B.liquidityNet;s&&(M=M.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,M)}h=T.tickNext!=b.tick&&!s&&P.startTickIndex===T.tickNext,b.tick=s?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let M=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);h=M!=b.tick&&!s&&P.startTickIndex===M,b.tick=M}++A}try{let{nextStartIndex:T,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(we(e,t,T).publicKey),d=T)}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(de);if(u){let l=$.mulDivFloor(i,fi.sub(new re(o.toString())),fi);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.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=Z.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),fi.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=we(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new ip(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=we(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<He||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=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}};var cT=L([fe(8),_("bump"),Bt("index"),S(""),ze("protocolFeeRate"),ze("tradeFeeRate"),Bt("tickSpacing"),q(w(),8,"")]),op=L([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),jo=L([fe(8),qe("initialized"),S("poolId"),q(op,1e3,"observations"),q(z(),5,"")]),sp=L([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),yi=L([fe(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),Bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),De("tickCurrent"),Bt("observationIndex"),Bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(sp,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")]),ap=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),bi=L([fe(8),_("bump"),S("nftMint"),S("poolId"),De("tickLower"),De("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ap,3,"rewardInfos"),q(w(),8,"")]),lT=L([fe(8),_("bump"),S("poolId"),De("tickLowerIndex"),De("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),up=L([De("tick"),ga("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),pr=L([fe(8),S("poolId"),De("startTickIndex"),q(up,_e,"ticks"),_("initializedTickCount"),q(_(),115,"")]),bu=L([fe(329),q(S(),100,"whitelistMints")]),yu=L([fe(8),S("poolId"),q(q(w(),8),Ho,"positiveTickArrayBitmap"),q(q(w(),8),Ho,"negativeTickArrayBitmap")]);var Au=ae("Raydium_Clmm"),kt={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]},Se=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Ln.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([...kt.createPool,...g]);return new Pt({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 W(o.address),new W(s.address)],y=[Ln.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(jo.span),space:jo.span,programId:n})],{publicKey:f}=su(n,a,p,d),{publicKey:b}=zo(n,f,p),{publicKey:g}=zo(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new W(o.programId||Ue),d,g,new W(s.programId||Ue),lt(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[V.CreateAccount,V.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,h,T,I,B,x,K,M){let E=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),_("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:gu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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 W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=Zo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,d,f),{publicKey:P}=we(p,d,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:h}=di(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,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 W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=Zo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,d,f),{publicKey:P}=we(p,d,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:h}=di(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,c,s,a,u,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[V.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,h,T,I,B,x,K,M){let E=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),_("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:gu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new wu(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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 W((await l(1))[0]);else{let x=Zo.generate();p.push(x),m=x.publicKey}let[d,y]=[new W(e.programId),new W(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,y,f),{publicKey:P}=we(d,y,b),{publicKey:A}=be(n.wallet,m,Ue),{publicKey:h}=di(m),{publicKey:T}=ct(d,m),{publicKey:I}=mn(d,y,i,o),B=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(t.mintA.address),new W(t.mintB.address),i,o,f,b,s,a,u,c,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:p,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=L([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...kt.closePosition,...u]);return new Pt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new W(e.programId),{publicKey:s}=be(n.wallet,i.nftMint,Ue),{publicKey:a}=ct(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:[V.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=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),qe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{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:Ue,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...kt.increaseLiquidity,...I]);return new Pt({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(u,c,l),{publicKey:d}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{publicKey:f}=ct(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 W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[V.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 W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(u,c,l),{publicKey:d}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{publicKey:f}=ct(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 W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[V.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=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),qe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{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:Ue,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:new wu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...kt.increaseLiquidity,...I]);return new Pt({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=L([z("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],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:Ue,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},...T],B=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:P},B);let x=Buffer.from([...kt.decreaseLiquidity,...B]);return new Pt({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 W(e.programId),new W(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(c,l,m),{publicKey:y}=we(c,l,p),{publicKey:f}=be(i.wallet,n.nftMint,u),{publicKey:b}=ct(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new W(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new W(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),P,o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[V.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=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),qe("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],h=[{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:Ue,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],T=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...kt.swap,...T]);return new Pt({keys:h,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 W(e.programId),new W(e.id)],[m,p]=[new W(t.vault.A),new W(t.vault.B)],[d,y]=[new W(e.mintA.address),new W(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new W(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,lt(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Ln.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([...kt.initReward,...f]);return new Pt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new W(e.programId),new W(e.id)],a=au(o,s,i.mint).publicKey,u=mr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new W(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:[V.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("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:Ue,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([...kt.setRewardEmissions,...f]);return new Pt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new W(e.programId),new W(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 W(t.rewardInfos[p].vault),c=new W(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Au.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=mr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new W(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[V.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([_("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:Ue,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([...kt.collectReward,...l]);return new Pt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new W(e.programId),new W(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new W(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Au.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:[V.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 W(e.programId),new W(e.id)],[m,p]=[new W(t.vault.A),new W(t.vault.B)],[d,y]=[new W(e.mintA.address),new W(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new W(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:[V.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as dp}from"@solana/web3.js";import{PublicKey as lp}from"@solana/web3.js";import Pu from"bn.js";var ku=new Pu(25),hu=new Pu(1e4),cp={4:3,5:3};var mp=ae("Raydium_liquidity_serum");function Tu({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=lp.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw mp.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 br from"bn.js";function Jo({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 pp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function fp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Iu({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}=fp({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=pp({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}=Tu({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:dp.default,configId:Jo({programId:a})}}var $o;async function WT({connection:r,poolKeysList:e,config:t}){$o||($o=new Cn({connection:r}),await $o.initStableModelLayout());let n=e.map(s=>tu({poolKeys:s}));return(await $s(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Js(s,"GetPoolData"),u=new br(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),p=new br(Mt(a,"pool_coin_amount")),d=new br(Mt(a,"pool_pc_amount")),y=new br(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 br(f)}})}import ut from"bn.js";var gr=class extends Be{constructor(t){super(t);this.stableLayout=new Cn({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 ut(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Xa(t[o?"mintB":"mintA"]),[u,c]=[new ut(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ut(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ut(new F(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,F.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()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let p=Ke;s.isZero()||(p=m==="base"?Dr(s.mul(c),u):Dr(s.mul(u),c)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let d=Dr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",d.toString());let f=new ve(new ut(1)).add(i).mul(p).quotient,b=new Te(a,p),g=new Te(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],h=[i.raw,o.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(P.reverse(),A.reverse(),h.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[K,M]=A,[E,H]=h,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Wt,se=Ie(Wt,["tokenAccount"]);j.addInstruction(se);let Cr=await l.handleTokenAccount({side:"in",amount:H,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ft}=Cr,_n=Ie(Cr,["tokenAccount"]);j.addInstruction(_n);let Vn=await l.handleTokenAccount({side:"out",amount:0,mint:new it(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Bi}=Vn,Si=Ie(Vn,["tokenAccount"]);return j.addInstruction(Si),j.addInstruction({instructions:[Ja({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:ft,lpTokenAccount:Bi,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:H,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5AddLiquidity:V.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn: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),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=Ie(B,["tokenAccount"]);b.addInstruction(h);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:T}=x,I=Ie(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Uo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.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=gi,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||be(this.scope.ownerPubKey,ee.accountInfo.mint,gi).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 ut(0)),A=t.mintA.address===pe.WSOL.mint.toString(),h=t.mintB.address===pe.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:gi,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||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:gi,mint:new it(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Wt of s.rewardInfos){let Cr=Wt.mint.address===pe.WSOL.mint.toString();if(b[Wt.mint.address])ee.push(b[Wt.mint.address]);else{let{account:Vn,instructionParams:fs}=await this.scope.account.getOrCreateTokenAccount({mint:new it(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Cr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Vn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),fs&&f.addInstruction(fs),ee.push(Vn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],ft={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ee},_n=At[s.programId],Bi=_n===6?or(ft):_n===5?sr(ft):ar(ft),Si={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[Bi],instructionTypes:[Si[_n]]})}let K=await this.getAmmPoolKeys(t.id),M=Uo({poolInfo:t,poolKeys:K,userKeys:{lpTokenAccount:g,baseTokenAccount:T,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity],lookupTableAddress:K.lookupTableAccount?[K.lookupTableAccount]:[]});let[E,H]=t.mintA.address===n.mintA.address?[T,B]:[B,T],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Se.openPositionFromBaseInstructions(D(N({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:H},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo: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 H;let b=c.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),g=c.useSOLBalance&&i.mint.equals(xu),P=c.useSOLBalance&&o.mint.equals(xu),A=this.createTxBuilder(),{account:h,instructionParams:T}=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(T||{});let{account:I,instructionParams:B}=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(B||{}),h===void 0||I===void 0)throw Error("you don't has some token account");let x=Iu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:M,instructionType:E}=eu(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:be(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[M],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=Jo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return za.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===eo.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=Za(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new F(1e6).div(x*1e6):y=new F(x*1e6).div(1e6)}let f=n,b=new ut(0),g=new ut(0);if(!f.isZero())if(d){g=zt(f.mul(ku),hu);let x=f.sub(g),K=m.add(x);b=p.mul(x).div(K)}else{g=f.mul(new ut(2)).div(new ut(1e4));let x=f.sub(g);l==="quote"?b=new ut(Qa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ut(ja(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ut(new F(b.toString()).mul(1-s).toFixed(0)),A=b,h=P,T=new F(b.toString()).div(new F(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(T=new F(b.toString()).div(f.sub(g).toString()));let I=y.sub(T).div(y).mul(100);return{amountOut:A,minAmountOut:h,currentPrice:y,executionPrice:T,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}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new it(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Ie(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new it(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Ie(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[li({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?V.AmmV4SwapBaseIn:V.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import mt from"bn.js";var wr=class extends Be{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 mt(new ue(i.address).toBuffer()).gt(new mt(new ue(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Se.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:D(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:[]}},pu),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(),[h,T]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(K||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),E=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:D(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(E),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:E.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:h}=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(h||{});let{account:T,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});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Se.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,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:h}=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(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,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:h}=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(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,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:h}=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,h&&p.addInstruction(h);let T=[];for(let K of t.rewardDefaultInfos){let M=i.useSOLBalance&&K.mint.address===te.toString(),E;if(K.mint.address===t.mintA.address)E=f;else if(K.mint.address===t.mintB.address)E=b;else{let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(K.mint.programId),mint:new ue(K.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});E=H,v&&p.addInstruction(v)}T.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:B.instructions,instructionTypes:[V.ClmmDecreasePosition]});let x=N({},B.address);if(i.closePosition){let K=await Se.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=N(N({},x),K.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=Se.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 mt(new F(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=Se.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 mt(new F(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=Se.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 mt(new F(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=Se.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 mt(new F(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=Se.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=Se.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=Se.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 F(0))?y=t.toString()===e.mintA.address?Ct.add(new mt(1)):Rt.sub(new mt(1)):y=Z.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(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?be(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.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:h}=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,h&&l.addInstruction(h)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:h}=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,h&&l.addInstruction(h)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===te.toString(),T=c[A.mint.address];if(!T){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});T=I,B&&l.addInstruction(B)}c[A.mint.address]=T,g.push(T)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let h=Se.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new mt(0),amountMinA:new mt(0),amountMinB:new mt(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(mr(e).publicKey);return t?bu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new mt(1))).map(s=>ct(new ue(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=bi.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new ue(e)),n=yi.decode(t.data),i=Z.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return D(N({},n),{currentPrice:i})}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as Ai,TOKEN_PROGRAM_ID as en,AccountLayout as Vu}from"@solana/spl-token";var yp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),bp=Buffer.from("amm_config","utf8"),gp=Buffer.from("pool","utf8"),wp=Buffer.from("pool_lp_mint","utf8"),Ap=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("observation","utf8");function kp(r){return oe([yp],r)}function hp(r,e){return oe([bp,xp(e)],r)}function Tp(r,e,t,n){return oe([gp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ip(r,e){return oe([wp,e.toBuffer()],r)}function Bu(r,e,t){return oe([Ap,e.toBuffer(),t.toBuffer()],r)}function wi(r,e){return oe([Pp,e.toBuffer()],r)}function xp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Su({programId:r,mintA:e,mintB:t}){let n=hp(r,0).publicKey,i=kp(r).publicKey,o=Tp(r,n,e,t).publicKey,s=Ip(r,o).publicKey,a=Bu(r,o,e).publicKey,u=Bu(r,o,t).publicKey,c=wi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Ar}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as es,TOKEN_2022_PROGRAM_ID as Ku,ASSOCIATED_TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";var Sp=ae("Raydium_cpmm"),Pr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=[{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:es,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Bp,isSigner:!1,isWritable:!1},{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new Ar({keys:T,programId:r,data:Buffer.from([...Pr.initialize,...I])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Sp.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new Ar({keys:b,programId:r,data:Buffer.from([...Pr.deposit,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Vs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new Ar({keys:b,programId:r,data:Buffer.from([...Pr.withdraw,...g])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new Ar({keys:g,programId:r,data:Buffer.from([...Pr.swapBaseInput,...P])})}function Nu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new Ar({keys:g,programId:r,data:Buffer.from([...Pr.swapBaseOutput,...P])})}import je from"bn.js";var Mu=L([fe(8),_("bump"),qe("disableCreatePool"),Bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),_u=L([fe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends Be{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=_u.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=Mu.decode(u.data))}return D(N({},i),{baseReserve:new je(Vu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new je(Vu.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=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,j;let p=i.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),d=new je(new Y(c.mintA.address).toBuffer()).lte(new je(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===Ai.toBase58(),A=i.useSOLBalance&&f.address===Ai.toBase58(),[h,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,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:K,instructionParams:M}=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(M||{}),B===void 0||K===void 0)throw Error("you don't has some token account");let E=Su({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[Cu(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,K,be(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((v=y.programId)!=null?v:en),new Y((j=f.programId)!=null?j:en),E.observationId,b,g,n)],instructionTypes:[V.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(N({},E),{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:D(N({},t),{mintAmountA:new F(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new F(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new F(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new F(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===Ai.toString(),A=t.mintB.address===Ai.toString(),h=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:B,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});h.addInstruction(x||{});let{account:K,instructionParams:M}=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});h.addInstruction(M||{}),!B&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:H}=ee,v=Ie(ee,["tokenAccount"]);h.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),H,B,K,new Y(j.vault.A),new Y(j.vault.B),T,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[V.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var H,v;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 je(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[p,d]=[Pe(c,t.mintA.extensions.feeConfig,m,!0),Pe(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],P=b.equals(te),A=g.equals(te),h,T,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=I,B&&f.addInstruction(B);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=x,K&&f.addInstruction(K),(!h||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let M=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});M||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(E.authority),new Y(t.id),M,h,T,new Y(E.vault.A),new Y(E.vault.B),b,g,new Y(t.lpMint.address),n,c.sub((H=p.fee)!=null?H:new je(0)),l.sub((v=d.fee)!=null?v:new je(0)))],instructionTypes:[V.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var h,T,x,K,M,E;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((h=t.mintA.programId)!=null?h:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T: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=Ie(I,["tokenAccount"]);l.addInstruction(b);let B=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}=B,P=Ie(B,["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?Ou(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((K=t.mintB.programId)!=null?K:en),m,p,wi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Nu(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((M=t.mintB.programId)!=null?M:en),new Y((E=t.mintA.programId)!=null?E:en),p,m,wi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?V.CpmmSwapBaseIn:V.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,h,T,I,B,x,K;let s=1-Number(n.toSignificant())/100,a=new je(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Pe(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new je(0)),[l,m]=[new je(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new je(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new je(new F(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(h=(A=u.fee)==null?void 0:A.toString())!=null?h: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:Ke,fee:void 0,expirationTime:void 0};c.isZero()||(f=Pe(Kp(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new je(1)).add(n),g=Pe(b.mul(f.amount.sub((T=f.fee)!=null?T:new je(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(K=(x=g.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function Kp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new je(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new je(1))),{amountA:i,amountB:o}}var hr=class extends Be{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(Ke)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Ke)?-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 St({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})]}),Zn({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 St({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:[Zn({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 Cp}from"@solana/spl-token";import{PublicKey as Rp,Transaction as ts,TransactionInstruction as Lp}from"@solana/web3.js";import Eu from"bn.js";var Ze=class extends Be{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 Eu(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 It(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(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new Eu(0))).filter(x=>!x).length!==3,I=o>A&&o<h&&g.status===1,B=T&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:B,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,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(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(pe.WSOL.mint),associatedOnly:u.mintAddress.equals(pe.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(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(pe.WSOL.mint),associatedOnly:m.mintAddress.equals(pe.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 zr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new ts().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new ts().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new ts().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Cp,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 Lp({keys:o,programId:e,data:a})}},dt=Ze;dt.CLAIMED_NUM=3,dt.POOL_LAYOUT=L([fe(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(L([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),dt.OWNER_LAYOUT=L([fe(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(L([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),dt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Rp(e)),dt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},dt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Tr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qu}from"@solana/spl-token";import Ir from"bn.js";import{TransactionInstruction as Np,SYSVAR_RENT_PUBKEY as Mp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fu}from"@solana/spl-token";import{createInitializeAccountInstruction as vu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as Wu}from"@solana/web3.js";function Op(r="accountFlags"){let e=new ni(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 ns=L([fe(5),Op("accountFlags"),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),fe(7)]);function _p({programId:r,marketInfo:e}){let t=L([_("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),Bt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Mp,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 Np({keys:n,programId:r,data:i})}async function Du({connection:r,wallet:e,marketInfo:t}){let n=new Wu,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:Fu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Fu}),vu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),vu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Wu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(ns.span),space:ns.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}),_p({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:[V.CreateAccount,V.CreateAccount,V.InitAccount,V.InitAccount]},{transaction:o,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.InitMarket]}]}var On=class extends Be{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:qu}),f=Ye({fromPublicKey:u,programId:qu}),b=0,g=new Ir(100);function P(){let K=new Ir(0);for(;;)try{return{vaultOwner:Tr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new Ir(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new Ir(Math.round(10**e.decimals*n)),I=new Ir(Math.round(n*10**t.decimals*i));if(T.eq(Ke))throw Error("lot size is too small");if(I.eq(Ke))throw Error("tick size or lot size is too small");let B=await Du({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:h,baseLotSize:T,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let K of B.slice(1,B.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Tr(e.mint),quoteMin:new Tr(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Tr(e.mint),quoteMin:new Tr(t.mint)}})}};import{PublicKey as Br}from"@solana/web3.js";import{PublicKey as Vp,TransactionInstruction as is,SYSVAR_CLOCK_PUBKEY as Ep}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as os}from"@solana/spl-token";var rs=L([_("instruction"),ma("amount")]),xr=L([_("instruction")]);function RB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Vp("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:os,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Wi,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(rs.span);return rs.encode({instruction:1,amount:Number(e)},i),new is({keys:n,programId:r,data:i})}function Pi({programId:r},e){let t=[{pubkey:os,isSigner:!1,isWritable:!1},{pubkey:Wi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(xr.span);return xr.encode({instruction:2},n),new is({keys:t,programId:r,data:n})}function ss(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(xr.span);xr.encode({instruction:2},s);let a=[{pubkey:os,isWritable:!1,isSigner:!1},{pubkey:Ep,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 is({programId:e.programId,keys:a,data:s})}import Uu from"bn.js";var Fp={[Hn.IDO_PROGRAM_ID_V1.toString()]:1,[Hn.IDO_PROGRAM_ID_V2.toString()]:2,[Hn.IDO_PROGRAM_ID_V3.toString()]:3,[Hn.IDO_PROGRAM_ID_V4.toString()]:4},Nn=class extends Be{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Fp[t.programId];a||this.logAndCreateError("invalid version",a);let u=ye(t),[c,l]=[!new Uu(e.coin).isZero(),!new Uu(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?[Pi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new Br(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Pi({programId:new Br(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Br(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Pi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new Br(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 Br(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[ss(D(N({},g),{side:"base"}))]:[],...l?[ss(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as vp}from"@solana/web3.js";import{MintLayout as Wp,TOKEN_2022_PROGRAM_ID as as,TOKEN_PROGRAM_ID as us}from"@solana/spl-token";var Sr=class extends Be{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Tt.address,Tt),this._mintGroup.official.add(Tt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,D(N({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Tt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new vp(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Wp.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 ki=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||"mainnet",this._owner=i?new gt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ur({scope:this,moduleName:"Raydium_Farm"}),this.account=new $n({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new gr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Sr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new hr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new wr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new dt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new On({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Nn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Dp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Jr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new ki(D(N({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(ei);return this._owner.publicKey}setOwner(e){return this._owner=e?new gt(e):void 0,this}get connection(){if(!this._connection)throw new Error(aa);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(ei),new Error(ei)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as ms,TOKEN_2022_PROGRAM_ID as cs}from"@solana/spl-token";import{PublicKey as pt,TransactionInstruction as ds,SystemProgram as Xu}from"@solana/web3.js";import ls from"bn.js";function VS(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1},{pubkey:new pt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new pt(t.id),isSigner:!1,isWritable:!0},{pubkey:new pt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ye(t);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=ye(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 pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ye(t);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 ds({keys:d,programId:r,data:y})}function ES(r,e,t,n,i,o,s,a,u,c){let l=L([_("instruction")]),m=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new pt(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=ye(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=ye(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 pt("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=ye(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 ds({keys:m,programId:r,data:p})}function Gu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=ye(e),u=s.mintA.address===t;return[{pubkey:new pt(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(cs)||a.mintB.programId.equals(cs)?[{pubkey:cs,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:lt(new pt(String(r.programId)),new pt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function qp(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=L([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1}];f.push(...Gu(a,c,o,t,n,d[0])),f.push(...Gu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new ds({keys:f,programId:r,data:b})}async function FS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ye(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(st):Rt.sub(st);return await Se.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 ls(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[li({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 ls(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?V.AmmV5SwapBaseIn:V.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:[qp(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 ls(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Yu from"bn.js";var ps=new Yu(1e6);function Up(r,e,t){return r.mul(e).add(t).sub(new Yu(1)).div(t)}function zu(r,e,t){return r.mul(e).div(t)}var hi=class{static tradingFee(e,t){return Up(e,t,ps)}static protocolFee(e,t){return zu(e,t,ps)}static fundFee(e,t){return zu(e,t,ps)}};import Kr from"bn.js";function Ti(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Gp(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=Ti(r,e);if(n.gt(Mn)){t=t.add(new Kr(1));let i=r.div(t);n=Ti(r,t),n.gt(Mn)&&(i=i.add(new Kr(1)))}return[t,e]}var Mn=new Kr(0),Ii=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Gp(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 Ti(e.mul(n),t).gt(Mn)&&s.gt(Mn)&&(s=s.add(new Kr(1))),Ti(e.mul(i),t).gt(Mn)&&a.gt(Mn)&&(a=a.add(new Kr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Hu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Hu||{}),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=hi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ii.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={[Zr.toBase58()]:3},Zu={3:Zr};var Xp=L([fe(5),fe(8),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),fe(7)]),$u={3:Xp};import{PublicKey as Ju}from"@solana/web3.js";var xi=ae("Serum"),ec=class{static getProgramId(e){let t=Zu[e];return t||xi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||xi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=$u[e];return t||xi.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=Ju.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return xi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ju.default,nonce:i}}};var OK=r=>r;export{yb as ACCOUNT_TYPE_SIZE,Db as ALL_PROGRAM_ID,Hd as AMM_CONFIG_SEED,Ol as AMM_STABLE,eo as AMM_V4,df as ANAMint,We as API_URLS,Sl as AccountType,cT as AmmConfigLayout,Jr as Api,cu as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,Py as BN_100,ky as BN_1000,hy as BN_10000,Ay as BN_FIVE,Us as BN_ONE,nn as BN_TEN,wy as BN_THREE,gy as BN_TWO,Ke as BN_ZERO,Qg as BitStructure,la as Blob,Nl as CLMM_PROGRAM_ID,Wi as CLOCK_PROGRAM_ID,Wl as CREATE_CPMM_POOL_AUTH,Dl as CREATE_CPMM_POOL_FEE_ACC,vl as CREATE_CPMM_POOL_PROGRAM,wr as Clmm,Se as ClmmInstrument,Ii as ConstantProductCurve,Mu as CpmmConfigInfoLayout,hi as CpmmFee,_u as CpmmPoolInfoLayout,Dn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,qb as DEVNET_PROGRAM_ID,yg as DEV_API_URLS,Ul as DEV_CREATE_CPMM_POOL_AUTH,Gl as DEV_CREATE_CPMM_POOL_FEE_ACC,ql as DEV_CREATE_CPMM_POOL_PROGRAM,Nd as DataElement,pf as ETHMint,Ho as EXTENSION_TICKARRAY_BITMAP_SIZE,Oa as FARM_LOCK_MINT,Na as FARM_LOCK_VAULT,$i as FARM_PROGRAM_ID_V3,Ji as FARM_PROGRAM_ID_V5,xn as FARM_PROGRAM_ID_V6,At as FARM_PROGRAM_TO_VERSION,_a as FARM_VERSION_TO_LEDGER_LAYOUT,Ma as FARM_VERSION_TO_STATE_LAYOUT,Wb as FEE_DESTINATION_ID,fi as FEE_RATE_DENOMINATOR,ps as FEE_RATE_DENOMINATOR_VALUE,np as FETCH_TICKARRAY_COUNT,tp as Fee,ne as Fraction,Hn as IDO_ALL_PROGRAM,_l as IDO_PROGRAM_ID_V1,Vl as IDO_PROGRAM_ID_V2,El as IDO_PROGRAM_ID_V3,Fl as IDO_PROGRAM_ID_V4,Fr as INSTRUCTION_PROGRAM_ID,V as InstructionType,to as JupTokenType,hu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,cp as LIQUIDITY_VERSION_TO_SERUM_VERSION,xk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,lu as LOG_B_2_X32,mu as LOG_B_P_ERR_MARGIN_LOWER_X64,du as LOG_B_P_ERR_MARGIN_UPPER_X64,Hr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,oc as LogLevel,Ci as Logger,ns as MARKET_STATE_LAYOUT_V2,Xp as MARKET_STATE_LAYOUT_V3,$u as MARKET_VERSION_TO_STATE_LAYOUT,Zs as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,Je as MAX_TICK,An as MEMO_PROGRAM_ID,Vs as MEMO_PROGRAM_ID2,Pn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,He as MIN_TICK,Rn as MODEL_DATA_PUBKEY,ec as Market,$ as MathUtil,Yo as MaxU64,uu as MaxUint128,Ft as NEGATIVE_ONE,mf as NRVMint,st as ONE,Ll as OPEN_BOOK_PROGRAM,Jd as OPERATION_SEED,jo as ObservationInfoLayout,op as ObservationLayout,bu as OperationLayout,uo as OptionLayout,gt as Owner,rf as PAIMint,Zd as POOL_REWARD_VAULT_SEED,Qd as POOL_SEED,ep as POOL_TICK_ARRAY_BITMAP_SEED,jd as POOL_VAULT_SEED,ou as POSITION_SEED,ve as Percent,oa as PoolFetchType,yi as PoolInfoLayout,Qe as PoolUtils,bi as PositionInfoLayout,ap as PositionRewardInfoLayout,yr as PositionUtils,Xe as Price,lT as ProtocolPositionLayout,pi as Q128,at as Q64,nf as RAYMint,tt as RENT_PROGRAM_ID,ki as Raydium,sp as RewardInfo,Hu as RoundDirection,Gi as Rounding,Ml as Router,ju as SERUM_PROGRAMID_TO_VERSION,Zr as SERUM_PROGRAM_ID_V3,Zu as SERUM_VERSION_TO_PROGRAMID,sa as SESSION_KEY,Ne as SOLMint,Tt as SOL_INFO,ek as SPL_MINT_LAYOUT,of as SRMMint,no as STORAGE_KEY,Es as SYSTEM_PROGRAM_ID,Z as SqrtPriceMath,Cn as StableLayout,co as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,$d as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,$k as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,yu as TickArrayBitmapExtensionLayout,fr as TickArrayBitmapExtensionUtils,pr as TickArrayLayout,up as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,pe as Token,Te as TokenAmount,jr as TxBuilder,hn as TxVersion,dr as U64Resolution,eh as U64_IGNORE_RANGE,oo as UInt,sf as USDCMint,lf as USDHMint,af as USDTMint,Rl as UTIL1216,lo as Union,Ra as Voter,pd as VoterDepositEntry,dd as VoterLockup,Ca as VoterRegistrar,md as VoterVotingMintConfig,te as WSOLMint,ni as WideBits,_t as WrappedLayout,de as ZERO,vs as _100_PERCENT,k as accountMeta,iy as add,Xr as addComputeBudget,vo as addLiquidityLayout,Mw as array,Ao as associatedLedgerAccountLayout,so as bits,fe as blob,qe as bool,Oo as calFarmRewardAmount,Up as ceilDiv,qn as checkLegacyTxSize,Un as checkV0TxSize,ji as chunkArray,xr as claimLayout,Vt as closeAccountInstruction,Ei as commonSystemAccountMeta,Fa as createAssociatedLedgerAccountInstruction,ae as createLogger,za as createPoolFeeLayout,eu as createPoolV4InstructionV2,Ik as createPoolV4Layout,St as createWSolAccountInstructions,Tw as cstr,qf as currencyEquals,fl as decimalToFraction,Dm as decodeBool,ey as div,Dr as divCeil,$e as dwLayout,qm as encodeBool,_g as endlessRetry,ml as eq,ww as f32,Aw as f32be,Pw as f64,kw as f64be,To as farmAddRewardLayout,vA as farmLedgerLayoutV3_1,er as farmLedgerLayoutV3_2,WA as farmLedgerLayoutV5_1,Sa as farmLedgerLayoutV5_2,Ka as farmLedgerLayoutV6_1,Ea as farmRewardInfoToConfig,ko as farmRewardLayout,ho as farmRewardRestartLayout,ld as farmRewardTimeInfoLayout,xa as farmStateV3Layout,Ba as farmStateV5Layout,Jn as farmStateV6Layout,mP as fetchMultipleFarmInfoAndUpdate,WT as fetchMultipleInfo,bb as fetchMultipleMintInfos,oe as findProgramAddress,Vo as fixedSwapInLayout,Eo as fixedSwapOutLayout,zu as floorDiv,zr as forecastTransactionSize,Ud as formatLayout,Ye as generatePubKey,be as getATAAddress,Va as getAssociatedAuthority,Jo as getAssociatedConfigId,rt as getAssociatedLedgerAccount,nr as getAssociatedLedgerPoolAccount,pp as getAssociatedOpenOrders,Iu as getAssociatedPoolKeys,hp as getCpmmPdaAmmConfigId,Tp as getCpmmPdaPoolId,Su as getCreatePoolKeys,na as getDate,No as getDepositEntryIndex,ja as getDxByDyBaseIn,Qa as getDyByDxBaseIn,sb as getEpochInfo,ui as getFarmLedgerLayout,fd as getFarmStateLayout,fp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,vh as getLiquidityFromAmounts,ry as getMax,It as getMultipleAccountsInfo,In as getMultipleAccountsInfoWithCustomFlags,Zi as getMultipleLookupTableInfo,Qk as getPdaAmmConfigId,lt as getPdaExBitmapAccount,Ip as getPdaLpMint,di as getPdaMetadataKey,wi as getPdaObservationId,mr as getPdaOperationAccount,ct as getPdaPersonalPositionAddress,kp as getPdaPoolAuthority,su as getPdaPoolId,au as getPdaPoolRewardVaulId,zo as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,Bu as getPdaVault,Tn as getRecentBlockHash,Bo as getRegistrarAddress,Yl as getSessionKey,Za as getStablePrice,Cl as getTime,Qy as getTimestamp,Lo as getTokenOwnerRecordAddress,Qb as getTransferAmountFee,Pe as getTransferAmountFeeV2,Co as getVoterAddress,Ro as getVoterWeightRecordAddress,Ko as getVotingMintAuthority,So as getVotingTokenMint,Td as governanceCreateTokenOwnerRecord,jg as greedy,ll as gt,Jf as gte,ga as i128,Gk as i16ToBytes,mi as i32ToBytes,ri as i64,ba as i8,Fo as initPoolLayout,go as initTokenAccountInstruction,_p as initializeMarket,Nb as intersection,ia as isDateAfter,ra as isDateBefore,yl as isDecimal,ny as isMeaningfulNumber,ta as isNumber,Io as isValidFarmVersion,lr as isZero,ye as jsonInfo2PoolKeys,dP as judgeFarmType,Go as leadingZeros,iu as leastSignificantBit,Rd as liquidityStateV4Layout,Ld as liquidityStateV5Layout,Zf as lt,$f as lte,uf as mSOLMint,li as makeAMMSwapInstruction,Ja as makeAddLiquidityInstruction,_o as makeAddNewRewardInstruction,Pi as makeClaimInstruction,ss as makeClaimInstructionV4,Cu as makeCreateCpmmPoolInInstruction,va as makeCreateFarmInstruction,Du as makeCreateMarketInstruction,Wa as makeCreatorWithdrawFarmRewardInstruction,Ru as makeDepositCpmmInInstruction,Da as makeDepositInstructionV3,qa as makeDepositInstructionV5,Ua as makeDepositInstructionV6,CP as makeDepositTokenInstruction,LP as makeDepositWithdrawInstruction,qk as makeInitPoolInstructionV4,RB as makePurchaseInstruction,Mo as makeRestartRewardInstruction,tu as makeSimulatePoolInfoInstruction,Ou as makeSwapCpmmBaseInInInstruction,Nu as makeSwapCpmmBaseOutInInstruction,zd as makeSwapFixedInInstruction,Yd as makeSwapFixedOutInstruction,FS as makeSwapInstruction,Zn as makeTransferInstruction,Lu as makeWithdrawCpmmInInstruction,ar as makeWithdrawInstructionV3,sr as makeWithdrawInstructionV5,or as makeWithdrawInstructionV6,RP as makeWithdrawTokenInstruction,sn as minExpirationTime,Jk as mockCreatePoolInfo,pu as mockV3CreatePoolInfo,Md as modelDataInfoLayout,ru as mostSignificantBit,Yi as mul,Hi as notInnerObject,mw as ns64,gw as ns64be,ma as nu64,ow as nu64be,ao as offset,Eb as offsetDateTime,Cw as option,U as parseBigNumberish,tn as parseNumberInfo,Js as parseSimulateLogToJson,Mt as parseSimulateValue,Ia as parseTokenAccountResp,uk as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,S as publicKey,rs as purchaseLayout,ad as realFarmStateV3Layout,ud as realFarmStateV5Layout,cd as realFarmV6Layout,qs as recursivelyDecimalToFraction,Uo as removeLiquidityInstruction,Wo as removeLiquidityLayout,VS as route1Instruction,ES as route2Instruction,qp as routeInstruction,Nw as rustEnum,aw as s16,dw as s16be,uw as s24,pw as s24be,De as s32,fw as s32be,cw as s40,yw as s40be,lw as s48,bw as s48be,sw as s8,q as seq,jp as setLoggerLevel,dl as shakeFractionDecimal,$s as simulateMultipleInstruction,Dk as simulatePoolInfoInstruction,hl as simulateTransaction,zs as sleep,kn as solToWSol,mk as solToWSolToken,Yt as splAccountLayout,Xs as splitNumber,cf as stSOLMint,Ow as str,L as struct,ty as sub,Lw as tagged,Xi as tenExponential,pl as toBN,Tl as toBuffer,Gs as toFraction,jf as toFractionWithDecimals,Ty as toPercent,Xa as toToken,lk as toTokenAmount,ck as toTokenInfo,Iy as toTokenPrice,xy as toTotalPrice,Ds as toUsdCurrency,Xo as trailingZeros,vi as tryParsePublicKey,z as u128,Bt as u16,nu as u16ToBytes,ew as u16be,Zg as u24,tw as u24be,ze as u32,Xk as u32ToBytes,nw as u32be,$g as u40,rw as u40be,Jg as u48,iw as u48be,w as u64,_ as u8,_w as union,OK as unionArr,hw as unionLayoutDiscriminator,_b as uniq,yd as updateFarmPoolInfo,$r as updateReqHistory,Iw as utf8,Fi as validateAndParsePublicKey,xo as validateFarmRewards,Rw as vec,Um as vecU8,xd as voterStakeRegistryCreateDepositEntry,Id as voterStakeRegistryCreateVoter,Pd as voterStakeRegistryDeposit,kd as voterStakeRegistryUpdateVoterWeightRecord,hd as voterStakeRegistryWithdraw,dk as wSolToSolToken,Po as withdrawRewardLayout,Mb as xor,Vw as zeros};
1
+ var tc=Object.defineProperty,nc=Object.defineProperties;var rc=Object.getOwnPropertyDescriptors;var Rr=Object.getOwnPropertySymbols;var bs=Object.prototype.hasOwnProperty,gs=Object.prototype.propertyIsEnumerable;var ys=(r,e,t)=>e in r?tc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))bs.call(e,t)&&ys(r,t,e[t]);if(Rr)for(var t of Rr(e))gs.call(e,t)&&ys(r,t,e[t]);return r},D=(r,e)=>nc(r,rc(e));var Ie=(r,e)=>{var t={};for(var n in r)bs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Rr)for(var n of Rr(r))e.indexOf(n)<0&&gs.call(r,n)&&(t[n]=r[n]);return t};import Hl from"axios";import{get as Ki,set as ws}from"lodash";import As from"dayjs";import ic from"dayjs/plugin/utc";As.extend(ic);var oc=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(oc||{}),Ci=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 As().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}},Ri={},Ps={};function ae(r){let e=Ki(Ri,r);if(!e){let t=Ki(Ps,r);e=new Ci({name:r,logLevel:t}),ws(Ri,r,e)}return e}function jp(r,e){ws(Ps,r,e);let t=Ki(Ri,r);t&&(t.level=e)}import{PublicKey as wl}from"@solana/web3.js";import Al from"bn.js";import bl from"big.js";import Xt from"bn.js";import ke from"bn.js";var gn=9e15,Gt=1e9,Li="0123456789abcdef",Or="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Nr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Oi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-gn,maxE:gn,crypto:!1},Is,Ot,J=!0,_r="[DecimalError] ",Ut=_r+"Invalid argument: ",xs=_r+"Precision limit exceeded",Bs=_r+"crypto unavailable",Ss="[object Decimal]",Ge=Math.floor,Oe=Math.pow,sc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ac=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,uc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ks=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,bt=1e7,Q=7,cc=9007199254740991,lc=Or.length-1,Ni=Nr.length-1,O={toStringTag:Ss};O.absoluteValue=O.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),X(r)};O.ceil=function(){return X(new this.constructor(this),this.e+1,2)};O.clampedTo=O.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)};O.comparedTo=O.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};O.cosine=O.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=mc(n,Ns(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)};O.cubeRoot=O.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=Ge((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Ae(c.plus(l).times(a),c.plus(u),s+2,1),Fe(a.d).slice(0,s)===(t=Fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(X(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,X(n,r,m.rounding,e)};O.decimalPlaces=O.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ge(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(r){return Ae(this,new this.constructor(r))};O.dividedToIntegerBy=O.divToInt=function(r){var e=this,t=e.constructor;return X(Ae(e,new t(r),0,1,1),t.precision,t.rounding)};O.equals=O.eq=function(r){return this.cmp(r)===0};O.floor=function(){return X(new this.constructor(this),this.e+1,3)};O.greaterThan=O.gt=function(r){return this.cmp(r)>0};O.greaterThanOrEqualTo=O.gte=function(r){var e=this.cmp(r);return e==1||e===0};O.hyperbolicCosine=O.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/Er(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)};O.hyperbolicSine=O.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/Er(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)};O.hyperbolicTangent=O.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,Ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};O.inverseCosine=O.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()?yt(t,i,o):new t(0):new t(NaN):e.isZero()?yt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=yt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};O.inverseHyperbolicCosine=O.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)};O.inverseHyperbolicSine=O.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())};O.inverseHyperbolicTangent=O.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?X(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};O.inverseSine=O.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=yt(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)))};O.inverseTangent=O.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<=Ni)return s=yt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ni)return s=yt(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)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&Ge(this.e/Q)>this.d.length-2};O.isNaN=function(){return!this.s};O.isNegative=O.isNeg=function(){return this.s<0};O.isPositive=O.isPos=function(){return this.s>0};O.isZero=function(){return!!this.d&&this.d[0]===0};O.lessThan=O.lt=function(r){return this.cmp(r)<0};O.lessThanOrEqualTo=O.lte=function(r){return this.cmp(r)<1};O.logarithm=O.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?Mr(l,a+10):qt(r,a),u=Ae(s,n,a,1),En(u.d,i=m,p))do if(a+=10,s=qt(c,a),n=e?Mr(l,a+10):qt(r,a),u=Ae(s,n,a,1),!o){+Fe(u.d).slice(i+1,i+15)+1==1e14&&(u=X(u,m+1,0));break}while(En(u.d,i+=10,p));return J=!0,X(u,m,p)};O.minus=O.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=Ge(r.e/Q),l=Ge(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]=bt-1;--c[i],c[n]+=bt}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=Vr(c,t),J?X(r,a,u):r):new y(u===3?-0:0)};O.modulo=O.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=Ae(t,r.abs(),0,3,1),e.s*=r.s):e=Ae(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return Mi(this)};O.naturalLogarithm=O.ln=function(){return qt(this)};O.negated=O.neg=function(){var r=new this.constructor(this);return r.s=-r.s,X(r)};O.plus=O.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=Ge(m.e/Q),n=Ge(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)/bt|0,c[i]%=bt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Vr(c,n),J?X(r,a,u):r};O.precision=O.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=Cs(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var r=this,e=r.constructor;return X(new e(r),r.e+1,e.rounding)};O.sine=O.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=pc(n,Ns(n,t)),n.precision=r,n.rounding=e,X(Ot>2?t.neg():t,r,e,!0)):new n(NaN)};O.squareRoot=O.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=Ge((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Ae(s,o,t+2,1)).times(.5),Fe(o.d).slice(0,t)===(e=Fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,X(n,u,l.rounding,r)};O.tangent=O.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=Ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,X(Ot==2||Ot==4?t.neg():t,r,e,!0)):new n(NaN)};O.times=O.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=Ge(l.e/Q)+Ge(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%bt|0,e=a/bt|0;o[i]=(o[i]+e)%bt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Vr(o,t),J?X(r,m.precision,m.rounding):r};O.toBinary=function(r,e){return Vi(this,2,r,e)};O.toDecimalPlaces=O.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))};O.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(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=ht(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=ht(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=ht(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};O.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=Cs(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=Ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=Ae(c,n,o,1).minus(d).abs().cmp(Ae(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};O.toHexadecimal=O.toHex=function(r,e){return Vi(this,16,r,e)};O.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=Ae(t,r,0,e,1).times(r),J=!0,X(t)):(r.s=t.s,t=r),t};O.toNumber=function(){return+this};O.toOctal=function(r,e){return Vi(this,8,r,e)};O.toPower=O.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=Ge(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=cc)return i=Rs(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)?Ge(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=Mi(r.times(qt(a,n+t)),n),i.d&&(i=X(i,n+5,1),En(i.d,n,o)&&(e=n+10,i=X(Mi(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))};O.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=ht(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=ht(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};O.toSignificantDigits=O.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)};O.toString=function(){var r=this,e=r.constructor,t=ht(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};O.truncated=O.trunc=function(){return X(new this.constructor(this),this.e+1,1)};O.valueOf=O.toJSON=function(){var r=this,e=r.constructor,t=ht(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 En(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 Lr(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]+=Li.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 mc(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Er(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wn(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var Ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M,E,H,v=n.constructor,j=n.s==i.s?1:-1,ee=n.d,se=i.d;if(!ee||!ee[0]||!se||!se[0])return new v(!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=bt,d=Q,l=Ge(n.e/d)-Ge(i.e/d)),E=se.length,K=ee.length,g=new v(j),P=g.d=[],m=0;se[m]==(ee[m]||0);m++);if(se[m]>(ee[m]||0)&&l--,o==null?(I=o=v.precision,s=v.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,E==1){for(p=0,se=se[0],I++;(m<K||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/se|0,p=B%se|0;y=p||m<K}else{for(p=u/(se[0]+1)|0,p>1&&(se=r(se,p,u),ee=r(ee,p,u),E=se.length,K=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;H=se.slice(),H.unshift(0),M=se[0],se[1]>=u/2&&++M;do p=0,c=e(se,A,E,h),c<0?(T=A[0],E!=h&&(T=T*u+(A[1]||0)),p=T/M|0,p>1?(p>=u&&(p=u-1),f=r(se,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?H:se,b,u))):(p==0&&(c=p=1),f=se.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(se,A,E,h),c<1&&(p++,t(A,E<h?H:se,h,u))),h=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[h++]=ee[x]||0:(A=[ee[x]],h=1);while((x++<K||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,Is=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]==bt&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=bt)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 ht(r,e,t){if(!r.isFinite())return Os(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 Vr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Mr(r,e,t){if(e>lc)throw J=!0,t&&(r.precision=t),Error(xs);return X(new r(Or),e,1,!0)}function yt(r,e,t){if(e>Ni)throw Error(xs);return X(new r(Nr),e,t,!0)}function Cs(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 Rs(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),hs(o.d,s)&&(i=!0)),t=Ge(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),hs(e.d,s)}return J=!0,o}function ks(r){return r.d[r.d.length-1]&1}function Ls(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Mi(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(Ae(o,t,u,1)),Fe(a.d).slice(0,u)===Fe(s.d).slice(0,u)){for(i=m;i--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&En(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=Mr(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=Ae(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(Ae(s,new g(i),l,1)),Fe(c.d).slice(0,l)===Fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Mr(g,l+2,A).times(o+""))),u=Ae(u,new g(d),l,1),e==null)if(En(u.d,l-y,P,a))g.precision=l+=y,c=s=f=Ae(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 Os(r){return String(r.s*r.s/0)}function _i(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 dc(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ks.test(e))return _i(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(ac.test(e))t=16,e=e.toLowerCase();else if(sc.test(e))t=2;else if(uc.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=Rs(n,new n(t),o,o*2)),c=Lr(e,t,bt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Vr(c,l),r.d=c,J=!1,s&&(r=Ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Oe(2,u):Fn.pow(2,u))),J=!0,r)}function pc(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/Er(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=Ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function Er(r,e){for(var t=r;--e;)t*=r;return t}function Ns(r,e){var t,n=e.s<0,i=yt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ot=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ot=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ot=ks(t)?n?2:3:n?4:1,e;Ot=ks(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Vi(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=Os(r);else{for(l=ht(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=Lr(ht(p),10,i),p.e=p.d.length),m=Lr(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=Ae(r,p,t,n,0,i),m=r.d,o=r.e,c=Is),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Li.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=Lr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Li.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 hs(r,e){if(r.length>e)return r.length=e,!0}function fc(r){return new this(r).abs()}function yc(r){return new this(r).acos()}function bc(r){return new this(r).acosh()}function gc(r,e){return new this(r).plus(e)}function wc(r){return new this(r).asin()}function Ac(r){return new this(r).asinh()}function Pc(r){return new this(r).atan()}function kc(r){return new this(r).atanh()}function hc(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=yt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?yt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=yt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Ae(r,e,o,1)),e=yt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Ae(r,e,o,1)),t}function Tc(r){return new this(r).cbrt()}function Ic(r){return X(r=new this(r),r.e+1,2)}function xc(r,e,t){return new this(r).clamp(e,t)}function Bc(r){if(!r||typeof r!="object")throw Error(_r+"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]=Oi[t]),(n=r[t])!==void 0)if(Ge(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]=Oi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Bs);else this[t]=!1;else throw Error(Ut+t+": "+n);return this}function Sc(r){return new this(r).cos()}function Kc(r){return new this(r).cosh()}function Ms(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,Ts(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 _i(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),Ks.test(o)?_i(c,o):dc(c,o)}if(i.prototype=O,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=Bc,i.clone=Ms,i.isDecimal=Ts,i.abs=fc,i.acos=yc,i.acosh=bc,i.add=gc,i.asin=wc,i.asinh=Ac,i.atan=Pc,i.atanh=kc,i.atan2=hc,i.cbrt=Tc,i.ceil=Ic,i.clamp=xc,i.cos=Sc,i.cosh=Kc,i.div=Cc,i.exp=Rc,i.floor=Lc,i.hypot=Oc,i.ln=Nc,i.log=Mc,i.log10=Vc,i.log2=_c,i.max=Ec,i.min=Fc,i.mod=vc,i.mul=Wc,i.pow=Dc,i.random=qc,i.round=Uc,i.sign=Gc,i.sin=Xc,i.sinh=zc,i.sqrt=Yc,i.sub=Hc,i.sum=Qc,i.tan=jc,i.tanh=Zc,i.trunc=$c,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 Cc(r,e){return new this(r).div(e)}function Rc(r){return new this(r).exp()}function Lc(r){return X(r=new this(r),r.e+1,3)}function Oc(){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 Ts(r){return r instanceof Fn||r&&r.toStringTag===Ss||!1}function Nc(r){return new this(r).ln()}function Mc(r,e){return new this(r).log(e)}function _c(r){return new this(r).log(2)}function Vc(r){return new this(r).log(10)}function Ec(){return Ls(this,arguments,"lt")}function Fc(){return Ls(this,arguments,"gt")}function vc(r,e){return new this(r).mod(e)}function Wc(r,e){return new this(r).mul(e)}function Dc(r,e){return new this(r).pow(e)}function qc(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(Bs);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 Uc(r){return X(r=new this(r),r.e+1,this.rounding)}function Gc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Xc(r){return new this(r).sin()}function zc(r){return new this(r).sinh()}function Yc(r){return new this(r).sqrt()}function Hc(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 Zc(r){return new this(r).tanh()}function $c(r){return X(r=new this(r),r.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var Fn=O.constructor=Ms(Oi);Or=new Fn(Or);Nr=new Fn(Nr);var F=Fn;import{PublicKey as Di}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jc}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as _s,SYSVAR_RENT_PUBKEY as el}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ei=[k({pubkey:Jc,isWritable:!1}),k({pubkey:_s.programId,isWritable:!1}),k({pubkey:el,isWritable:!1})];function Fi({publicKey:r,transformSol:e}){let t=vi(r.toString());if(t instanceof xe)return e&&t.equals(Ne)?te:t;if(e&&t.toString()===Ne.toBase58())return te;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function vi(r){try{return new xe(r)}catch{return r}}var An=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vs=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new xe("SysvarRent111111111111111111111111111111111"),Wi=new xe("SysvarC1ock11111111111111111111111111111111"),Pn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fr=new xe("Sysvar1nstructions1111111111111111111111111"),Es=_s.programId,nf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),rf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),of=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),sf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),af=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),uf=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),cf=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),lf=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),mf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),df=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),pf=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new xe("So11111111111111111111111111111111111111112"),Ne=xe.default;function kn(r){return Fi({publicKey:r,transformSol:!0})}import{PublicKey as tl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fs}from"@solana/spl-token";var Tt={chainId:101,address:tl.default.toBase58(),programId:Fs.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:Fs.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 qi=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ne.toBase58()||e instanceof Di&&Ne.equals(e)){this.decimals=Me.decimals,this.symbol=Me.symbol,this.name=Me.name,this.mint=new Di(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?Di.default:Fi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},pe=qi;pe.WSOL=new qi(D(N({},Me),{mint:Me.address}));import Wr from"big.js";import il from"bn.js";import ol from"decimal.js-light";import nl from"toformat";var rl=nl,vn=rl;var vr=ae("module/fraction"),Ui=vn(Wr),Wn=vn(ol),sl={[0]:Wn.ROUND_DOWN,[1]:Wn.ROUND_HALF_UP,[2]:Wn.ROUND_UP},al={[0]:Wr.roundDown,[1]:Wr.roundHalfUp,[2]:Wr.roundUp},ne=class{constructor(e,t=new il(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)||vr.logWithError(`${e} is not an integer.`),e<=0&&vr.logWithError(`${e} is not positive.`),Wn.set({precision:e+1,rounding:sl[n]});let i=new Wn(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)||vr.logWithError(`${e} is not an integer.`),e<0&&vr.logWithError(`${e} is negative.`),Ui.DP=e,Ui.RM=al[n]||1,new Ui(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ul=ae("Raydium_price"),Xe=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(Xi(n.decimals),Xi(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Xe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ul.logWithError("mul token not equals");let n=super.mul(t);return new Xe({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 zi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Dn=zi;Dn.SOL=new zi(Tt);function qf(r,e){return r instanceof pe&&e instanceof pe?r.equals(e):r instanceof pe||e instanceof pe?!1:r===e}import cl from"bn.js";var vs=new ne(new cl(100)),ve=class extends ne{toSignificant(e=5,t,n){return this.mul(vs).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(vs).toFixed(e,t,n)}};function Ce(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Ce(r.toExact())}catch{return new ne(Ke)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function jf(r){var n;if(r instanceof ve)return{fr:new ne(r.numerator,r.denominator)};if(r instanceof Xe)return{fr:r.adjusted};if(r instanceof Te)return{fr:Ce(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 Zf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ke)}function ll(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gt(Ke)}function $f(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.lte(Ke)}function Jf(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gte(Ke)}function ml(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.eq(Ke)}function ey(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);try{return t.div(n)}catch{return t}}function ty(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.sub(n)}function ny(r){return r==null?!1:!ml(r,0)}function ry(r,e){return ll(e,r)?e:r}function Yi(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.mul(n)}function iy(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.add(n)}var Gi=(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))(Gi||{}),Ke=new ke(0),Us=new ke(1),gy=new ke(2),wy=new ke(3),Ay=new ke(5),nn=new ke(10),Py=new ke(100),ky=new ke(1e3),hy=new ke(1e4),Ws=9007199254740991;function U(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof ke)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ke(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Ws||r<=-Ws)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ke(String(r))):typeof r=="bigint"?new ke(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ke(0))}function Xi(r){return nn.pow(U(r))}function tn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof ke)return{numerator:r.toString(),denominator:"1"};if(r instanceof 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 Dr(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 dl(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function pl(r,e=0){return r instanceof ke?r:new ke(dl(Gs(r).mul(nn.pow(new ke(String(e))))))}function Gs(r){if(r instanceof ve)return new ne(r.numerator,r.denominator);if(r instanceof Xe)return r.adjusted;if(r instanceof Te)try{return Gs(r.toExact())}catch{return new ne(Ke)}if(r instanceof ne)return r;let e=String(r),t=tn(e);return new ne(t.numerator,t.denominator)}function Ty(r,e){let{numerator:t,denominator:n}=tn(r);return new ve(new ke(t),new ke(n).mul(e!=null&&e.alreadyDecimaled?new ke(100):new ke(1)))}function Iy(r){let{token:e,numberPrice:t,decimalDone:n}=r,i=new pe({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:o,denominator:s}=tn(t),a=n?new ke(o).mul(nn.pow(new ke(e.decimals))):o,u=new ke(s).mul(nn.pow(new ke(i.decimals)));return new Xe({baseToken:i,denominator:u.toString(),quoteToken:new pe(D(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Ds(r){let e=new Dn({decimals:6,symbol:"usd",name:"usd"}),t=pl(Yi(r,10**e.decimals));return new rn(e,t)}function xy(r,e){return Ds(!e||!r?0:Yi(r,e))}function fl(r){if(r==null)return;let{numerator:e,denominator:t}=tn(r.toString());return new ne(e,t)}function yl(r){return r instanceof F}function qs(r){return yl(r)?fl(r):Array.isArray(r)?r.map(e=>qs(e)):Hi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,qs(t)])):r}var gl=ae("Raydium_amount"),qr=vn(bl);function Xs(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")):gl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Te=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]=Xs(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 qr.DP=this.token.decimals,new qr(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]=Xs(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 qr.DP=this.currency.decimals,new qr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function zs(r){new Promise(e=>setTimeout(e,r))}function Qy(){return new Date().getTime()}function Hi(r){return typeof r=="object"&&r!==null&&![pe,Te,wl,ne,Al,Xe,ve].some(e=>typeof e=="object"&&r instanceof e)}function ye(r){return typeof r=="string"?vi(r):Array.isArray(r)?r.map(e=>ye(e)):Hi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ye(t)])):r}import{PublicKey as Gn,sendAndConfirmTransaction as Qr,Transaction as Xn,TransactionMessage as zn,VersionedTransaction as Yn}from"@solana/web3.js";import Kl from"axios";var hn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(hn||{}),V={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 Hs,ComputeBudgetProgram as Ys,Transaction as Gr,TransactionMessage as Pl,Keypair as Qs,VersionedTransaction as js}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var Nt=ae("Raydium_txUtil"),Zs=1644;function Xr(r){let e=[],t=[];return r.microLamports&&(e.push(Ys.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(Ys.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Tn(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 zr(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 Gr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Zs}catch{return!1}}async function $s(r,e,t,n=!0){let i=new Hs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Gr;s.feePayer=i;for(let c of e)zr([...s.instructions,c],[i])||(o.push(s),s=new Gr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await hl(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 Js(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]=Hs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function hl(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 qn({instructions:r,payer:e,signers:t}){return zr(r,[e,...t])}function Un({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Qs.generate().publicKey.toString()}){let o=new Pl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new js(o).serialize()).toString("base64").length<Zs}catch{return!1}}var Ur={time:0,data:void 0};async function sb(r){if(!Ur.data||(Date.now()-Ur.time)/1e3>30){let e=await r.getEpochInfo();return Ur={time:Date.now(),data:e},e}else return Ur.data}var Tl=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 Gr&&(t.recentBlockhash||(t.recentBlockhash=kl.toBase58()),t.feePayer||(t.feePayer=Qs.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof js&&(n=Tl(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as ea,AddressLookupTableAccount as Yr}from"@solana/web3.js";import{PublicKey as Il}from"@solana/web3.js";import{getTransferFeeConfig as xl,unpackMint as Bl}from"@solana/spl-token";var Qi=ae("Raydium_accountInfo_util");async function It(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=ji(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=ji(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Qi.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"&&Qi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new Il(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Qi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function In(r,e,t){let n=await It(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}var Sl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Sl||{}),yb=1;async function bb({connection:r,mints:e}){var i,o;if(e.length===0)return{};let t=await In(r,e.map(s=>({pubkey:s}))),n={};for(let s of t){let a=Bl(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);n[s.pubkey.toString()]=D(N({},a),{feeConfig:(o=xl(a))!=null?o:void 0})}return n}async function Zi({connection:r,address:e}){let t=await It(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ea(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Yr({key:s,state:Yr.deserialize(o.data)});n[s.toString()]=a,Hr[s.toString()]=a}return n}var Hr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Yr({key:new ea("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Yr.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 jr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Kl.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}=Xr(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!==Gn.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 Xn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await Tn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),on([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Qr(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction: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 f;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{},y=p!=null?p:await Tn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Qr(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:d})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));on(b);let g=await this.signAllTransactions(b);if(l){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:d});A.push({txId:T,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:d});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Ie(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:Hr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new Gn(d));let c=await Zi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new zn({payerKey:this.feePayer,recentBlockhash:i?Gn.default.toBase58():await Tn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Yn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async d=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=d||{};if(y&&(m.message.recentBlockhash=y),on([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction: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 y;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{};if(p&&s.forEach(f=>f.message.recentBlockhash=p),on(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:d});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:d});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,h=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=h.err?"error":"success"),m==null||m([...g]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendTransaction(f[g],{skipPreflight:d});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Ie(c,["computeBudgetConfig"]),i=t?Xr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],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 Gn(f));if(u.length<12&&qn({instructions:p,payer:this.feePayer,signers:y})||qn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Xn().add(...i.instructions,...u)):s.push(new Xn().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);qn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Xn().add(...i.instructions,...u)):s.push(new Xn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:p,recentBlockHash:d,skipPreflight:y=!0}=l||{},f=d!=null?d:await Tn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),on(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let P of s){let A=await Qr(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,P)=>await Qr(this.connection,g,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[P]}),p==null||p([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),p==null||p([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Ie(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:Hr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new Gn(g));let c=await Zi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Xr(t):{instructions:[],instructionTypes:[]},m=await Tn(this.connection),p=this.signers.reduce((g,P)=>D(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&&Un({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Un({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new Yn(T))}else{let T=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new Yn(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>p[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&Un({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new Yn(A))}else{let A=new zn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new Yn(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:T=!0}=g||{};if(d.map(async(B,x)=>{y[x].length&&B.sign(y[x]),h&&(B.message.recentBlockhash=h)}),on(d),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();if(d.forEach((K,M)=>{y[M].find(E=>E.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),P){let K=[];for(let M of d){let E=await this.connection.sendTransaction(M,{skipPreflight:T}),{lastValidBlockHeight:H,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:H,signature:E},"confirmed"),K.push(E)}return{txIds:K,signedTxs:d}}return{txIds:await Promise.all(d.map(async K=>{let M=await this.connection.sendTransaction(K,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:M},"confirmed"),M})),signedTxs:d}}if(this.signAllTransactions){let B=await this.signAllTransactions(d);if(P){let x=0,K=[],M=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:T});K.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...K]),x++,this.connection.onSignature(E,H=>{let v=K.findIndex(j=>j.txId===E);v>-1&&(K[v].status=H.err?"error":"success"),A==null||A([...K]),H.err||M()},"processed"),this.connection.getSignatureStatus(E)};return M(),{txIds:[],signedTxs:B}}else{let x=[];for(let K=0;K<B.length;K+=1){let M=await this.connection.sendTransaction(B[K],{skipPreflight:T});x.push(M)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var gt=class{constructor(e){this._owner=e}get publicKey(){return gt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return gt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return gt.isKeyPair(this._owner)}get isPublicKey(){return gt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!gt.isKeyPair(e)}};function ji(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Nb(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function Mb(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function _b(r){return[...new Set(r)]}var ta=r=>typeof r=="number",na=r=>r?new Date(r):new Date,Cl=r=>na(r).getTime();function ra(r,e,t){let n=ta(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function ia(r,e,t){let n=ta(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function Eb(r,e){let n=Cl(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 na(n)}import{PublicKey as me}from"@solana/web3.js";var $i=new me("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ji=new me("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xn=new me("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Rl=new me("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ll=new me("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Zr=new me("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),eo=new me("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ol=new me("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nl=new me("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ml=new me("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wb=new me("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),_l=new me("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Vl=new me("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),El=new me("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fl=new me("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),vl=new me("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Wl=new me("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dl=new me("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ql=new me("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ul=new me("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Gl=new me("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Hn={IDO_PROGRAM_ID_V1:_l,IDO_PROGRAM_ID_V2:Vl,IDO_PROGRAM_ID_V3:El,IDO_PROGRAM_ID_V4:Fl},Db={AMM_V4:eo,AMM_STABLE:Ol,CLMM_PROGRAM_ID:Nl,FARM_PROGRAM_ID_V3:$i,FARM_PROGRAM_ID_V5:Ji,FARM_PROGRAM_ID_V6:xn,OPEN_BOOK_PROGRAM:Ll,SERUM_PROGRAM_ID_V3:Zr,UTIL1216:Rl,Router:Ml,CREATE_CPMM_POOL_PROGRAM:vl,CREATE_CPMM_POOL_AUTH:Wl,CREATE_CPMM_POOL_FEE_ACC:Dl},qb={SERUM_MARKET:me.default,OPENBOOK_MARKET:new me("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:me.default,FarmV3:new me("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new me("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new me("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new me("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new me("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new me("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new me("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ql,CREATE_CPMM_POOL_AUTH:Ul,CREATE_CPMM_POOL_FEE_ACC:Gl,FEE_DESTINATION_ID:new me("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Xl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";function be(r,e,t){return oe([r.toBuffer(),(t!=null?t:zl).toBuffer(),e.toBuffer()],new Xl("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Le from"bn.js";var xt=1e4;function Qb(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===xt){let a=new Le(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=zt(r.mul(new Le(xt)),new Le(xt-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(xt)),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(xt)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new 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===xt){let u=new Le(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=zt(r.mul(new Le(xt)),new Le(xt-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(xt)),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(xt)),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 to=(t=>(t.ALL="all",t.Strict="strict",t))(to||{}),oa=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(oa||{});var We={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},yg=N({},We);var sa="ray_tab_hash",no="ray_req_hash",Yl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(sa);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(sa,r)),r},$r=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Ie(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(no)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(D(N({},t),{time:Date.now(),session:Yl()}));try{localStorage.setItem(no,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(no,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return $r(D(N({},t),{logCount:r,removeLastLog:!0}))}};var Bn=ae("Raydium_Api"),ro=new Map;async function _g(r,e,t=1e3){let n;for(;n==null;)try{Bn.debug(`Request ${r} through endlessRetry`),n=await e()}catch(i){Bn.error(`Request ${r} failed, retry after ${t} ms`,i),await zs(t)}return n}var Jr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=Hl.create({baseURL:this.urlConfigs.BASE_HOST||We.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Bn.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Bn.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&&$r({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),Bn.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&&$r({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),Bn.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||We.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||We.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(await this.api.get(this.urlConfigs.CHAIN_TIME||We.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||We.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||We.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||We.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||We.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||We.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||We.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>ro.has(s)?(n.push(ro.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||We.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{ro.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&kn(t).toBase58(),n&&n!=="undefined"?kn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||We.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||We.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||We.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||We.CHECK_AVAILABILITY)).data}};import{merge as Dp}from"lodash";var ei="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",aa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as wo,TOKEN_PROGRAM_ID as jt,AccountLayout as Kn,TOKEN_2022_PROGRAM_ID as id}from"@solana/spl-token";import{PublicKey as ai,SystemProgram as od}from"@solana/web3.js";var io=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Be=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new jr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(io(e))}logInfo(...e){this.logger.info(io(e))}logAndCreateError(...e){let t=io(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as $m,createCloseAccountInstruction as Jm,createTransferInstruction as ed,TOKEN_PROGRAM_ID as Sn}from"@solana/spl-token";import{PublicKey as td,SystemProgram as nd}from"@solana/web3.js";import rd from"bn.js";import{PublicKey as Ta,Keypair as Hm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qm}from"@solana/spl-token";import jm from"bn.js";import{PublicKey as Wm}from"@solana/web3.js";import fa,{isBN as ya}from"bn.js";import{bits as Ql,BitStructure as jl,blob as Zl,Blob as $l,cstr as Jl,f32 as em,f32be as tm,f64 as nm,f64be as rm,greedy as im,Layout as om,ns64 as sm,ns64be as am,nu64 as um,nu64be as cm,offset as lm,s16 as mm,s16be as dm,s24 as pm,s24be as fm,s32 as ym,s32be as bm,s40 as gm,s40be as wm,s48 as Am,s48be as Pm,s8 as km,seq as hm,struct as Hg,Structure as Tm,u16 as Im,u16be as xm,u24 as Bm,u24be as Sm,u32 as Km,u32be as Cm,u40 as Rm,u40be as Lm,u48 as Om,u48be as Nm,u8 as Mm,UInt as _m,union as Vm,Union as Em,unionLayoutDiscriminator as Fm,utf8 as vm}from"@solana/buffer-layout";var Qn=om,ua=Tm,ca=Em,Qg=jl,oo=_m,la=$l,jg=im,ti=Mm,Bt=Im,Zg=Bm,jn=Km,$g=Rm,Jg=Om,ma=um,ew=xm,tw=Sm,nw=Cm,rw=Lm,iw=Nm,ow=cm,sw=km,aw=mm,uw=pm,De=ym,cw=gm,lw=Am,mw=sm,dw=dm,pw=fm,fw=bm,yw=wm,bw=Pm,gw=am,ww=em,Aw=tm,Pw=nm,kw=rm;var da=hm,pa=Vm,hw=Fm,fe=Zl,Tw=Jl,Iw=vm,so=Ql,ao=lm;var an=class extends Qn{constructor(t,n,i){super(t,i);this.blob=fe(t),this.signed=n}decode(t,n=0){let i=new fa(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 fa(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},ni=class extends Qn{constructor(t){super(8,t);this._lower=so(jn(),!1),this._upper=so(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 _(r){return new oo(1,r)}function ze(r){return new oo(4,r)}function w(r){return new an(8,!1,r)}function z(r){return new an(16,!1,r)}function ba(r){return new an(1,!0,r)}function ri(r){return new an(8,!0,r)}function ga(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 S(r){return new _t(fe(32),e=>new Wm(e),e=>e.toBuffer(),r)}var uo=class extends Qn{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=ti()}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 Cw(r,e){return new uo(r,e)}function qe(r){return new _t(ti(),Dm,qm,r)}function Dm(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function qm(r){return r?1:0}function Rw(r,e){let t=jn("length"),n=L([t,q(r,ao(t,-t.span),"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),e)}function Lw(r,e,t){let n=L([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 Um(r){let e=jn("length"),t=L([e,fe(ao(e,-e.span),"data")]);return new _t(t,({data:n})=>n,n=>({data:n}),r)}function Ow(r){return new _t(Um(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function Nw(r,e){let t=pa(ti(),e);return r.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function Mw(r,e,t){let n=L([q(r,e,"values")]);return new _t(n,({values:i})=>i,i=>({values:i}),t)}var co=class extends ua{decode(e,t){return super.decode(e,t)}};function L(r,e,t){return new co(r,e,t)}var lo=class extends ca{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 _w(r,e,t){return new lo(r,e,t)}var mo=class extends la{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Vw(r){return new mo(r)}function q(r,e,t){let n,i=typeof e=="number"?e:ya(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ya(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 da(r,i,t)}var Yt=L([S("mint"),S("owner"),w("amount"),ze("delegateOption"),S("delegate"),_("state"),ze("isNativeOption"),w("isNative"),w("delegatedAmount"),ze("closeAuthorityOption"),S("closeAuthority")]);function Gm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function po(r,...e){if(!Gm(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 fo(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 wa(r,e){po(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var oi=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),wt=(r,e)=>r<<32-e|r>>>e;var Uw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Xm(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function yo(r){return typeof r=="string"&&(r=Xm(r)),po(r),r}var ii=class{clone(){return this._cloneInto()}},Gw={}.toString;function Aa(r){let e=n=>r().update(yo(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zm(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 Pa=(r,e,t)=>r&e^~r&t,ka=(r,e,t)=>r&e^r&t^e&t,si=class extends ii{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=oi(this.buffer)}update(e){fo(this);let{view:t,buffer:n,blockLen:i}=this;e=yo(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=oi(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){fo(this),wa(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;zm(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=oi(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 Ym=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]),Ht=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qt=new Uint32Array(64),bo=class extends si{constructor(){super(64,32,8,!1),this.A=Ht[0]|0,this.B=Ht[1]|0,this.C=Ht[2]|0,this.D=Ht[3]|0,this.E=Ht[4]|0,this.F=Ht[5]|0,this.G=Ht[6]|0,this.H=Ht[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)Qt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Qt[m-15],d=Qt[m-2],y=wt(p,7)^wt(p,18)^p>>>3,f=wt(d,17)^wt(d,19)^d>>>10;Qt[m]=f+Qt[m-7]+y+Qt[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=wt(a,6)^wt(a,11)^wt(a,25),d=l+p+Pa(a,u,c)+Ym[m]+Qt[m]|0,f=(wt(n,2)^wt(n,13)^wt(n,22))+ka(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(){Qt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ha=Aa(()=>new bo);var aA=ae("Raydium_Util");function Ia({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=Yt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:be(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Ta.default,amount:new jm(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Ye({fromPublicKey:r,programId:e=Qm}){let t=Hm.generate().publicKey.toBase58().slice(0,32);return{publicKey:Zm(r,t,e),seed:t}}function Zm(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ha(n);return new Ta(i)}function go(r){let{mint:e,tokenAccount:t,owner:n,programId:i=Sn}=r;return $m(t,e,n,i)}function Vt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=Sn}=r;return Jm(e,t,i,n,o)}async function St(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 rd(a)),c=Ye({fromPublicKey:i,programId:Sn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[nd.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Yt.span,programId:Sn}),go({mint:new td(Me.address),tokenAccount:c.publicKey,owner:o,programId:Sn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Vt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Zn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=Sn}){return ed(r,e,t,BigInt(String(n)),i,o)}var $n=class extends Be{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return be(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:jt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:id},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=Ia({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=jt,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 ai(t.tokenProgram||jt),m=this.getAssociatedTokenAccount(n,new ai(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=wo(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(V.CreateATA);else if(!(P.owner.equals(l)&&Kn.decode(P.data).mint.equals(n)&&Kn.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(V.CreateATA);if(n.equals(te)&&i.amount){let P=await St({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(Zn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:jt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await St({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(Kn.span),A=od.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:Kn.span,programId:l});return d.instructions.push(A,go({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(V.CreateAccount),d.instructionTypes.push(V.InitAccount),u||(d.endInstructions.push(Vt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=jt,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 wo(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Vt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[V.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new ai(te).equals(o)){let d=await St({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=wo(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(jt)&&Kn.decode(f.data).mint.equals(o)&&Kn.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:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=jt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new ai(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Ie(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=Ie(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as Bd}from"@solana/spl-token";import{PublicKey as he,SystemProgram as Sd}from"@solana/web3.js";import{PublicKey as La}from"@solana/web3.js";var Ao=L([_("instruction")]),Po=L([_("instruction")]),sd=L([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),ad=L([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),ud=L([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),fe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),cd=L([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(sd,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),xa=new Proxy(ad,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ba=new Proxy(ud,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),Jn=new Proxy(cd,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(N({},o),{rewardType:((s=Object.entries(Zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ld=L([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),ko=L([_("instruction"),w("nonce"),q(ld,5,"rewardTimeInfo")]),ho=L([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),To=L([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),vA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),er=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),WA=L([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),Sa=L([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),Ka=L([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),$e=L([_("instruction"),w("amount")]),md=L([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ba("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),Ca=L([fe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(md,4,"votingMints"),ri("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),dd=L([ri("startTime"),ri("endTime"),_("kind"),q(_(),15,"reserved")]),pd=L([q(dd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),qe("isUsed"),qe("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),Ra=L([fe(8),S("voterAuthority"),S("registrar"),q(pd,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var HA=ae("Raydium_farm_config"),Oa=new La("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Na=new La("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Ma={3:xa,5:Ba,6:Jn},_a={3:er,5:Sa,6:Ka},Io=r=>[3,5,6].indexOf(r)!==-1,xo=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},At={[$i.toString()]:3,[Ji.toString()]:5,[xn.toString()]:6};import{PublicKey as ie,SystemProgram as un,SYSVAR_RENT_PUBKEY as bd,SYSVAR_CLOCK_PUBKEY as rr,TransactionInstruction as Ve}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as gd,TOKEN_PROGRAM_ID as ot,ASSOCIATED_TOKEN_PROGRAM_ID as wd}from"@solana/spl-token";import ci from"bn.js";function Bo(r,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function So(r,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Ko(r,e){return oe([e.toBuffer()],r)}function Co(r,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function Ro(r,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function Lo(r,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import nt from"bn.js";var tr=ae("Raydium.farm.util");function nr({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 Va=({programId:r,poolId:e})=>oe([e.toBuffer()],r);function Ea(r){return{isSet:new nt(1),rewardPerSecond:U(r.perSecond),rewardOpenTime:U(r.openTime),rewardEndTime:U(r.endTime),rewardType:U(Zt[r.rewardType])}}function Oo(r){return U(r.endTime).sub(U(r.openTime)).mul(U(r.perSecond))}function ui(r){let e=_a[r];return e||tr.logWithError("invalid version",r),e}function fd(r){let e=Ma[r];return e||tr.logWithError("invalid version",r),e}function yd(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 mP({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=ye(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 In(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=fd(d);(!b||!b.data||b.data.length!==P.span)&&tr.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)&&tr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=Yt.decode(b.data);else if(y==="ledger"){let P=ui(d);b&&b.data&&(b.data.length!==P.span&&tr.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=yd(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=D(N({},c[p].wrapped),{pendingRewards:b})}return c}function dP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>ra(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>ia(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 No(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=Ca.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=Ra.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var Ad=ae("Raydium_farm_instruction"),ir={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Fa(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Ad.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ao.span);Ao.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:bd,isWritable:!1})];return{instruction:new Ve({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function va(r){var n;let e=Buffer.alloc(ko.span);ko.encode({instruction:0,nonce:new ci(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Ei,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:V.FarmV6Create}}function Wa(r){let e=Buffer.alloc(Po.span);Po.encode({instruction:5},e);let t=[k({pubkey:ot,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ve({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function Pd(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Fr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...ir.voterStakeRegistryDeposit,...f]);return new Ve({keys:y,programId:r,data:b})}function kd(r,e,t,n){let i=L([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:un.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...ir.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ve({keys:o,programId:r,data:a})}function hd(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Fr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...ir.voterStakeRegistryWithdraw,...g]);return new Ve({keys:b,programId:r,data:P})}function Td(r,e,t,n,i,o){let s=L([_("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 Id(r,e,t,n,i,o,s,a){let u=L([_("voterBump"),_("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:Fr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...ir.voterStakeRegistryCreateVoter,...l]);return new Ve({keys:c,programId:r,data:m})}function xd(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),ze("periods"),qe("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:ot,isSigner:!1,isWritable:!1},{pubkey:wd,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([...ir.voterStakeRegistryCreateDepositEntry,...y]);return new Ve({keys:d,programId:r,data:f})}async function CP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Bo(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=er.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new ci(0)))throw Error("user do not has new stake amount");let y=So(e,a).publicKey,f=Ko(e,a).publicKey,{publicKey:b,nonce:g}=Co(n,c,s),P=be(b,y,u).publicKey,{publicKey:A,nonce:h}=Ro(n,c,s),T=Lo(t,i,o,s).publicKey,I=[],B=be(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(gd(s,B,s,y)),await r.getAccountInfo(b)===null){let H=Td(t,i,s,o,s,T);I.push(H,Id(n,c,b,A,s,s,g,h))}let{index:M,isInit:E}=await No(r,c,b,y);return E||I.push(xd(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(Pd(n,c,b,P,B,s,l,a,y,f,e,M,d),kd(n,c,b,A)),I}async function RP({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=Bo(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=er.decode(m.data);if(p.voteLockedBalance.eq(new ci(0)))throw Error("user has vote locked balance = 0");let d=So(e,a).publicKey,y=Ko(e,a).publicKey,{publicKey:f}=Co(n,c,s),b=be(f,d,u).publicKey,{publicKey:g}=Ro(n,c,s),P=Lo(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await No(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(hd(n,c,f,s,P,g,b,be(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function Mo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(ho.span);ho.encode({instruction:3,rewardReopenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardPerSecond:U(i.perSecond)},o);let s=[k({pubkey:ot,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Ve({programId:n.programId,keys:s,data:o})}function _o({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(To.span);To.encode({instruction:4,isSet:new ci(1),rewardPerSecond:U(i.perSecond),rewardOpenTime:U(i.openTime),rewardEndTime:U(i.endTime),rewardType:U(Zt[i.rewardType])},o);let s=[...Ei,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 LP(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:ot,isWritable:!1}),...c?[k({pubkey:un.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey: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:rr,isWritable:!1}),k({pubkey:ot,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 or(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:ot,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey: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 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: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:rr,isWritable:!1}),k({pubkey:ot,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 ar(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:rr,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function Da(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:rr,isWritable:!1}),k({pubkey:ot,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Ve({programId:u,keys:p,data:m})}function qa(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:rr,isWritable:!1}),k({pubkey:ot,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 Ua(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:ot,isWritable:!1}),k({pubkey:un.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new ie(t.authority),isWritable:!1}),k({pubkey:new ie(t.lpVault)}),k({pubkey:c}),k({pubkey: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 ur=class extends Be{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ne)){let n=await St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Oo(D(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=xn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new he(e.lpMint.address),lockInfo:{lockMint:Oa,lockVault:Na},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(Jn.span);u.addInstruction({instructions:[Sd.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Jn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=Va({programId:new he(a.programId),poolId:l.publicKey}),y=nr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let h of a.rewardInfos){h.openTime>=h.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",h.openTime.toString()),isNaN(Zt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(Ea(h));let{rewardPubKey:T,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:h,payer:c});I&&u.addInstruction(I),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=h.mint.equals(Ne)?new he(Me.address):h.mint;b.push({rewardMint:B,rewardVault:nr({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:T})}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=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ne)?new he(Me.address):n.mint,l=a.rewardInfos.findIndex(g=>new he(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:[Mo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[V.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ne)?new he(Me.address):m.mint,d=a.rewardInfos.findIndex(A=>new he(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=Mo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[V.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ne)?new he(Me.address):i.mint,m=nr({programId:new he(n.programId),poolId:new he(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:[_o({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[V.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=At[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ne)?new he(Me.address):l.mint,p=nr({programId:new he(n.programId),poolId:new he(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=_o({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:D(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[V.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=At[p];Io(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new he(n.programId),new he(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 v of this.scope.account.tokenAccounts)if(a){let j=be(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let h=b.lpMint,T=A[h.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let v of m){let j=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:se,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new he(v.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=se,ft&&P.addInstruction(ft)}A[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=ui(d).decode(x.data)),n.programId!==xn.toString()&&!B){let{instruction:v,instructionType:j}=Fa({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[v],instructionTypes:[j]})}let K=xo({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new he(v))},E=d===6?Ua(M):d===5?qa(M):Da(M),H={3:V.FarmV3Deposit,5:V.FarmV5Deposit,6:V.FarmV6Deposit};return P.addInstruction({instructions:[E],instructionTypes:[H[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=At[n.programId];Io(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 K of this.scope.account.tokenAccounts)if(u){let M=be(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&M.equals(K.publicKey)&&(b[K.mint.toString()]=K.publicKey)}else b[K.mint.toString()]=K.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=rt({programId:new he(n.programId),poolId:new he(n.id),owner:this.scope.ownerPubKey,version:d}),M=await this.scope.connection.getAccountInfo(K);M||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:M}),ui(d).decode(M.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:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new he(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,M&&f.addInstruction(M)}b[g.toString()]=A;let h=[];for(let K of p){let M=s&&K.mint.address===te.toString(),E=b[K.mint.address];if(!E){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new he(K.mint.address),notUseTokenAccount:M,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});E=H,v&&f.addInstruction(v)}b[K.mint.address]=E,h.push(E)}let T=xo({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:U(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new he(K))},B=d===6?or(I):d===5?sr(I):ar(I),x={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=ye((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=At[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ne.toString()?new he(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 St({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Oo(D(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new F(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:[Bd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=Wa({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=be(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=At[f],h=b.address,T=n&&h===te.toString(),I=m[h];if(!I){let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new he(h),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:o,checkCreateATAOwner:s});I=H,v&&l.addInstruction(v)}m[h.toString()]=I;let B=[];for(let H of g){let v=n&&H.mint.address===te.toString(),j=m[H.mint.address];if(!j){let{account:ee,instructionParams:se}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new he(H.mint.address),notUseTokenAccount:v,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,se&&l.addInstruction(se)}m[H.mint.address]=j,B.push(j)}let x=d[P],K={amount:Ke,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new he(H))},M=A===6?or(K):A===5?sr(K):ar(K),E={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};l.addInstruction({instructions:[M],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as it}from"@solana/web3.js";import{NATIVE_MINT as xu,TOKEN_PROGRAM_ID as gi}from"@solana/spl-token";var ek=L([ze("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),ze("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as Kd}from"@solana/web3.js";import{MintLayout as Ga,TOKEN_PROGRAM_ID as Cd}from"@solana/spl-token";var uk=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new Kd(e));return!t||t.data.length!==Ga.span?void 0:Ga.decode(t.data)},ck=({mint:r,decimals:e,programId:t=Cd,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}},Xa=r=>new pe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),lk=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Ie(o,["amount","isRaw","name"]);return new Te(new pe({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function mk(r){return r.address===Tt.address?Me:r}function dk(r){return r.address===Me.address?Tt:r}import{TOKEN_PROGRAM_ID as cr,ASSOCIATED_TOKEN_PROGRAM_ID as Gd}from"@solana/spl-token";import{PublicKey as ge,TransactionInstruction as Et,SystemProgram as qo,SYSVAR_RENT_PUBKEY as Xd}from"@solana/web3.js";var Vo=L([_("instruction"),w("amountIn"),w("minAmountOut")]),Eo=L([_("instruction"),w("maxAmountIn"),w("amountOut")]),Ik=L([_("instruction"),_("nonce")]),Fo=L([_("instruction"),_("nonce"),w("startTime")]),Rd=L([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),w("lpReserve"),q(w(),3,"padding")]),Ld=L([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(w(),64,"padding")]),vo=L([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Wo=L([_("instruction"),w("amountIn")]),xk={4:Rd,5:Ld},za=L([w("fee")]);import{PublicKey as Od}from"@solana/web3.js";var Rn=new Od("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ln=5e4,Nd=L([w("x"),w("y"),w("price")]),Md=L([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(Nd,ln,"DataElement")]);function _d(r,e){return[0,ln-2]}function Vd(r){return[0,ln-2]}function Ed(r){return[0,ln-2]}function Fd(r,e,t){let[n,i]=_d(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 Do(r,e,t){let[n,i,o]=Fd(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 Ya(r,e,t){return e*t/r.multiplier}function vd(r,e){let[t,n]=Vd(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 Wd(r,e){let[t,n]=Ed(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 Ha(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 Dd(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Wd(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 qd(r,e){let t=Ha(r,e,0,!1);return t[3]?t[0]:0}function Qa(r,e,t,n){let i=Do(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!0,[c,l,m,p]=Ha(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ya(r,d,i)}}function ja(r,e,t,n){let i=Do(r,e,t),o=cn(r,e,i),s=cn(r,t,i),a=cn(r,n,i),u=!1,[c,l,m,p]=Dd(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ya(r,d,i)}}function Ud(r){let e=Md.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 Za(r,e,t,n){let i=qd(r,cn(r,e,Do(r,e,t)))/r.multiplier;return n?i:1/i}var Cn=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(Rn);e&&(this._layoutData=Ud(e==null?void 0:e.data))}}};var $a=ae("Raydium_liquidity_instruction");function Ja(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"?Ke:Us},a);let u=[k({pubkey:cr,isWritable:!1}),k({pubkey:new ge(e.id)}),k({pubkey:new ge(t.authority),isWritable:!1}),k({pubkey:new ge(t.openOrders),isWritable:!1}),k({pubkey:new ge(t.targetOrders)}),k({pubkey:new ge(e.lpMint.address)}),k({pubkey:new ge(t.vault.A)}),k({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:Rn})),u.push(k({pubkey:new ge(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 ge(t.marketEventQueue),isWritable:!1})),new Et({programId:new ge(e.programId),keys:u,data:a})}function Uo(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=ye(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Wo.span);Wo.encode({instruction:4,amountIn:U(i)},a);let u=[k({pubkey:cr,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:Rn})):(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 eu({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:h,pcAmount:T,ammConfigId:I,feeDestinationId:B}){let x=L([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:cr,isSigner:!1,isWritable:!1},{pubkey:Gd,isSigner:!1,isWritable:!1},{pubkey:qo.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:B,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}],M=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:T},M),{instruction:new Et({keys:K,programId:r,data:M}),instructionType:V.AmmV4CreatePool}}function Dk(r){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return new Et({programId:new ge(r.programId),keys:n,data:t})}function zd({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=ye(r),s=Buffer.alloc(Vo.span);Vo.encode({instruction:9,amountIn:U(t),minAmountOut:U(n)},s);let a=[k({pubkey:cr,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:Rn})),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 Yd({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=ye(r),s=Buffer.alloc(Eo.span);Eo.encode({instruction:11,maxAmountIn:U(t),amountOut:U(n)},s);let a=[k({pubkey:qo.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:Rn})),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 li(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 zd(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Yd(D(N({},a),{maxAmountIn:i,amountOut:o}),t);$a.logWithError("invalid params","params",r)}throw $a.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function qk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Fo.span);Fo.encode({instruction:0,nonce:5,startTime:U(t)},n);let i=ye(r),o=[k({pubkey:cr,isWritable:!1}),k({pubkey:qo.programId,isWritable:!1}),k({pubkey:Xd,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 tu({poolKeys:r}){let e=L([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ge(r.id),isWritable:!1}),k({pubkey:new ge(r.authority),isWritable:!1}),k({pubkey:new ge(r.openOrders),isWritable:!1}),k({pubkey:new ge(r.vault.A),isWritable:!1}),k({pubkey:new ge(r.vault.B),isWritable:!1}),k({pubkey:new ge(r.mintLp.address),isWritable:!1}),k({pubkey:new ge(r.marketId),isWritable:!1}),k({pubkey:new ge(r.marketEventQueue),isWritable:!1})];return{instruction:new Et({programId:new ge(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Ue,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as gu}from"@solana/spl-token";import{PublicKey as W,TransactionInstruction as Pt,SystemProgram as Ln,Keypair as Zo}from"@solana/web3.js";import wu from"bn.js";import ip from"bn.js";function nu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Gk(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function Xk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function mi(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Go(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Xo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function lr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function ru(r,e){return lr(r,e)?null:Go(r,e)}function iu(r,e){return lr(r,e)?null:Xo(r,e)}var Hd=Buffer.from("amm_config","utf8"),Qd=Buffer.from("pool","utf8"),jd=Buffer.from("pool_vault","utf8"),Zd=Buffer.from("pool_reward_vault","utf8"),ou=Buffer.from("position","utf8"),$d=Buffer.from("tick_array","utf8"),Jd=Buffer.from("operation","utf8"),ep=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Qk(r,e){return oe([Hd,nu(e)],r)}function su(r,e,t,n){return oe([Qd,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function zo(r,e,t){return oe([jd,e.toBuffer(),t.toBuffer()],r)}function au(r,e,t){return oe([Zd,e.toBuffer(),t.toBuffer()],r)}function we(r,e,t){return oe([$d,e.toBuffer(),mi(t)],r)}function mn(r,e,t,n){return oe([ou,e.toBuffer(),mi(t),mi(n)],r)}function ct(r,e){return oe([ou,e.toBuffer()],r)}function di(r){return oe([Buffer.from("metadata","utf8"),Pn.toBuffer(),r.toBuffer()],Pn)}function mr(r){return oe([Jd],r)}function lt(r,e){return oe([ep,e.toBuffer()],r)}import Kt from"bn.js";var de=new Kt(0),st=new Kt(1),Ft=new Kt(-1),at=new Kt(1).shln(64),pi=new Kt(1).shln(128),Yo=at.sub(st),dr=64,uu=pi.subn(1),He=-443636,Je=-He,Ct=new Kt("4295048016"),Rt=new Kt("79226673521066979257578248091"),cu=16,lu="59543866431248",mu="184467440737095516",du="15793534762490258745",fi=new Kt(10).pow(new Kt(6)),tp=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(tp||{}),$k={[500]:10,[3e3]:60,[1e4]:200},Jk={version:6,liquidity:de,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:de,feeGrowthGlobalX64B:de,protocolFeesTokenA:de,protocolFeesTokenB:de,swapInAmountTokenA:de,swapOutAmountTokenB:de,swapInAmountTokenB:de,swapOutAmountTokenA:de,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},pu={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:[]},eh=new Kt("18446744073700000000");var np=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(np/2));for(let d=0;d<l.length;d++){let{publicKey:y}=we(t,n,l[d]);u.push(y)}let m=(await It(e,u)).map(d=>d!==null?pr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=D(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}=we(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=G.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let 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}=we(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(G.checkIsOutOfBoundary(e)){if(e>Je)return!1;let n=G.getTickArrayStartIndexByTick(He,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 Re from"bn.js";var Ho=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=ru(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=iu(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)}}}},fr=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<=He)throw Error(`extensionTickBoundary check error: ${n}, ${He}`);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=lr(512,u)?null:Go(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=lr(512,u)?null:Xo(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 yr=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,at),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,at),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,at),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,at),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,at),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=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ce.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Pe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Pe(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Pe(new Lt(new F(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Pe(new Lt(new F(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 fu}from"@solana/spl-token";var Qe=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}=we(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}=Qe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?fr.checkTickArrayIsInit(le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):G.checkTickArrayIsInitialized(G.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=we(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,le.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=we(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/le.tickCount(e.tickSpacing)),i=t?G.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):G.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=le.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=vt.nextInitializedTickArrayStartIndex(G.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=fr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<He||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=D(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(de)){s.push(d);continue}let y=new Re(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,at),A=d.rewardTotalEmissioned.add(P);s.push(D(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<He&&(n=le.getArrayStartIndex(He,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 In(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=yu.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}=we(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await In(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=pr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ct(d,p).publicKey);let l=await It(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=bi.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:h}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),T=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:h,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=>D(N({},x),{pendingReward:new Re(0)})),leverage:T,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let I=await G.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=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}`]=B}if(o){let p=Object.values(m),d=await It(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]=pr.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}`,h=y[m[P].toString()],T=y[m[A].toString()],I=h.ticks[G.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[G.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await yr.GetPositionFees(f,g,I,B),M=await yr.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Re(0))?x:new Re(0),g.tokenFeeAmountB=K.gte(new Re(0))?K:new Re(0);for(let E=0;E<M.length;E++)g.rewardInfos[E].pendingReward=M[E].gte(new Re(0))?M[E]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new F(0)}){var M;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 F(0))?u=c?Ct.add(new Re(1)):Rt.sub(new Re(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Pe(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Qe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((M=p.fee)!=null?M:de),u),g=Pe(d,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new F(1).div(P),h=d.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),T=Pe(h,m,i,!1),I=c?e.currentPrice:new F(1).div(e.currentPrice),B=new F(A).sub(I).abs(),x=I,K=new ve(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:sn(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:K,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 pe(D(N({},u),{mint:u.address,isToken2022:u.programId===fu.toBase58()})),new pe(D(N({},c),{mint:c.address,isToken2022:c.programId===fu.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await Qe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $t(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(N({},p),{amount:new Te(l,p.amount),fee:p.fee===void 0?void 0:new Te(l,p.fee)}),I=D(N({},d),{amount:new Te(m,d.amount),fee:d.fee===void 0?void 0:new Te(m,d.fee)}),B=D(N({},y),{amount:new Te(m,y.amount),fee:y.fee===void 0?void 0:new Te(m,y.fee)}),x=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),K=new Xe({baseToken:l,denominator:new Re(10).pow(new Re(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),M=new Te(l,A);return{realAmountIn:T,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:K,priceImpact:P,fee:M,remainingAccounts:h}}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[kn(e.mintA.address).toString()],p=i[kn(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=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),b=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new F(P.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(A.toString()).div(new F(10).pow(y)).mul(p.value)),B=new F(h.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(T.toString()).div(new F(10).pow(y)).mul(p.value)),x=B.div(I.add(B)).div(B),M=new F(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,H=e.rewardDefaultInfos.map(v=>{var se,ft;let j=v.mint.decimals,ee=i[v.mint.address];return u<((se=v.startTime)!=null?se:0)||u>((ft=v.endTime)!=null?ft:0)||!v.perSecond||!ee||j===void 0?0:new F(ee.value).mul(new F(v.perSecond).mul(E)).div(new F(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:M,rewardsApr:H,apr:M+H.reduce((v,j)=>v+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=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),p=Z.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=Pe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Re(new F(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,p,f,!a):new Re(0);else if(l.lte(p)){let A=ce.getLiquidityFromTokenAmountA(l,p,f,!a),h=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Re(0):ce.getLiquidityFromTokenAmountB(m,p,f);return Qe.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=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Pe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Pe(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Pe(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity: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=yi.decode(i.data),s=lt(e,new $t(n.id)).publicKey,a=await Qe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(N({},o),{id:new $t(n.id),programId:new $t(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(N({},n.config),{id:new $t(n.config.id),fundOwner:""}),currentPrice:new F(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,h,T,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=Z.priceToSqrtPriceX64(new F(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[Pe(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Pe(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ce.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:de),g.amount.sub((I=g.fee)!=null?I:de));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(de)||(o=o.add(st)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(st)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(pi).sub(t).mod(pi)}};function Ee(r,e){return Qo(r.mul(e),64,256)}function rp(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Qo(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(F.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(F.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln(dr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,st,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(dr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,st,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<He||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=uu.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.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=rp(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<cu;){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(lu)),p=Qo(m.sub(new re(mu)),64,128).toNumber(),d=Qo(m.add(new re(du)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},fn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.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=Z.getSqrtPriceX64FromTick(o);return Z.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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(dr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),st,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),at):$.mulDivFloor(n,t.sub(e),at)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,st,Yo):a.shrn(dr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Yo,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 F(u.toString()).mul(l).toFixed(0)),p=new re(new F(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,h,T;let c=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ce.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Pe(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Pe(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Pe(new re(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Pe(new re(new F(d.amountB.toString()).mul(p).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.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(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(st):Rt.sub(st)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(de),b={amountSpecifiedRemaining:p,amountCalculated:de,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,h=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let I=G.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Qe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");g=M.nextStartIndex;let{publicKey:E}=we(e,t,g);x=E,P=n[g],B=G.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<He?T.tickNext=He:T.tickNext>Je&&(T.tickNext=Je),T.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(T.tickNext);let K;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?K=y:K=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=pn.swapStepCompute(b.sqrtPriceX64,K,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let M=B.liquidityNet;s&&(M=M.mul(Ft)),b.liquidity=ce.addDelta(b.liquidity,M)}h=T.tickNext!=b.tick&&!s&&P.startTickIndex===T.tickNext,b.tick=s?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let M=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);h=M!=b.tick&&!s&&P.startTickIndex===M,b.tick=M}++A}try{let{nextStartIndex:T,isExist:I}=le.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(we(e,t,T).publicKey),d=T)}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(de);if(u){let l=$.mulDivFloor(i,fi.sub(new re(o.toString())),fi);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.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=Z.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),fi.sub(new re(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var _e=60,dn=512,G=class{static getTickArrayAddressByTick(e,t,n,i){let o=G.getTickArrayStartIndexByTick(n,i),{publicKey:s}=we(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=G.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=_e)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=le.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*le.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*_e,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*_e,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*_e:e+t*_e}static mergeTickArrayBitmap(e){let t=new ip(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*_e));return[...G.searchLowBitFromStart(e,t,s-1,o,n),...G.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return G.searchHightBitFromStart(e,t,0,dn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=G.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=we(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>G.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=le.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<He||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=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=fn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}};var cT=L([fe(8),_("bump"),Bt("index"),S(""),ze("protocolFeeRate"),ze("tradeFeeRate"),Bt("tickSpacing"),q(w(),8,"")]),op=L([ze("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),jo=L([fe(8),qe("initialized"),S("poolId"),q(op,1e3,"observations"),q(z(),5,"")]),sp=L([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),yi=L([fe(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),Bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),De("tickCurrent"),Bt("observationIndex"),Bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(sp,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")]),ap=L([z("growthInsideLastX64"),w("rewardAmountOwed")]),bi=L([fe(8),_("bump"),S("nftMint"),S("poolId"),De("tickLower"),De("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(ap,3,"rewardInfos"),q(w(),8,"")]),lT=L([fe(8),_("bump"),S("poolId"),De("tickLowerIndex"),De("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),up=L([De("tick"),ga("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(ze(),13,"")]),pr=L([fe(8),S("poolId"),De("startTickIndex"),q(up,_e,"ticks"),_("initializedTickCount"),q(_(),115,"")]),bu=L([fe(329),q(S(),100,"whitelistMints")]),yu=L([fe(8),S("poolId"),q(q(w(),8),Ho,"positiveTickArrayBitmap"),q(q(w(),8),Ho,"negativeTickArrayBitmap")]);var Au=ae("Raydium_Clmm"),kt={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]},Se=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Ln.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([...kt.createPool,...g]);return new Pt({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 W(o.address),new W(s.address)],y=[Ln.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(jo.span),space:jo.span,programId:n})],{publicKey:f}=su(n,a,p,d),{publicKey:b}=zo(n,f,p),{publicKey:g}=zo(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new W(o.programId||Ue),d,g,new W(s.programId||Ue),lt(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[V.CreateAccount,V.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,h,T,I,B,x,K,M){let E=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),_("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:gu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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 W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=Zo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,d,f),{publicKey:P}=we(p,d,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:h}=di(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,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 W(e.programId),new W(e.id)],y;if(l)y=new W((await l(1))[0]);else{let x=Zo.generate();m.push(x),y=x.publicKey}let f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(p,d,f),{publicKey:P}=we(p,d,b),{publicKey:A}=be(n.wallet,y,Ue),{publicKey:h}=di(y),{publicKey:T}=ct(p,y),{publicKey:I}=mn(p,d,i,o),B=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),i,o,f,b,c,s,a,u,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[V.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,h,T,I,B,x,K,M){let E=L([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),_("optionBaseFlag"),qe("baseFlag")]),H=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],v=[{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:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1},{pubkey:gu,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...H],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new wu(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...kt.openPosition,...j]);return new Pt({keys:v,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 W((await l(1))[0]);else{let x=Zo.generate();p.push(x),m=x.publicKey}let[d,y]=[new W(e.programId),new W(e.id)],f=G.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=G.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=we(d,y,f),{publicKey:P}=we(d,y,b),{publicKey:A}=be(n.wallet,m,Ue),{publicKey:h}=di(m),{publicKey:T}=ct(d,m),{publicKey:I}=mn(d,y,i,o),B=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(t.mintA.address),new W(t.mintB.address),i,o,f,b,s,a,u,c,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?lt(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:p,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=L([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...kt.closePosition,...u]);return new Pt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new W(e.programId),{publicKey:s}=be(n.wallet,i.nftMint,Ue),{publicKey:a}=ct(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:[V.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=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),qe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{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:Ue,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...kt.increaseLiquidity,...I]);return new Pt({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(u,c,l),{publicKey:d}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{publicKey:f}=ct(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 W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[V.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 W(e.programId),new W(e.id)],l=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(u,c,l),{publicKey:d}=we(u,c,m),{publicKey:y}=be(i.wallet,n.nftMint,Ue),{publicKey:f}=ct(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 W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[V.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=L([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),qe("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{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:Ue,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:new wu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...kt.increaseLiquidity,...I]);return new Pt({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=L([z("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],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:Ue,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},...T],B=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:P},B);let x=Buffer.from([...kt.decreaseLiquidity,...B]);return new Pt({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 W(e.programId),new W(e.id)],m=G.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=G.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(c,l,m),{publicKey:y}=we(c,l,p),{publicKey:f}=be(i.wallet,n.nftMint,u),{publicKey:b}=ct(c,n.nftMint),{publicKey:g}=mn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new W(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new W(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),P,o,s,a,Qe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[V.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=L([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),qe("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],h=[{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:Ue,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],T=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...kt.swap,...T]);return new Pt({keys:h,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 W(e.programId),new W(e.id)],[m,p]=[new W(t.vault.A),new W(t.vault.B)],[d,y]=[new W(e.mintA.address),new W(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new W(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,lt(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Ln.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([...kt.initReward,...f]);return new Pt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new W(e.programId),new W(e.id)],a=au(o,s,i.mint).publicKey,u=mr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new W(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:[V.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=L([_("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:Ue,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([...kt.setRewardEmissions,...f]);return new Pt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new W(e.programId),new W(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 W(t.rewardInfos[p].vault),c=new W(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Au.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=mr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new W(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[V.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=L([_("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:Ue,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([...kt.collectReward,...l]);return new Pt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new W(e.programId),new W(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new W(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Au.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:[V.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 W(e.programId),new W(e.id)],[m,p]=[new W(t.vault.A),new W(t.vault.B)],[d,y]=[new W(e.mintA.address),new W(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new W(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:[V.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as dp}from"@solana/web3.js";import{PublicKey as lp}from"@solana/web3.js";import Pu from"bn.js";var ku=new Pu(25),hu=new Pu(1e4),cp={4:3,5:3};var mp=ae("Raydium_liquidity_serum");function Tu({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=lp.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw mp.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 br from"bn.js";function Jo({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 pp({programId:r,marketId:e}){let{publicKey:t}=oe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function fp({programId:r}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Iu({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}=fp({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=pp({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}=Tu({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:dp.default,configId:Jo({programId:a})}}var $o;async function WT({connection:r,poolKeysList:e,config:t}){$o||($o=new Cn({connection:r}),await $o.initStableModelLayout());let n=e.map(s=>tu({poolKeys:s}));return(await $s(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Js(s,"GetPoolData"),u=new br(Mt(a,"status")),c=Number(Mt(a,"coin_decimals")),l=Number(Mt(a,"pc_decimals")),m=Number(Mt(a,"lp_decimals")),p=new br(Mt(a,"pool_coin_amount")),d=new br(Mt(a,"pool_pc_amount")),y=new br(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 br(f)}})}import ut from"bn.js";var gr=class extends Be{constructor(t){super(t);this.stableLayout=new Cn({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 ut(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Xa(t[o?"mintB":"mintA"]),[u,c]=[new ut(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ut(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ut(new F(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,F.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()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let p=Ke;s.isZero()||(p=m==="base"?Dr(s.mul(c),u):Dr(s.mul(u),c)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let d=Dr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",d.toString());let f=new ve(new ut(1)).add(i).mul(p).quotient,b=new Te(a,p),g=new Te(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],h=[i.raw,o.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(P.reverse(),A.reverse(),h.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[K,M]=A,[E,H]=h,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Wt=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Wt,se=Ie(Wt,["tokenAccount"]);j.addInstruction(se);let Cr=await l.handleTokenAccount({side:"in",amount:H,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ft}=Cr,_n=Ie(Cr,["tokenAccount"]);j.addInstruction(_n);let Vn=await l.handleTokenAccount({side:"out",amount:0,mint:new it(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Bi}=Vn,Si=Ie(Vn,["tokenAccount"]);return j.addInstruction(Si),j.addInstruction({instructions:[Ja({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:ft,lpTokenAccount:Bi,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:H,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5AddLiquidity:V.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn: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),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=Ie(B,["tokenAccount"]);b.addInstruction(h);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:T}=x,I=Ie(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Uo({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.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=gi,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||be(this.scope.ownerPubKey,ee.accountInfo.mint,gi).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 ut(0)),A=t.mintA.address===pe.WSOL.mint.toString(),h=t.mintB.address===pe.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:gi,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||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:gi,mint:new it(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Wt of s.rewardInfos){let Cr=Wt.mint.address===pe.WSOL.mint.toString();if(b[Wt.mint.address])ee.push(b[Wt.mint.address]);else{let{account:Vn,instructionParams:fs}=await this.scope.account.getOrCreateTokenAccount({mint:new it(Wt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Cr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Vn||this.logAndCreateError("farm reward account not found:",Wt.mint.address),fs&&f.addInstruction(fs),ee.push(Vn)}}let se=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],ft={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:se,lpAccount:g,rewardAccounts:ee},_n=At[s.programId],Bi=_n===6?or(ft):_n===5?sr(ft):ar(ft),Si={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[Bi],instructionTypes:[Si[_n]]})}let K=await this.getAmmPoolKeys(t.id),M=Uo({poolInfo:t,poolKeys:K,userKeys:{lpTokenAccount:g,baseTokenAccount:T,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity],lookupTableAddress:K.lookupTableAccount?[K.lookupTableAccount]:[]});let[E,H]=t.mintA.address===n.mintA.address?[T,B]:[B,T],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Se.openPositionFromBaseInstructions(D(N({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:H},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo: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 H;let b=c.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),g=c.useSOLBalance&&i.mint.equals(xu),P=c.useSOLBalance&&o.mint.equals(xu),A=this.createTxBuilder(),{account:h,instructionParams:T}=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(T||{});let{account:I,instructionParams:B}=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(B||{}),h===void 0||I===void 0)throw Error("you don't has some token account");let x=Iu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:M,instructionType:E}=eu(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:be(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[M],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=Jo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return za.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===eo.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=Za(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new F(1e6).div(x*1e6):y=new F(x*1e6).div(1e6)}let f=n,b=new ut(0),g=new ut(0);if(!f.isZero())if(d){g=zt(f.mul(ku),hu);let x=f.sub(g),K=m.add(x);b=p.mul(x).div(K)}else{g=f.mul(new ut(2)).div(new ut(1e4));let x=f.sub(g);l==="quote"?b=new ut(Qa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ut(ja(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ut(new F(b.toString()).mul(1-s).toFixed(0)),A=b,h=P,T=new F(b.toString()).div(new F(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(T=new F(b.toString()).div(f.sub(g).toString()));let I=y.sub(T).div(y).mul(100);return{amountOut:A,minAmountOut:h,currentPrice:y,executionPrice:T,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}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new it(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Ie(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new it(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Ie(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[li({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?V.AmmV4SwapBaseIn:V.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as ue}from"@solana/web3.js";import mt from"bn.js";var wr=class extends Be{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 mt(new ue(i.address).toBuffer()).gt(new mt(new ue(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Se.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:D(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:[]}},pu),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(),[h,T]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(K||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),E=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:D(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(E),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:E.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:h}=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(h||{});let{account:T,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});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Se.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,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:h}=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(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,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:h}=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(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,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:h}=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,h&&p.addInstruction(h);let T=[];for(let K of t.rewardDefaultInfos){let M=i.useSOLBalance&&K.mint.address===te.toString(),E;if(K.mint.address===t.mintA.address)E=f;else if(K.mint.address===t.mintB.address)E=b;else{let{account:H,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(K.mint.programId),mint:new ue(K.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});E=H,v&&p.addInstruction(v)}T.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:B.instructions,instructionTypes:[V.ClmmDecreasePosition]});let x=N({},B.address);if(i.closePosition){let K=await Se.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=N(N({},x),K.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=Se.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 mt(new F(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=Se.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 mt(new F(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=Se.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 mt(new F(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=Se.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 mt(new F(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=Se.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=Se.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=Se.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 F(0))?y=t.toString()===e.mintA.address?Ct.add(new mt(1)):Rt.sub(new mt(1)):y=Z.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(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new ue(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?be(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.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:h}=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,h&&l.addInstruction(h)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:h}=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,h&&l.addInstruction(h)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===te.toString(),T=c[A.mint.address];if(!T){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});T=I,B&&l.addInstruction(B)}c[A.mint.address]=T,g.push(T)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let h=Se.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new mt(0),amountMinA:new mt(0),amountMinB:new mt(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(mr(e).publicKey);return t?bu.decode(t.data).whitelistMints.filter(i=>!i.equals(ue.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new mt(1))).map(s=>ct(new ue(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=bi.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new ue(e)),n=yi.decode(t.data),i=Z.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return D(N({},n),{currentPrice:i})}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as Ai,TOKEN_PROGRAM_ID as en,AccountLayout as Vu}from"@solana/spl-token";var yp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),bp=Buffer.from("amm_config","utf8"),gp=Buffer.from("pool","utf8"),wp=Buffer.from("pool_lp_mint","utf8"),Ap=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("observation","utf8");function kp(r){return oe([yp],r)}function hp(r,e){return oe([bp,xp(e)],r)}function Tp(r,e,t,n){return oe([gp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Ip(r,e){return oe([wp,e.toBuffer()],r)}function Bu(r,e,t){return oe([Ap,e.toBuffer(),t.toBuffer()],r)}function wi(r,e){return oe([Pp,e.toBuffer()],r)}function xp(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Su({programId:r,mintA:e,mintB:t}){let n=hp(r,0).publicKey,i=kp(r).publicKey,o=Tp(r,n,e,t).publicKey,s=Ip(r,o).publicKey,a=Bu(r,o,e).publicKey,u=Bu(r,o,t).publicKey,c=wi(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Ar}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as es,TOKEN_2022_PROGRAM_ID as Ku,ASSOCIATED_TOKEN_PROGRAM_ID as Bp}from"@solana/spl-token";var Sp=ae("Raydium_cpmm"),Pr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function Cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=L([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=[{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:es,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Bp,isSigner:!1,isWritable:!1},{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new Ar({keys:T,programId:r,data:Buffer.from([...Pr.initialize,...I])})}function Ru(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return Sp.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new Ar({keys:b,programId:r,data:Buffer.from([...Pr.deposit,...g])})}function Lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=L([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:es,isSigner:!1,isWritable:!1},{pubkey:Ku,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Vs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new Ar({keys:b,programId:r,data:Buffer.from([...Pr.withdraw,...g])})}function Ou(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new Ar({keys:g,programId:r,data:Buffer.from([...Pr.swapBaseInput,...P])})}function Nu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=L([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new Ar({keys:g,programId:r,data:Buffer.from([...Pr.swapBaseOutput,...P])})}import je from"bn.js";var Mu=L([fe(8),_("bump"),qe("disableCreatePool"),Bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),_u=L([fe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var kr=class extends Be{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=_u.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=Mu.decode(u.data))}return D(N({},i),{baseReserve:new je(Vu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new je(Vu.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=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,j;let p=i.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),d=new je(new Y(c.mintA.address).toBuffer()).lte(new je(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===Ai.toBase58(),A=i.useSOLBalance&&f.address===Ai.toBase58(),[h,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,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:K,instructionParams:M}=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(M||{}),B===void 0||K===void 0)throw Error("you don't has some token account");let E=Su({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[Cu(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,K,be(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((v=y.programId)!=null?v:en),new Y((j=f.programId)!=null?j:en),E.observationId,b,g,n)],instructionTypes:[V.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(N({},E),{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:D(N({},t),{mintAmountA:new F(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new F(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new F(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new F(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===Ai.toString(),A=t.mintB.address===Ai.toString(),h=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:B,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});h.addInstruction(x||{});let{account:K,instructionParams:M}=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});h.addInstruction(M||{}),!B&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:H}=ee,v=Ie(ee,["tokenAccount"]);h.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[Ru(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),H,B,K,new Y(j.vault.A),new Y(j.vault.B),T,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[V.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var H,v;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 je(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[p,d]=[Pe(c,t.mintA.extensions.feeConfig,m,!0),Pe(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],P=b.equals(te),A=g.equals(te),h,T,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=I,B&&f.addInstruction(B);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=x,K&&f.addInstruction(K),(!h||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let M=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});M||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[Lu(new Y(t.programId),this.scope.ownerPubKey,new Y(E.authority),new Y(t.id),M,h,T,new Y(E.vault.A),new Y(E.vault.B),b,g,new Y(t.lpMint.address),n,c.sub((H=p.fee)!=null?H:new je(0)),l.sub((v=d.fee)!=null?v:new je(0)))],instructionTypes:[V.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var h,T,x,K,M,E;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((h=t.mintA.programId)!=null?h:en),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T: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=Ie(I,["tokenAccount"]);l.addInstruction(b);let B=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}=B,P=Ie(B,["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?Ou(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((K=t.mintB.programId)!=null?K:en),m,p,wi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Nu(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((M=t.mintB.programId)!=null?M:en),new Y((E=t.mintA.programId)!=null?E:en),p,m,wi(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?V.CpmmSwapBaseIn:V.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,h,T,I,B,x,K;let s=1-Number(n.toSignificant())/100,a=new je(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Pe(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new je(0)),[l,m]=[new je(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new je(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new je(new F(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(h=(A=u.fee)==null?void 0:A.toString())!=null?h: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:Ke,fee:void 0,expirationTime:void 0};c.isZero()||(f=Pe(Kp(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new ve(new je(1)).add(n),g=Pe(b.mul(f.amount.sub((T=f.fee)!=null?T:new je(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(K=(x=g.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function Kp(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new je(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new je(1))),{amountA:i,amountB:o}}var hr=class extends Be{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(Ke)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(Ke)?-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 St({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})]}),Zn({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 St({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:[Zn({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 Cp}from"@solana/spl-token";import{PublicKey as Rp,Transaction as ts,TransactionInstruction as Lp}from"@solana/web3.js";import Eu from"bn.js";var Ze=class extends Be{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 Eu(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 It(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(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new Eu(0))).filter(x=>!x).length!==3,I=o>A&&o<h&&g.status===1,B=T&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Ze.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:B,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,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(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(pe.WSOL.mint),associatedOnly:u.mintAddress.equals(pe.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(pe.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(pe.WSOL.mint),associatedOnly:m.mintAddress.equals(pe.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 zr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new ts().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new ts().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new ts().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=L([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:Cp,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 Lp({keys:o,programId:e,data:a})}},dt=Ze;dt.CLAIMED_NUM=3,dt.POOL_LAYOUT=L([fe(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(L([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),dt.OWNER_LAYOUT=L([fe(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(L([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Ze.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),dt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Rp(e)),dt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},dt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Tr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qu}from"@solana/spl-token";import Ir from"bn.js";import{TransactionInstruction as Np,SYSVAR_RENT_PUBKEY as Mp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fu}from"@solana/spl-token";import{createInitializeAccountInstruction as vu}from"@solana/spl-token";import{SystemProgram as bn,Transaction as Wu}from"@solana/web3.js";function Op(r="accountFlags"){let e=new ni(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 ns=L([fe(5),Op("accountFlags"),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),fe(7)]);function _p({programId:r,marketInfo:e}){let t=L([_("version"),ze("instruction"),w("baseLotSize"),w("quoteLotSize"),Bt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Mp,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 Np({keys:n,programId:r,data:i})}async function Du({connection:r,wallet:e,marketInfo:t}){let n=new Wu,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:Fu}),bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:Fu}),vu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),vu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Wu;return o.add(bn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(ns.span),space:ns.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}),_p({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:[V.CreateAccount,V.CreateAccount,V.InitAccount,V.InitAccount]},{transaction:o,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.InitMarket]}]}var On=class extends Be{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:qu}),f=Ye({fromPublicKey:u,programId:qu}),b=0,g=new Ir(100);function P(){let K=new Ir(0);for(;;)try{return{vaultOwner:Tr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new Ir(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new Ir(Math.round(10**e.decimals*n)),I=new Ir(Math.round(n*10**t.decimals*i));if(T.eq(Ke))throw Error("lot size is too small");if(I.eq(Ke))throw Error("tick size or lot size is too small");let B=await Du({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:h,baseLotSize:T,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let K of B.slice(1,B.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Tr(e.mint),quoteMin:new Tr(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Tr(e.mint),quoteMin:new Tr(t.mint)}})}};import{PublicKey as Br}from"@solana/web3.js";import{PublicKey as Vp,TransactionInstruction as is,SYSVAR_CLOCK_PUBKEY as Ep}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as os}from"@solana/spl-token";var rs=L([_("instruction"),ma("amount")]),xr=L([_("instruction")]);function RB({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new Vp("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:os,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Wi,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(rs.span);return rs.encode({instruction:1,amount:Number(e)},i),new is({keys:n,programId:r,data:i})}function Pi({programId:r},e){let t=[{pubkey:os,isSigner:!1,isWritable:!1},{pubkey:Wi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(xr.span);return xr.encode({instruction:2},n),new is({keys:t,programId:r,data:n})}function ss(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(xr.span);xr.encode({instruction:2},s);let a=[{pubkey:os,isWritable:!1,isSigner:!1},{pubkey:Ep,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 is({programId:e.programId,keys:a,data:s})}import Uu from"bn.js";var Fp={[Hn.IDO_PROGRAM_ID_V1.toString()]:1,[Hn.IDO_PROGRAM_ID_V2.toString()]:2,[Hn.IDO_PROGRAM_ID_V3.toString()]:3,[Hn.IDO_PROGRAM_ID_V4.toString()]:4},Nn=class extends Be{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Fp[t.programId];a||this.logAndCreateError("invalid version",a);let u=ye(t),[c,l]=[!new Uu(e.coin).isZero(),!new Uu(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?[Pi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new Br(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Pi({programId:new Br(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Br(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Pi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new Br(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 Br(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[ss(D(N({},g),{side:"base"}))]:[],...l?[ss(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as vp}from"@solana/web3.js";import{MintLayout as Wp,TOKEN_2022_PROGRAM_ID as as,TOKEN_PROGRAM_ID as us}from"@solana/spl-token";var Sr=class extends Be{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Tt.address,Tt),this._mintGroup.official.add(Tt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,D(N({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?as.toBase58():us.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return Tt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new vp(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Wp.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 ki=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||"mainnet",this._owner=i?new gt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new ur({scope:this,moduleName:"Raydium_Farm"}),this.account=new $n({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new gr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Sr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new hr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new wr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new kr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new dt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new On({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Nn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Dp({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Jr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new ki(D(N({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(ei);return this._owner.publicKey}setOwner(e){return this._owner=e?new gt(e):void 0,this}get connection(){if(!this._connection)throw new Error(aa);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(ei),new Error(ei)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as ms,TOKEN_2022_PROGRAM_ID as cs}from"@solana/spl-token";import{PublicKey as pt,TransactionInstruction as ds,SystemProgram as Xu}from"@solana/web3.js";import ls from"bn.js";function VS(r,e,t,n,i,o,s,a,u,c,l,m){let p=L([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1},{pubkey:new pt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new pt(t.id),isSigner:!1,isWritable:!0},{pubkey:new pt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ye(t);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=ye(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 pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ye(t);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 ds({keys:d,programId:r,data:y})}function ES(r,e,t,n,i,o,s,a,u,c){let l=L([_("instruction")]),m=[{pubkey:Xu.programId,isSigner:!1,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new pt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new pt(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=ye(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=ye(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 pt("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=ye(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 ds({keys:m,programId:r,data:p})}function Gu(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new pt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=ye(e),u=s.mintA.address===t;return[{pubkey:new pt(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(cs)||a.mintB.programId.equals(cs)?[{pubkey:cs,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:lt(new pt(String(r.programId)),new pt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ye(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function qp(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=L([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:ms,isSigner:!1,isWritable:!1}];f.push(...Gu(a,c,o,t,n,d[0])),f.push(...Gu(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new ds({keys:f,programId:r,data:b})}async function FS({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ye(n.poolKey[0]),m=t.equals(l.mintA.address)?Ct.add(st):Rt.sub(st);return await Se.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 ls(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[li({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 ls(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?V.AmmV5SwapBaseIn:V.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:[qp(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 ls(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Yu from"bn.js";var ps=new Yu(1e6);function Up(r,e,t){return r.mul(e).add(t).sub(new Yu(1)).div(t)}function zu(r,e,t){return r.mul(e).div(t)}var hi=class{static tradingFee(e,t){return Up(e,t,ps)}static protocolFee(e,t){return zu(e,t,ps)}static fundFee(e,t){return zu(e,t,ps)}};import Kr from"bn.js";function Ti(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Gp(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=Ti(r,e);if(n.gt(Mn)){t=t.add(new Kr(1));let i=r.div(t);n=Ti(r,t),n.gt(Mn)&&(i=i.add(new Kr(1)))}return[t,e]}var Mn=new Kr(0),Ii=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Gp(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 Ti(e.mul(n),t).gt(Mn)&&s.gt(Mn)&&(s=s.add(new Kr(1))),Ti(e.mul(i),t).gt(Mn)&&a.gt(Mn)&&(a=a.add(new Kr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var Hu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Hu||{}),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=hi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ii.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={[Zr.toBase58()]:3},Zu={3:Zr};var Xp=L([fe(5),fe(8),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),fe(7)]),$u={3:Xp};import{PublicKey as Ju}from"@solana/web3.js";var xi=ae("Serum"),ec=class{static getProgramId(e){let t=Zu[e];return t||xi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=ju[t];return n||xi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=$u[e];return t||xi.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=Ju.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return xi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ju.default,nonce:i}}};var OK=r=>r;export{yb as ACCOUNT_TYPE_SIZE,Db as ALL_PROGRAM_ID,Hd as AMM_CONFIG_SEED,Ol as AMM_STABLE,eo as AMM_V4,df as ANAMint,We as API_URLS,Sl as AccountType,cT as AmmConfigLayout,Jr as Api,cu as BIT_PRECISION,zt as BNDivCeil,an as BNLayout,Py as BN_100,ky as BN_1000,hy as BN_10000,Ay as BN_FIVE,Us as BN_ONE,nn as BN_TEN,wy as BN_THREE,gy as BN_TWO,Ke as BN_ZERO,Qg as BitStructure,la as Blob,Nl as CLMM_PROGRAM_ID,Wi as CLOCK_PROGRAM_ID,Wl as CREATE_CPMM_POOL_AUTH,Dl as CREATE_CPMM_POOL_FEE_ACC,vl as CREATE_CPMM_POOL_PROGRAM,wr as Clmm,Se as ClmmInstrument,Ii as ConstantProductCurve,Mu as CpmmConfigInfoLayout,hi as CpmmFee,_u as CpmmPoolInfoLayout,Dn as Currency,rn as CurrencyAmount,Qu as CurveCalculator,qb as DEVNET_PROGRAM_ID,yg as DEV_API_URLS,Ul as DEV_CREATE_CPMM_POOL_AUTH,Gl as DEV_CREATE_CPMM_POOL_FEE_ACC,ql as DEV_CREATE_CPMM_POOL_PROGRAM,Nd as DataElement,pf as ETHMint,Ho as EXTENSION_TICKARRAY_BITMAP_SIZE,Oa as FARM_LOCK_MINT,Na as FARM_LOCK_VAULT,$i as FARM_PROGRAM_ID_V3,Ji as FARM_PROGRAM_ID_V5,xn as FARM_PROGRAM_ID_V6,At as FARM_PROGRAM_TO_VERSION,_a as FARM_VERSION_TO_LEDGER_LAYOUT,Ma as FARM_VERSION_TO_STATE_LAYOUT,Wb as FEE_DESTINATION_ID,fi as FEE_RATE_DENOMINATOR,ps as FEE_RATE_DENOMINATOR_VALUE,np as FETCH_TICKARRAY_COUNT,tp as Fee,ne as Fraction,Hn as IDO_ALL_PROGRAM,_l as IDO_PROGRAM_ID_V1,Vl as IDO_PROGRAM_ID_V2,El as IDO_PROGRAM_ID_V3,Fl as IDO_PROGRAM_ID_V4,Fr as INSTRUCTION_PROGRAM_ID,V as InstructionType,to as JupTokenType,hu as LIQUIDITY_FEES_DENOMINATOR,ku as LIQUIDITY_FEES_NUMERATOR,cp as LIQUIDITY_VERSION_TO_SERUM_VERSION,xk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,lu as LOG_B_2_X32,mu as LOG_B_P_ERR_MARGIN_LOWER_X64,du as LOG_B_P_ERR_MARGIN_UPPER_X64,Hr as LOOKUP_TABLE_CACHE,Qn as Layout,ce as LiquidityMath,oc as LogLevel,Ci as Logger,ns as MARKET_STATE_LAYOUT_V2,Xp as MARKET_STATE_LAYOUT_V3,$u as MARKET_VERSION_TO_STATE_LAYOUT,Zs as MAX_BASE64_SIZE,Rt as MAX_SQRT_PRICE_X64,Je as MAX_TICK,An as MEMO_PROGRAM_ID,Vs as MEMO_PROGRAM_ID2,Pn as METADATA_PROGRAM_ID,Ct as MIN_SQRT_PRICE_X64,He as MIN_TICK,Rn as MODEL_DATA_PUBKEY,ec as Market,$ as MathUtil,Yo as MaxU64,uu as MaxUint128,Ft as NEGATIVE_ONE,mf as NRVMint,st as ONE,Ll as OPEN_BOOK_PROGRAM,Jd as OPERATION_SEED,jo as ObservationInfoLayout,op as ObservationLayout,bu as OperationLayout,uo as OptionLayout,gt as Owner,rf as PAIMint,Zd as POOL_REWARD_VAULT_SEED,Qd as POOL_SEED,ep as POOL_TICK_ARRAY_BITMAP_SEED,jd as POOL_VAULT_SEED,ou as POSITION_SEED,ve as Percent,oa as PoolFetchType,yi as PoolInfoLayout,Qe as PoolUtils,bi as PositionInfoLayout,ap as PositionRewardInfoLayout,yr as PositionUtils,Xe as Price,lT as ProtocolPositionLayout,pi as Q128,at as Q64,nf as RAYMint,tt as RENT_PROGRAM_ID,ki as Raydium,sp as RewardInfo,Hu as RoundDirection,Gi as Rounding,Ml as Router,ju as SERUM_PROGRAMID_TO_VERSION,Zr as SERUM_PROGRAM_ID_V3,Zu as SERUM_VERSION_TO_PROGRAMID,sa as SESSION_KEY,Ne as SOLMint,Tt as SOL_INFO,ek as SPL_MINT_LAYOUT,of as SRMMint,no as STORAGE_KEY,Es as SYSTEM_PROGRAM_ID,Z as SqrtPriceMath,Cn as StableLayout,co as Structure,pn as SwapMath,dn as TICK_ARRAY_BITMAP_SIZE,$d as TICK_ARRAY_SEED,_e as TICK_ARRAY_SIZE,$k as TICK_SPACINGS,Me as TOKEN_WSOL,vt as TickArrayBitmap,yu as TickArrayBitmapExtensionLayout,fr as TickArrayBitmapExtensionUtils,pr as TickArrayLayout,up as TickLayout,fn as TickMath,le as TickQuery,G as TickUtils,pe as Token,Te as TokenAmount,jr as TxBuilder,hn as TxVersion,dr as U64Resolution,eh as U64_IGNORE_RANGE,oo as UInt,sf as USDCMint,lf as USDHMint,af as USDTMint,Rl as UTIL1216,lo as Union,Ra as Voter,pd as VoterDepositEntry,dd as VoterLockup,Ca as VoterRegistrar,md as VoterVotingMintConfig,te as WSOLMint,ni as WideBits,_t as WrappedLayout,de as ZERO,vs as _100_PERCENT,k as accountMeta,iy as add,Xr as addComputeBudget,vo as addLiquidityLayout,Mw as array,Ao as associatedLedgerAccountLayout,so as bits,fe as blob,qe as bool,Oo as calFarmRewardAmount,Up as ceilDiv,qn as checkLegacyTxSize,Un as checkV0TxSize,ji as chunkArray,xr as claimLayout,Vt as closeAccountInstruction,Ei as commonSystemAccountMeta,Fa as createAssociatedLedgerAccountInstruction,ae as createLogger,za as createPoolFeeLayout,eu as createPoolV4InstructionV2,Ik as createPoolV4Layout,St as createWSolAccountInstructions,Tw as cstr,qf as currencyEquals,fl as decimalToFraction,Dm as decodeBool,ey as div,Dr as divCeil,$e as dwLayout,qm as encodeBool,_g as endlessRetry,ml as eq,ww as f32,Aw as f32be,Pw as f64,kw as f64be,To as farmAddRewardLayout,vA as farmLedgerLayoutV3_1,er as farmLedgerLayoutV3_2,WA as farmLedgerLayoutV5_1,Sa as farmLedgerLayoutV5_2,Ka as farmLedgerLayoutV6_1,Ea as farmRewardInfoToConfig,ko as farmRewardLayout,ho as farmRewardRestartLayout,ld as farmRewardTimeInfoLayout,xa as farmStateV3Layout,Ba as farmStateV5Layout,Jn as farmStateV6Layout,mP as fetchMultipleFarmInfoAndUpdate,WT as fetchMultipleInfo,bb as fetchMultipleMintInfos,oe as findProgramAddress,Vo as fixedSwapInLayout,Eo as fixedSwapOutLayout,zu as floorDiv,zr as forecastTransactionSize,Ud as formatLayout,Ye as generatePubKey,be as getATAAddress,Va as getAssociatedAuthority,Jo as getAssociatedConfigId,rt as getAssociatedLedgerAccount,nr as getAssociatedLedgerPoolAccount,pp as getAssociatedOpenOrders,Iu as getAssociatedPoolKeys,hp as getCpmmPdaAmmConfigId,Tp as getCpmmPdaPoolId,Su as getCreatePoolKeys,na as getDate,No as getDepositEntryIndex,ja as getDxByDyBaseIn,Qa as getDyByDxBaseIn,sb as getEpochInfo,ui as getFarmLedgerLayout,fd as getFarmStateLayout,fp as getLiquidityAssociatedAuthority,yn as getLiquidityAssociatedId,vh as getLiquidityFromAmounts,ry as getMax,It as getMultipleAccountsInfo,In as getMultipleAccountsInfoWithCustomFlags,Zi as getMultipleLookupTableInfo,Qk as getPdaAmmConfigId,lt as getPdaExBitmapAccount,Ip as getPdaLpMint,di as getPdaMetadataKey,wi as getPdaObservationId,mr as getPdaOperationAccount,ct as getPdaPersonalPositionAddress,kp as getPdaPoolAuthority,su as getPdaPoolId,au as getPdaPoolRewardVaulId,zo as getPdaPoolVaultId,mn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,Bu as getPdaVault,Tn as getRecentBlockHash,Bo as getRegistrarAddress,Yl as getSessionKey,Za as getStablePrice,Cl as getTime,Qy as getTimestamp,Lo as getTokenOwnerRecordAddress,Qb as getTransferAmountFee,Pe as getTransferAmountFeeV2,Co as getVoterAddress,Ro as getVoterWeightRecordAddress,Ko as getVotingMintAuthority,So as getVotingTokenMint,Td as governanceCreateTokenOwnerRecord,jg as greedy,ll as gt,Jf as gte,ga as i128,Gk as i16ToBytes,mi as i32ToBytes,ri as i64,ba as i8,Fo as initPoolLayout,go as initTokenAccountInstruction,_p as initializeMarket,Nb as intersection,ia as isDateAfter,ra as isDateBefore,yl as isDecimal,ny as isMeaningfulNumber,ta as isNumber,Io as isValidFarmVersion,lr as isZero,ye as jsonInfo2PoolKeys,dP as judgeFarmType,Go as leadingZeros,iu as leastSignificantBit,Rd as liquidityStateV4Layout,Ld as liquidityStateV5Layout,Zf as lt,$f as lte,uf as mSOLMint,li as makeAMMSwapInstruction,Ja as makeAddLiquidityInstruction,_o as makeAddNewRewardInstruction,Pi as makeClaimInstruction,ss as makeClaimInstructionV4,Cu as makeCreateCpmmPoolInInstruction,va as makeCreateFarmInstruction,Du as makeCreateMarketInstruction,Wa as makeCreatorWithdrawFarmRewardInstruction,Ru as makeDepositCpmmInInstruction,Da as makeDepositInstructionV3,qa as makeDepositInstructionV5,Ua as makeDepositInstructionV6,CP as makeDepositTokenInstruction,LP as makeDepositWithdrawInstruction,qk as makeInitPoolInstructionV4,RB as makePurchaseInstruction,Mo as makeRestartRewardInstruction,tu as makeSimulatePoolInfoInstruction,Ou as makeSwapCpmmBaseInInInstruction,Nu as makeSwapCpmmBaseOutInInstruction,zd as makeSwapFixedInInstruction,Yd as makeSwapFixedOutInstruction,FS as makeSwapInstruction,Zn as makeTransferInstruction,Lu as makeWithdrawCpmmInInstruction,ar as makeWithdrawInstructionV3,sr as makeWithdrawInstructionV5,or as makeWithdrawInstructionV6,RP as makeWithdrawTokenInstruction,sn as minExpirationTime,Jk as mockCreatePoolInfo,pu as mockV3CreatePoolInfo,Md as modelDataInfoLayout,ru as mostSignificantBit,Yi as mul,Hi as notInnerObject,mw as ns64,gw as ns64be,ma as nu64,ow as nu64be,ao as offset,Eb as offsetDateTime,Cw as option,U as parseBigNumberish,tn as parseNumberInfo,Js as parseSimulateLogToJson,Mt as parseSimulateValue,Ia as parseTokenAccountResp,uk as parseTokenInfo,Zt as poolTypeV6,on as printSimulate,S as publicKey,rs as purchaseLayout,ad as realFarmStateV3Layout,ud as realFarmStateV5Layout,cd as realFarmV6Layout,qs as recursivelyDecimalToFraction,Uo as removeLiquidityInstruction,Wo as removeLiquidityLayout,VS as route1Instruction,ES as route2Instruction,qp as routeInstruction,Nw as rustEnum,aw as s16,dw as s16be,uw as s24,pw as s24be,De as s32,fw as s32be,cw as s40,yw as s40be,lw as s48,bw as s48be,sw as s8,q as seq,jp as setLoggerLevel,dl as shakeFractionDecimal,$s as simulateMultipleInstruction,Dk as simulatePoolInfoInstruction,hl as simulateTransaction,zs as sleep,kn as solToWSol,mk as solToWSolToken,Yt as splAccountLayout,Xs as splitNumber,cf as stSOLMint,Ow as str,L as struct,ty as sub,Lw as tagged,Xi as tenExponential,pl as toBN,Tl as toBuffer,Gs as toFraction,jf as toFractionWithDecimals,Ty as toPercent,Xa as toToken,lk as toTokenAmount,ck as toTokenInfo,Iy as toTokenPrice,xy as toTotalPrice,Ds as toUsdCurrency,Xo as trailingZeros,vi as tryParsePublicKey,z as u128,Bt as u16,nu as u16ToBytes,ew as u16be,Zg as u24,tw as u24be,ze as u32,Xk as u32ToBytes,nw as u32be,$g as u40,rw as u40be,Jg as u48,iw as u48be,w as u64,_ as u8,_w as union,OK as unionArr,hw as unionLayoutDiscriminator,_b as uniq,yd as updateFarmPoolInfo,$r as updateReqHistory,Iw as utf8,Fi as validateAndParsePublicKey,xo as validateFarmRewards,Rw as vec,Um as vecU8,xd as voterStakeRegistryCreateDepositEntry,Id as voterStakeRegistryCreateVoter,Pd as voterStakeRegistryDeposit,kd as voterStakeRegistryUpdateVoterWeightRecord,hd as voterStakeRegistryWithdraw,dk as wSolToSolToken,Po as withdrawRewardLayout,Mb as xor,Vw as zeros};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map