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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +5 -5
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/type.d.ts +1 -1
  41. package/lib/raydium/farm/config.d.ts +1 -1
  42. package/lib/raydium/farm/farm.d.ts +3 -3
  43. package/lib/raydium/farm/index.d.ts +1 -1
  44. package/lib/raydium/farm/instruction.d.ts +1 -1
  45. package/lib/raydium/farm/layout.d.ts +1 -1
  46. package/lib/raydium/farm/type.d.ts +1 -1
  47. package/lib/raydium/farm/util.d.ts +1 -1
  48. package/lib/raydium/ido/ido.d.ts +3 -3
  49. package/lib/raydium/ido/index.d.ts +3 -3
  50. package/lib/raydium/ido/instruction.d.ts +1 -1
  51. package/lib/raydium/ido/type.d.ts +1 -1
  52. package/lib/raydium/index.d.ts +3 -3
  53. package/lib/raydium/index.js +1 -1
  54. package/lib/raydium/index.js.map +1 -1
  55. package/lib/raydium/index.mjs +1 -1
  56. package/lib/raydium/index.mjs.map +1 -1
  57. package/lib/raydium/liquidity/index.d.ts +1 -1
  58. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  59. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  60. package/lib/raydium/liquidity/liquidity.js +1 -1
  61. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  62. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  63. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  64. package/lib/raydium/liquidity/type.d.ts +1 -1
  65. package/lib/raydium/liquidity/utils.d.ts +1 -1
  66. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  67. package/lib/raydium/marketV2/index.d.ts +3 -3
  68. package/lib/raydium/moduleBase.d.ts +3 -3
  69. package/lib/raydium/raydium.d.ts +3 -3
  70. package/lib/raydium/raydium.js +1 -1
  71. package/lib/raydium/raydium.js.map +1 -1
  72. package/lib/raydium/raydium.mjs +1 -1
  73. package/lib/raydium/raydium.mjs.map +1 -1
  74. package/lib/raydium/token/constant.d.ts +1 -1
  75. package/lib/raydium/token/index.d.ts +1 -1
  76. package/lib/raydium/token/token.d.ts +3 -3
  77. package/lib/raydium/token/type.d.ts +1 -1
  78. package/lib/raydium/token/utils.d.ts +1 -1
  79. package/lib/raydium/tradeV2/index.d.ts +2 -2
  80. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  81. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  82. package/lib/raydium/tradeV2/type.d.ts +2 -2
  83. package/lib/raydium/type.d.ts +1 -1
  84. package/lib/raydium/utils1216/index.d.ts +3 -3
  85. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  86. package/lib/{raydium-6435918d.d.ts → raydium-506bacbc.d.ts} +2 -2
  87. package/lib/{type-291f7eb1.d.ts → type-389634c9.d.ts} +1 -1
  88. package/lib/{type-515cebdd.d.ts → type-9fe71e3c.d.ts} +3 -3
  89. package/package.json +1 -1
  90. package/src/raydium/liquidity/liquidity.ts +2 -2
@@ -1,3 +1,3 @@
1
- var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var Ar=Object.getOwnPropertySymbols;var Zo=Object.prototype.hasOwnProperty,$o=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))Zo.call(e,t)&&jo(r,t,e[t]);if(Ar)for(var t of Ar(e))$o.call(e,t)&&jo(r,t,e[t]);return r},D=(r,e)=>Nu(r,Mu(e));var ke=(r,e)=>{var t={};for(var n in r)Zo.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Ar)for(var n of Ar(r))e.indexOf(n)<0&&$o.call(r,n)&&(t[n]=r[n]);return t};import{merge as Td}from"lodash";import ml from"axios";import{get as Jo,set as _u}from"lodash";import ts from"dayjs";import Vu from"dayjs/plugin/utc";ts.extend(Vu);var Ai=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 ts().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}},es={},Eu={};function ae(r){let e=Jo(es,r);if(!e){let t=Jo(Eu,r);e=new Ai({name:r,logLevel:t}),_u(es,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Or from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,Pi="0123456789abcdef",kr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",hr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ki={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},os,Rt,J=!0,Ir="[DecimalError] ",Wt=Ir+"Invalid argument: ",ss=Ir+"Precision limit exceeded",as=Ir+"crypto unavailable",us="[object Decimal]",ve=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,cs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,Q=7,Du=9007199254740991,qu=kr.length-1,hi=hr.length-1,L={toStringTag:us};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};L.ceil=function(){return G(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Uu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=ve((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,G(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ve(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return we(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return G(we(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return G(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Br(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Br(5,r)),i=ln(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(i,e,t,!0)};L.hyperbolicTangent=L.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=we(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=hi)return s=pt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=hi)return s=pt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,G(s,l.precision=m,l.rounding=p,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&ve(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=vt(c,a),n=e?Tr(l,a+10):vt(r,a),u=we(s,n,a,1),xn(u.d,i=m,p))do if(a+=10,s=vt(c,a),n=e?Tr(l,a+10):vt(r,a),u=we(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(xn(u.d,i+=10,p));return J=!0,G(u,m,p)};L.minus=L.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?G(r,a,u):r}if(t=ve(r.e/Q),l=ve(d.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=xr(c,t),J?G(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=we(t,r.abs(),0,3,1),e.s*=r.s):e=we(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Ti(this)};L.naturalLogarithm=L.ln=function(){return vt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?G(r,a,u):r;if(o=ve(m.e/Q),n=ve(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=xr(c,n),J?G(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=ls(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};L.sine=L.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Xu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ve((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(we(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,G(n,u,l.rounding,r)};L.tangent=L.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=ve(l.e/Q)+ve(r.e/Q),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=xr(o,t),J?G(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return xi(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Qe(r,0,Dt),e===void 0?e=n.rounding:Qe(e,0,8),G(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(Qe(r,0,Dt),e===void 0?e=i.rounding:Qe(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(Qe(r,0,Dt),e===void 0?e=o.rounding:Qe(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ls(y)-d.e-1,s=o%Q,e.d[0]=Ke(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*Q*2;m=we(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=we(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=we(c,n,o,1).minus(d).abs().cmp(we(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};L.toHexadecimal=L.toHex=function(r,e){return xi(this,16,r,e)};L.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Qe(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=we(t,r,0,e,1).times(r),J=!0,G(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return xi(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=ve(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=ms(u,a,t,n),r.s<0?new u(1).div(i):G(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ke(+a,c),e=t==0||!isFinite(t)?ve(c*(Math.log("0."+Me(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ti(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),xn(i.d,n,o)&&(e=n+10,i=G(Ti(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,G(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Qe(r,1,Dt),e===void 0?e=i.rounding:Qe(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Qe(r,1,Dt),e===void 0?e=n.rounding:Qe(e,0,8)),G(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return G(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Me(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Qe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function xn(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Ke(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ke(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ke(10,e-3)-1,s}function Pr(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]+=Pi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Br(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M,E,H,v=n.constructor,j=n.s==i.s?1:-1,ee=n.d,oe=i.d;if(!ee||!ee[0]||!oe||!oe[0])return new v(!n.s||!i.s||(ee?oe&&ee[0]==oe[0]:!oe)?NaN:ee&&ee[0]==0||!oe?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=ft,d=Q,l=ve(n.e/d)-ve(i.e/d)),E=oe.length,K=ee.length,g=new v(j),P=g.d=[],m=0;oe[m]==(ee[m]||0);m++);if(oe[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,oe=oe[0],I++;(m<K||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/oe|0,p=B%oe|0;y=p||m<K}else{for(p=u/(oe[0]+1)|0,p>1&&(oe=r(oe,p,u),ee=r(ee,p,u),E=oe.length,K=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;H=oe.slice(),H.unshift(0),M=oe[0],oe[1]>=u/2&&++M;do p=0,c=e(oe,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(oe,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?H:oe,b,u))):(p==0&&(c=p=1),f=oe.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(oe,A,E,h),c<1&&(p++,t(A,E<h?H:oe,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,os=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[p=0],u=l/Ke(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/Q),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Ke(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ke(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Ke(10,Q-o),m[p]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=ft)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ps(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function xr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Tr(r,e,t){if(e>qu)throw J=!0,t&&(r.precision=t),Error(ss);return G(new r(kr),e,1,!0)}function pt(r,e,t){if(e>hi)throw Error(ss);return G(new r(hr),e,t,!0)}function ls(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ft(r){for(var e="";r--;)e+="0";return e}function ms(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),rs(o.d,s)&&(i=!0)),t=ve(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),rs(e.d,s)}return J=!0,o}function ns(r){return r.d[r.d.length-1]&1}function ds(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 Ti(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(we(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&xn(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return G(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Me(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Me(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Tr(g,l+2,A).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,P,J=!0):f;for(m=f,u=s=f=we(f.minus(1),f.plus(1),l,1),p=G(f.times(f),l,1),i=3;;){if(s=G(s.times(p),l,1),c=u.plus(we(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Tr(g,l+2,A).times(o+""))),u=we(u,new g(d),l,1),e==null)if(xn(u.d,l-y,P,a))g.precision=l+=y,c=s=f=we(m.minus(1),m.plus(1),l,1),p=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function ps(r){return String(r.s*r.s/0)}function Ii(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),cs.test(e))return Ii(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=ms(n,new n(t),o,o*2)),c=Pr(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=xr(c,l),r.d=c,J=!1,s&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):Bn.pow(2,u))),J=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Br(5,t)),e=ln(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(J=!1,u=t.times(t),a=new r(n);;){if(s=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=we(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function Br(r,e){for(var t=r;--e;)t*=r;return t}function fs(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ns(t)?n?2:3:n?4:1,e;Rt=ns(t)?n?1:4:n?3:2}return e.minus(i).abs()}function xi(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(Qe(t,1,Dt),n===void 0?n=d.rounding:Qe(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=ps(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Pr(kt(p),10,i),p.e=p.d.length),m=Pr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=we(r,p,t,n,0,i),m=r.d,o=r.e,c=os),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+=Pi.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=Pr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Pi.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 rs(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Hu(r){return new this(r).acosh()}function Qu(r,e){return new this(r).plus(e)}function ju(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(we(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(Ir+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=ki[t]),(n=r[t])!==void 0)if(ve(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=ki[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(as);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function ys(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,is(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 Ii(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),cs.test(o)?Ii(c,o):Gu(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ic,i.clone=ys,i.isDecimal=is,i.abs=zu,i.acos=Yu,i.acosh=Hu,i.add=Qu,i.asin=ju,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=Pc,i.round=kc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(r=new this(r),r.e+1,3)}function lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function is(r){return r instanceof Bn||r&&r.toStringTag===us||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ds(this,arguments,"lt")}function bc(){return ds(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function Pc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Qe(r,1,Dt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(as);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Ke(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function kc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Bn=L.constructor=ys(ki);kr=new Bn(kr);hr=new Bn(hr);var F=Bn;import{PublicKey as Ri}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as he,SystemProgram as bs,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Bi=[k({pubkey:Lc,isWritable:!1}),k({pubkey:bs.programId,isWritable:!1}),k({pubkey:Oc,isWritable:!1})];function Si({publicKey:r,transformSol:e}){let t=Ki(r.toString());if(t instanceof he)return e&&t.equals(Ce)?te:t;if(e&&t.toString()===Ce.toBase58())return te;if(typeof t=="string"){if(t===he.default.toBase58())return he.default;try{return new he(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ki(r){try{return new he(r)}catch{return r}}var mn=new he("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),gs=new he("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new he("SysvarRent111111111111111111111111111111111"),Ci=new he("SysvarC1ock11111111111111111111111111111111"),dn=new he("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Sr=new he("Sysvar1nstructions1111111111111111111111111"),ws=bs.programId,Ed=new he("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Fd=new he("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),vd=new he("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Wd=new he("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Dd=new he("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),qd=new he("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ud=new he("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Gd=new he("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Xd=new he("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),zd=new he("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Yd=new he("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new he("So11111111111111111111111111111111111111112"),Ce=he.default;function pn(r){return Si({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";var ht={chainId:101,address:Nc.default.toBase58(),programId:As.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:As.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 Li=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Ri&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Ri(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Ri.default:Si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=Li;Te.WSOL=new Li(D(N({},Re),{mint:Re.address}));import Cr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Sn=_c;var Kr=ae("module/fraction"),Oi=Sn(Cr),Kn=Sn(Ec),Fc={[0]:Kn.ROUND_DOWN,[1]:Kn.ROUND_HALF_UP,[2]:Kn.ROUND_UP},vc={[0]:Cr.roundDown,[1]:Cr.roundHalfUp,[2]:Cr.roundUp},me=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(X(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(X(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(X(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(X(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Kr.logWithError(`${e} is not an integer.`),e<=0&&Kr.logWithError(`${e} is not positive.`),Kn.set({precision:e+1,rounding:Fc[n]});let i=new Kn(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)||Kr.logWithError(`${e} is not an integer.`),e<0&&Kr.logWithError(`${e} is negative.`),Oi.DP=e,Oi.RM=vc[n]||1,new Oi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=ae("Raydium_price"),st=class extends me{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new me(Ni(n.decimals),Ni(i.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new st({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new st({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Mi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Rr=Mi;Rr.SOL=new Mi(ht);import qc from"bn.js";var Ps=new me(new qc(100)),tt=class extends me{toSignificant(e=5,t,n){return this.mul(Ps).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ps).toFixed(e,t,n)}};var ze=new Ze(0),hs=new Ze(1),Up=new Ze(2),Gp=new Ze(3),Xp=new Ze(5),_i=new Ze(10),zp=new Ze(100),Yp=new Ze(1e3),Hp=new Ze(1e4),ks=9007199254740991;function X(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ni(r){return _i.pow(X(r))}function Lr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=ae("Raydium_amount"),Is=Sn(Uc);function Xc(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Be=class extends me{constructor(t,n,i=!0,o){let s=new Or(0),a=_i.pow(new Or(t.decimals));if(i)s=X(n);else{let u=new Or(0),c=new Or(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=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 Be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Be(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 Is.DP=this.token.decimals,new Is(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ts(r){return typeof r=="object"&&r!==null&&![Te,Be,zc,me,Yc,st,tt].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Ki(r):Array.isArray(r)?r.map(e=>fe(e)):Ts(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as On,sendAndConfirmTransaction as Fr,Transaction as Nn,TransactionMessage as Mn,VersionedTransaction as _n}from"@solana/web3.js";import Jc from"axios";var 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 Bs,ComputeBudgetProgram as xs,Transaction as Nr,TransactionMessage as Hc,Keypair as Ss,VersionedTransaction as Ks}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qc}from"@solana/spl-token";var Lt=ae("Raydium_txUtil"),Cs=1644;function Mr(r){let e=[],t=[];return r.microLamports&&(e.push(xs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(xs.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function fn(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 _r(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Nr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Cs}catch{return!1}}async function Rs(r,e,t,n=!0){let i=new Bs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Nr;s.feePayer=i;for(let c of e)_r([...s.instructions,c],[i])||(o.push(s),s=new Nr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await jc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Ls(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=Bs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function jc(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Cn({instructions:r,payer:e,signers:t}){return _r(r,[e,...t])}function Rn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ss.generate().publicKey.toString()}){let o=new Hc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ks(o).serialize()).toString("base64").length<Cs}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function jt(r){let e=[];return r.forEach(t=>{t instanceof Nr&&(t.recentBlockhash||(t.recentBlockhash=Qc.toBase58()),t.feePayer||(t.feePayer=Ss.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ks&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Os,AddressLookupTableAccount as Vr}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Vf,unpackMint as Ef}from"@solana/spl-token";var Vi=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Ei(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=Ei(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Vi.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"&&Vi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Vi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ln(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}async function Fi({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Os(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Vr({key:s,state:Vr.deserialize(o.data)});n[s.toString()]=a,Er[s.toString()]=a}return n}var Er={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Vr({key:new Os("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Vr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var vr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,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 Jc.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Mr(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!==On.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 Nn;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 fn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),jt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Fr(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 fn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Fr(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));jt(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=ke(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:Er),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new On(d));let c=await Fi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Mn({payerKey:this.feePayer,recentBlockhash:i?On.default.toBase58():await fn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new _n(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),jt([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),jt(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=ke(c,["computeBudgetConfig"]),i=t?Mr(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 On(f));if(u.length<12&&Cn({instructions:p,payer:this.feePayer,signers:y})||Cn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().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);Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().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 fn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),jt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let P of s){let A=await Fr(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 Fr(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=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:Er),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new On(g));let c=await Fi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Mr(t):{instructions:[],instructionTypes:[]},m=await fn(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&&Rn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Rn({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&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(T))}else{let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(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&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(A))}else{let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(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)}),jt(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 yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function Ei(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Ns=r=>typeof r=="number";function Ms(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function _s(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as le}from"@solana/web3.js";var Vs=new le("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Es=new le("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new le("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),oy=new le("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),sy=new le("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),vi=new le("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fs=new le("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ay=new le("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),uy=new le("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),cy=new le("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ly=new le("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),el=new le("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new le("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new le("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new le("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),my=new le("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),dy=new le("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),py=new le("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),il=new le("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ol=new le("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),sl=new le("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),En={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};var fy={SERUM_MARKET:le.default,OPENBOOK_MARKET:new le("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:le.default,FarmV3:new le("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new le("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new le("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new le("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new le("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new le("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new le("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:il,CREATE_CPMM_POOL_AUTH:ol,CREATE_CPMM_POOL_FEE_ACC:sl,FEE_DESTINATION_ID:new le("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as al}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ul}from"@solana/spl-token";function ye(r,e,t){return ie([r.toBuffer(),(t!=null?t:ul).toBuffer(),e.toBuffer()],new al("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import bt from"bn.js";var Fn=1e4;function Ae(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 bt(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===Fn){let u=new bt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=vn(r.mul(new bt(Fn)),new bt(Fn-o.transferFeeBasisPoints)),c=new bt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=vn(l.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=vn(r.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function vn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new bt(0))?t.add(new bt(1)):t}var _e={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"},Wy=N({},_e);var vs="ray_tab_hash",Wi="ray_req_hash",cl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(vs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(vs,r)),r},Dr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=ke(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Wi)||"[]").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:cl()}));try{localStorage.setItem(Wi,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Wi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Dr(D(N({},t),{logCount:r,removeLastLog:!0}))}};var qr=ae("Raydium_Api"),Di=new Map;var Ur=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ml.create({baseURL:this.urlConfigs.BASE_HOST||_e.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return qr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(qr.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&&Dr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),qr.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&&Dr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),qr.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||_e.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||_e.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||_e.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||_e.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||_e.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||_e.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||_e.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||_e.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||_e.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>Di.has(s)?(n.push(Di.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||_e.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Di.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&&pn(t).toBase58(),n&&n!=="undefined"?pn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||_e.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||_e.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||_e.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||_e.CHECK_AVAILABILITY)).data}};var Gr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ws="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as $i,TOKEN_PROGRAM_ID as Xt,AccountLayout as bn,TOKEN_2022_PROGRAM_ID as Wl}from"@solana/spl-token";import{PublicKey as $r,SystemProgram as Dl}from"@solana/web3.js";var qi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ie=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new vr({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(qi(e))}logInfo(...e){this.logger.info(qi(e))}logAndCreateError(...e){let t=qi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ml,createCloseAccountInstruction as _l,createTransferInstruction as Vl,TOKEN_PROGRAM_ID as yn}from"@solana/spl-token";import{PublicKey as El,SystemProgram as Fl}from"@solana/web3.js";import vl from"bn.js";import{PublicKey as ea,Keypair as Rl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ll}from"@solana/spl-token";import Ol from"bn.js";import{PublicKey as Tl}from"@solana/web3.js";import Xs,{isBN as zs}from"bn.js";import{bits as dl,BitStructure as Pb,blob as pl,Blob as kb,cstr as hb,f32 as Tb,f32be as Ib,f64 as xb,f64be as Bb,greedy as Sb,Layout as fl,ns64 as Kb,ns64be as Cb,nu64 as yl,nu64be as Rb,offset as Lb,s16 as Ob,s16be as Nb,s24 as Mb,s24be as _b,s32 as bl,s32be as Vb,s40 as Eb,s40be as Fb,s48 as vb,s48be as Wb,s8 as Db,seq as gl,struct as qb,Structure as wl,u16 as Al,u16be as Ub,u24 as Gb,u24be as Xb,u32 as Pl,u32be as zb,u40 as Yb,u40be as Hb,u48 as Qb,u48be as jb,u8 as kl,UInt as hl,union as Zb,Union as $b,unionLayoutDiscriminator as Jb,utf8 as eg}from"@solana/buffer-layout";var Xr=fl,Ds=wl;var Ui=hl;var qs=kl,It=Al;var Gi=Pl;var Us=yl;var Ve=bl;var Gs=gl;var pe=pl;var Xi=dl;var $t=class extends Xr{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new Xs(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 Xs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},zr=class extends Xr{constructor(t){super(8,t);this._lower=Xi(Gi(),!1),this._upper=Xi(Gi(),!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 Ui(1,r)}function We(r){return new Ui(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function Ys(r){return new $t(1,!0,r)}function Hr(r){return new $t(8,!0,r)}function Hs(r){return new $t(16,!0,r)}var Yr=class extends Xr{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 Yr(pe(32),e=>new Tl(e),e=>e.toBuffer(),r)}function Ee(r){return new Yr(qs(),Il,xl,r)}function Il(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function xl(r){return r?1:0}var zi=class extends Ds{decode(e,t){return super.decode(e,t)}};function O(r,e,t){return new zi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:zs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=zs(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 Gs(r,i,t)}var qt=O([S("mint"),S("owner"),w("amount"),We("delegateOption"),S("delegate"),_("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),S("closeAuthority")]);function Bl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Yi(r,...e){if(!Bl(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 Hi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Qs(r,e){Yi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var jr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),gt=(r,e)=>r<<32-e|r>>>e;var yg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sl(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Qi(r){return typeof r=="string"&&(r=Sl(r)),Yi(r),r}var Qr=class{clone(){return this._cloneInto()}},bg={}.toString;function js(r){let e=n=>r().update(Qi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Kl(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 Zs=(r,e,t)=>r&e^~r&t,$s=(r,e,t)=>r&e^r&t^e&t,Zr=class extends Qr{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=jr(this.buffer)}update(e){Hi(this);let{view:t,buffer:n,blockLen:i}=this;e=Qi(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=jr(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){Hi(this),Qs(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Kl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=jr(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 Cl=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),ji=class extends Zr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Gt[m-15],d=Gt[m-2],y=gt(p,7)^gt(p,18)^p>>>3,f=gt(d,17)^gt(d,19)^d>>>10;Gt[m]=f+Gt[m-7]+y+Gt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=gt(a,6)^gt(a,11)^gt(a,25),d=l+p+Zs(a,u,c)+Cl[m]+Gt[m]|0,f=(gt(n,2)^gt(n,13)^gt(n,22))+$s(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Js=js(()=>new ji);var Ng=ae("Raydium_Util");function ta({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:ye(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ea.default,amount:new Ol(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Ll}){let t=Rl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Nl(r,t,e),seed:t}}function Nl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Js(n);return new ea(i)}function Zi(r){let{mint:e,tokenAccount:t,owner:n,programId:i=yn}=r;return Ml(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=yn}=r;return _l(e,t,i,n,o)}async function xt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new vl(a)),c=De({fromPublicKey:i,programId:yn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Fl.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:yn}),Zi({mint:new El(Re.address),tokenAccount:c.publicKey,owner:o,programId:yn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Wn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=yn}){return Vl(r,e,t,BigInt(String(n)),i,o)}var Dn=class extends Ie{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ye(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Wl},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ta({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Xt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new $r(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new $r(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=$i(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)&&bn.decode(P.data).mint.equals(n)&&bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(V.CreateATA);if(n.equals(te)&&i.amount){let P=await xt({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(Wn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Nt({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 xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(bn.span),A=Dl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:bn.span,programId:l});return d.instructions.push(A,Zi({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(Nt({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=Xt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await $i(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({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=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new $r(te).equals(o)){let d=await xt({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=$i(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Xt)&&bn.decode(f.data).mint.equals(o)&&bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new $r(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=ke(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=ke(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as um}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as cm}from"@solana/web3.js";import{PublicKey as ua}from"@solana/web3.js";var Ji=O([_("instruction")]),eo=O([_("instruction")]),ql=O([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")]),Ul=O([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Gl=O([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),Xl=O([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(ql,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),na=new Proxy(Ul,{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)}}),ra=new Proxy(Gl,{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)}}),qn=new Proxy(Xl,{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)}}),zl=O([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),to=O([_("instruction"),w("nonce"),q(zl,5,"rewardTimeInfo")]),no=O([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),ro=O([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),mw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Un=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),dw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ia=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),oa=O([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=O([_("instruction"),w("amount")]),Yl=O([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ys("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),sa=O([pe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(Yl,4,"votingMints"),Hr("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),Hl=O([Hr("startTime"),Hr("endTime"),_("kind"),q(_(),15,"reserved")]),Ql=O([q(Hl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),aa=O([pe(8),S("voterAuthority"),S("registrar"),q(Ql,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var Pw=ae("Raydium_farm_config"),ca=new ua("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),la=new ua("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),ma={3:na,5:ra,6:qn},da={3:Un,5:ia,6:oa},io=r=>[3,5,6].indexOf(r)!==-1,oo=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},wt={[Vs.toString()]:3,[Es.toString()]:5,[Vn.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as $l,SYSVAR_CLOCK_PUBKEY as zn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Jl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as em}from"@solana/spl-token";import ei from"bn.js";function so(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function ao(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function uo(r,e){return ie([e.toBuffer()],r)}function co(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function lo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function mo(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Gn=ae("Raydium.farm.util");function Xn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var pa=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function fa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function po(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function Jr(r){let e=da[r];return e||Gn.logWithError("invalid version",r),e}function jl(r){let e=ma[r];return e||Gn.logWithError("invalid version",r),e}function Zl(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new $e(0)))continue;let o=$e.min(new $e(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function Ew({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let p of e){let d=fe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:Je({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await Ln(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=jl(d);(!b||!b.data||b.data.length!==P.span)&&Gn.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Gn.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=Jr(d);b&&b.data&&(b.data.length!==P.span&&Gn.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=Zl(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=D(N({},c[p].wrapped),{pendingRewards:b})}return c}function Fw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ms(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>_s(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 fo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=sa.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=aa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var tm=ae("Raydium_farm_instruction"),Yn={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 ya(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||tm.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ji.span);Ji.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:$l,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function ba(r){var n;let e=Buffer.alloc(to.span);to.encode({instruction:0,nonce:new ei(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Bi,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6Create}}function ga(r){let e=Buffer.alloc(eo.span);eo.encode({instruction:5},e);let t=[k({pubkey:nt,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function nm(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=O([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...Yn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function rm(r,e,t,n){let i=O([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...Yn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function im(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...Yn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function om(r,e,t,n,i,o){let s=O([_("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function sm(r,e,t,n,i,o,s,a){let u=O([_("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:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Yn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function am(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),We("periods"),Ee("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:em,isSigner:!1,isWritable:!1},{pubkey:je,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([...Yn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:d,programId:r,data:f})}async function tA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=so(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new ei(0)))throw Error("user do not has new stake amount");let y=ao(e,a).publicKey,f=uo(e,a).publicKey,{publicKey:b,nonce:g}=co(n,c,s),P=ye(b,y,u).publicKey,{publicKey:A,nonce:h}=lo(n,c,s),T=mo(t,i,o,s).publicKey,I=[],B=ye(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(Jl(s,B,s,y)),await r.getAccountInfo(b)===null){let H=om(t,i,s,o,s,T);I.push(H,sm(n,c,b,A,s,s,g,h))}let{index:M,isInit:E}=await fo(r,c,b,y);return E||I.push(am(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(nm(n,c,b,P,B,s,l,a,y,f,e,M,d),rm(n,c,b,A)),I}async function nA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=so(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data);if(p.voteLockedBalance.eq(new ei(0)))throw Error("user has vote locked balance = 0");let d=ao(e,a).publicKey,y=uo(e,a).publicKey,{publicKey:f}=co(n,c,s),b=ye(f,d,u).publicKey,{publicKey:g}=lo(n,c,s),P=mo(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await fo(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(im(n,c,f,s,P,g,b,ye(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function yo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(no.span);no.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[k({pubkey:nt,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function bo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(ro.span);ro.encode({instruction:4,isSet:new ei(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...Bi,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function rA(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],p=Je({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:nt,isWritable:!1}),...c?[k({pubkey:Jt.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new re(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new re(t.rewardInfos[f].vault)})),y.push(k({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:d})}function Hn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Pa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}var Zn=class extends Ie{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:po(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=Vn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Pe(e.lpMint.address),lockInfo:{lockMint:ca,lockVault:la},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(qn.span);u.addInstruction({instructions:[cm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:qn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=pa({programId:new Pe(a.programId),poolId:l.publicKey}),y=Xn({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(fa(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(Ce)?new Pe(Re.address):h.mint;b.push({rewardMint:B,rewardVault:Xn({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}=ba({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=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ce)?new Pe(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new Pe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ce,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[yo({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=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ce)?new Pe(Re.address):m.mint,d=a.rewardInfos.findIndex(A=>new Pe(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ce,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=yo({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=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new Pe(Re.address):i.mint,m=Xn({programId:new Pe(n.programId),poolId:new Pe(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:[bo({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=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ce)?new Pe(Re.address):l.mint,p=Xn({programId:new Pe(n.programId),poolId:new Pe(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=bo({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=wt[p];io(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Pe(n.programId),new Pe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=ye(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:oe,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new Pe(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=oe,dt&&P.addInstruction(dt)}A[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=Jr(d).decode(x.data)),n.programId!==Vn.toString()&&!B){let{instruction:v,instructionType:j}=ya({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[v],instructionTypes:[j]})}let K=oo({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new Pe(v))},E=d===6?Pa(M):d===5?Aa(M):wa(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=wt[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=ye(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=Je({programId:new Pe(n.programId),poolId:new Pe(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}),Jr(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 Pe(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 Pe(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=oo({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new Pe(K))},B=d===6?Hn(I):d===5?Qn(I):jn(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=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ce.toString()?new Pe(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:po(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:[um(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=ga({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=ye(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=wt[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 Pe(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:oe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new Pe(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,oe&&l.addInstruction(oe)}m[H.mint.address]=j,B.push(j)}let x=d[P],K={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new Pe(H))},M=A===6?Hn(K):A===5?Qn(K):jn(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 et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ui}from"@solana/spl-token";var BA=O([We("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),We("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as lm}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as mm}from"@solana/spl-token";var MA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new lm(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},_A=({mint:r,decimals:e,programId:t=mm,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}},ha=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),VA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=ke(o,["amount","isRaw","name"]);return new Be(new Te({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function EA(r){return r.address===ht.address?Re:r}function FA(r){return r.address===Re.address?ht:r}import{TOKEN_PROGRAM_ID as $n,ASSOCIATED_TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Mt,SystemProgram as To,SYSVAR_RENT_PUBKEY as Sm}from"@solana/web3.js";var go=O([_("instruction"),w("amountIn"),w("minAmountOut")]),wo=O([_("instruction"),w("maxAmountIn"),w("amountOut")]),jA=O([_("instruction"),_("nonce")]),Ao=O([_("instruction"),_("nonce"),w("startTime")]),dm=O([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),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")]),pm=O([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),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")]),Po=O([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),ko=O([_("instruction"),w("amountIn")]),ZA={4:dm,5:pm},Ta=O([w("fee")]);import{PublicKey as fm}from"@solana/web3.js";var wn=new fm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,ym=O([w("x"),w("y"),w("price")]),bm=O([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(ym,tn,"DataElement")]);function gm(r,e){return[0,tn-2]}function wm(r){return[0,tn-2]}function Am(r){return[0,tn-2]}function Pm(r,e,t){let[n,i]=gm(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=tn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function ho(r,e,t){let[n,i,o]=Pm(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function en(r,e,t){return e*r.multiplier/t}function Ia(r,e,t){return e*t/r.multiplier}function km(r,e){let[t,n]=wm(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function hm(r,e){let[t,n]=Am(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=km(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 Tm(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=hm(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 Im(r,e){let t=xa(r,e,0,!1);return t[3]?t[0]:0}function Ba(r,e,t,n){let i=ho(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,p]=xa(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ia(r,d,i)}}function Sa(r,e,t,n){let i=ho(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,p]=Tm(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ia(r,d,i)}}function xm(r){let e=bm.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 Ka(r,e,t,n){let i=Im(r,en(r,e,ho(r,e,t)))/r.multiplier;return n?i:1/i}var gn=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(wn);e&&(this._layoutData=xm(e==null?void 0:e.data))}}};var Ca=ae("Raydium_liquidity_instruction");function Ra(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Po.span);Po.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:hs},a);let u=[k({pubkey:$n,isWritable:!1}),k({pubkey:new be(e.id)}),k({pubkey:new be(t.authority),isWritable:!1}),k({pubkey:new be(t.openOrders),isWritable:!1}),k({pubkey:new be(t.targetOrders)}),k({pubkey:new be(e.lpMint.address)}),k({pubkey:new be(t.vault.A)}),k({pubkey:new be(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:wn})),u.push(k({pubkey:new be(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new be(t.marketEventQueue),isWritable:!1})),new Mt({programId:new be(e.programId),keys:u,data:a})}function Io(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=fe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(ko.span);ko.encode({instruction:4,amountIn:X(i)},a);let u=[k({pubkey:$n,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:wn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function La({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=O([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Bm,isSigner:!1,isWritable:!1},{pubkey:To.programId,isSigner:!1,isWritable:!1},{pubkey:je,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 Mt({keys:K,programId:r,data:M}),instructionType:V.AmmV4CreatePool}}function pP(r){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new be(r.programId),keys:n,data:t})}function Km({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=fe(r),s=Buffer.alloc(go.span);go.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[k({pubkey:$n,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:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Cm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=fe(r),s=Buffer.alloc(wo.span);wo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[k({pubkey:To.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:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function ti(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 Km(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Cm(D(N({},a),{maxAmountIn:i,amountOut:o}),t);Ca.logWithError("invalid params","params",r)}throw Ca.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function fP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Ao.span);Ao.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=fe(r),o=[k({pubkey:$n,isWritable:!1}),k({pubkey:To.programId,isWritable:!1}),k({pubkey:Sm,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Oa({poolKeys:r}){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Fe,TOKEN_2022_PROGRAM_ID as Ht,ASSOCIATED_TOKEN_PROGRAM_ID as Ha}from"@solana/spl-token";import{PublicKey as W,TransactionInstruction as At,SystemProgram as An,Keypair as Oo}from"@solana/web3.js";import Qa from"bn.js";import Wm from"bn.js";function Na(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function bP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function gP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ni(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function xo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Bo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Jn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ma(r,e){return Jn(r,e)?null:xo(r,e)}function _a(r,e){return Jn(r,e)?null:Bo(r,e)}var Rm=Buffer.from("amm_config","utf8"),Lm=Buffer.from("pool","utf8"),Om=Buffer.from("pool_vault","utf8"),Nm=Buffer.from("pool_reward_vault","utf8"),Va=Buffer.from("position","utf8"),Mm=Buffer.from("tick_array","utf8"),_m=Buffer.from("operation","utf8"),Vm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function kP(r,e){return ie([Rm,Na(e)],r)}function Ea(r,e,t,n){return ie([Lm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function So(r,e,t){return ie([Om,e.toBuffer(),t.toBuffer()],r)}function Fa(r,e,t){return ie([Nm,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return ie([Mm,e.toBuffer(),ni(t)],r)}function nn(r,e,t,n){return ie([Va,e.toBuffer(),ni(t),ni(n)],r)}function at(r,e){return ie([Va,e.toBuffer()],r)}function ri(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function er(r){return ie([_m],r)}function ut(r,e){return ie([Vm,e.toBuffer()],r)}import Bt from"bn.js";var de=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ii=new Bt(1).shln(128),Ko=it.sub(rt),tr=64,va=ii.subn(1),qe=-443636,He=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Wa=16,Da="59543866431248",qa="184467440737095516",Ua="15793534762490258745",oi=new Bt(10).pow(new Bt(6)),Em=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Em||{}),IP={[500]:10,[3e3]:60,[1e4]:200},xP={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},Ga={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:[]},BP=new Bt("18446744073700000000");var Fm=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Fm/2));for(let d=0;d<l.length;d++){let{publicKey:y}=ge(t,n,l[d]);u.push(y)}let m=(await Tt(e,u)).map(d=>d!==null?nr.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=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Le-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ge(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<Le;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=ge(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(U.checkIsOutOfBoundary(e)){if(e>He)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Se from"bn.js";var Co=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Ma(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=_a(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},rr=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;if(He<=t)throw Error(`extensionTickBoundary check error: ${He}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=Jn(512,u)?null:xo(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=Jn(512,u)?null:Bo(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var ir=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ct(0),a=new Ct(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,it),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,it),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=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=ue.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Ae(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ae(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ae(new Ct(new F(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ae(new Ct(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:Zt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Xa}from"@solana/spl-token";var Ue=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=ge(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?rr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ge(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=rr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>He)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 Yt(p)});if(d.tokenMint.equals(Yt.default))continue;if(n<=d.openTime.toNumber()||i.eq(de)){s.push(d);continue}let y=new Se(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,it),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=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>He&&(t=ce.getArrayStartIndex(He,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Ln(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=ge(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await Ln(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=nr.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(at(d,p).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=ai.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ue.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 Se(0)})),leverage:T,tokenFeeAmountA:new Se(0),tokenFeeAmountB:new Se(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=B}if(o){let p=Object.values(m),d=await Tt(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=nr.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[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await ir.GetPositionFees(f,g,I,B),M=await ir.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Se(0))?x:new Se(0),g.tokenFeeAmountB=K.gte(new Se(0))?K:new Se(0);for(let E=0;E<M.length;E++)g.rewardInfos[E].pendingReward=M[E].gte(new Se(0))?M[E]:new Se(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?St.add(new Se(1)):Kt.sub(new Se(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ae(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((M=p.fee)!=null?M:de),u),g=Ae(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 Se(Math.floor((1-s)*1e10))).div(new Se(1e10)),T=Ae(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 tt(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:Zt(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 Te(D(N({},u),{mint:u.address,isToken2022:u.programId===Xa.toBase58()})),new Te(D(N({},c),{mint:c.address,isToken2022:c.programId===Xa.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(N({},p),{amount:new Be(l,p.amount),fee:p.fee===void 0?void 0:new Be(l,p.fee)}),I=D(N({},d),{amount:new Be(m,d.amount),fee:d.fee===void 0?void 0:new Be(m,d.fee)}),B=D(N({},y),{amount:new Be(m,y.amount),fee:y.fee===void 0?void 0:new Be(m,y.fee)}),x=new st({baseToken:l,denominator:new Se(10).pow(new Se(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),K=new st({baseToken:l,denominator:new Se(10).pow(new Se(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),M=new Be(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=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[pn(e.mintA.address).toString()],p=i[pn(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}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ue.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 oe,dt;let j=v.mint.decimals,ee=i[v.mint.address];return u<((oe=v.startTime)!=null?oe:0)||u>((dt=v.endTime)!=null?dt: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=Ae(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Se(new F(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,p,f,!a):new Se(0);else if(l.lte(p)){let A=ue.getLiquidityFromTokenAmountA(l,p,f,!a),h=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Se(0):ue.getLiquidityFromTokenAmountB(m,p,f);return Ue.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Ae(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ae(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Ae(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Ae(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=si.decode(i.data),s=ut(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new F(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function mk({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]=[Ae(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Ae(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:de),g.amount.sub((I=g.fee)!=null?I:de));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(de)||(o=o.add(rt)),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(rt)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ii).sub(t).mod(ii)}};function Ne(r,e){return Ro(r.mul(e),64,256)}function vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ro(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(tr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,rt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(tr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,rt,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<qe||e>He)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=va.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=vm(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Wa;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ne(Da)),p=Ro(m.sub(new ne(qa)),64,128).toNumber(),d=Ro(m.add(new ne(Ua)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},sn=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=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(s,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(tr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),rt,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),it):$.mulDivFloor(n,t.sub(e),it)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,rt,Ko):a.shrn(tr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Ko,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new F(u.toString()).mul(l).toFixed(0)),p=new ne(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=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ae(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Ae(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Ae(new ne(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Ae(new ne(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:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Kt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(de),b={amountSpecifiedRemaining:p,amountCalculated:de,sqrtPriceX64:m,tick:c>d?Math.min(d+ce.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new ne(0)},g=d,P=n[d],A=0,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=U.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Ue.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}=ge(e,t,g);x=E,P=n[g],B=U.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<qe?T.tickNext=qe:T.tickNext>He&&(T.tickNext=He),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]=on.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(_t)),b.liquidity=ue.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}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(ge(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 ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(de);if(u){let l=$.mulDivFloor(i,oi.sub(new ne(o.toString())),oi);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new ne(o),oi.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=ge(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Wm(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=ge(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>He}static nextInitTick(e,t,n,i,o){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=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=sn.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=sn.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 _k=O([pe(8),_("bump"),It("index"),S(""),We("protocolFeeRate"),We("tradeFeeRate"),It("tickSpacing"),q(w(),8,"")]),Dm=O([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Lo=O([pe(8),Ee("initialized"),S("poolId"),q(Dm,1e3,"observations"),q(z(),5,"")]),qm=O([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),si=O([pe(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),It("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ve("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(qm,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")]),Um=O([z("growthInsideLastX64"),w("rewardAmountOwed")]),ai=O([pe(8),_("bump"),S("nftMint"),S("poolId"),Ve("tickLower"),Ve("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Um,3,"rewardInfos"),q(w(),8,"")]),Vk=O([pe(8),_("bump"),S("poolId"),Ve("tickLowerIndex"),Ve("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Gm=O([Ve("tick"),Hs("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),nr=O([pe(8),S("poolId"),Ve("startTickIndex"),q(Gm,Le,"ticks"),_("initializedTickCount"),q(_(),115,"")]),Ya=O([pe(329),q(S(),100,"whitelistMints")]),za=O([pe(8),S("poolId"),q(q(w(),8),Co,"positiveTickArrayBitmap"),q(q(w(),8),Co,"negativeTickArrayBitmap")]);var ja=ae("Raydium_Clmm"),Pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},xe=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...Pt.createPool,...g]);return new At({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=De({fromPublicKey:i,programId:n}),[p,d]=[new W(o.address),new W(s.address)],y=[An.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Lo.span),space:Lo.span,programId:n})],{publicKey:f}=Ea(n,a,p,d),{publicKey:b}=So(n,f,p),{publicKey:g}=So(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new W(o.programId||Fe),d,g,new W(s.programId||Fe),ut(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=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("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:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Ha,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Ht,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([...Pt.openPosition,...j]);return new At({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=Oo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,Fe),{publicKey:h}=ri(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(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=Oo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,Fe),{publicKey:h}=ri(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(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=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("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:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Ha,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Ht,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 Qa(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...Pt.openPosition,...j]);return new At({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=Oo.generate();p.push(x),m=x.publicKey}let[d,y]=[new W(e.programId),new W(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(d,y,f),{publicKey:P}=ge(d,y,b),{publicKey:A}=ye(n.wallet,m,Fe),{publicKey:h}=ri(m),{publicKey:T}=at(d,m),{publicKey:I}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(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=O([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Pt.closePosition,...u]);return new At({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new W(e.programId),{publicKey:s}=ye(n.wallet,i.nftMint,Fe),{publicKey:a}=at(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=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,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([...Pt.increaseLiquidity,...I]);return new At({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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(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=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,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 Qa(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new At({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=O([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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:mn,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([...Pt.decreaseLiquidity,...B]);return new At({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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(c,l,m),{publicKey:y}=ge(c,l,p),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:b}=at(c,n.nftMint),{publicKey:g}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ut(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=O([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:mn,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([...Pt.swap,...T]);return new At({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,ut(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=O([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...Pt.initReward,...f]);return new At({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=Fa(o,s,i.mint).publicKey,u=er(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=O([_("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:X(l),endTime:X(m)},f);let b=Buffer.from([...Pt.setRewardEmissions,...f]);return new At({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)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=er(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=O([_("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Pt.collectReward,...l]);return new At({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)&&ja.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 Hm}from"@solana/web3.js";import{PublicKey as zm}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),Xm={4:3,5:3};var Ym=ae("Raydium_liquidity_serum");function eu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=zm.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Ym.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 or from"bn.js";function Mo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Qm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function jm({programId:r}){return ie([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=jm({programId:a}),d=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Qm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=eu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Hm.default,configId:Mo({programId:a})}}var No;async function dh({connection:r,poolKeysList:e,config:t}){No||(No=new gn({connection:r}),await No.initStableModelLayout());let n=e.map(s=>Oa({poolKeys:s}));return(await Rs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Ls(s,"GetPoolData"),u=new or(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),p=new or(Ot(a,"pool_coin_amount")),d=new or(Ot(a,"pool_pc_amount")),y=new or(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new or(f)}})}import ot from"bn.js";var sr=class extends Ie{constructor(t){super(t);this.stableLayout=new gn({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 ot(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ha(t[o?"mintB":"mintA"]),[u,c]=[new ot(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ot(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ot(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=ze;s.isZero()||(p=m==="base"?Lr(s.mul(c),u):Lr(s.mul(u),c)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let d=Lr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",d.toString());let f=new tt(new ot(1)).add(i).mul(p).quotient,b=new Be(a,p),g=new Be(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new et(n.lpMint.address)}),P=[d,y],A=[f,b],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(),Et=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Et,oe=ke(Et,["tokenAccount"]);j.addInstruction(oe);let wr=await l.handleTokenAccount({side:"in",amount:H,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:dt}=wr,Tn=ke(wr,["tokenAccount"]);j.addInstruction(Tn);let In=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:gi}=In,wi=ke(In,["tokenAccount"]);return j.addInstruction(wi),j.addInstruction({instructions:[Ra({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:dt,lpTokenAccount:gi,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 et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=ke(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=ke(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Io({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=ui,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,ee.accountInfo.mint,ui).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 ot(0)),A=t.mintA.address===Te.WSOL.mint.toString(),h=t.mintB.address===Te.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ui,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ui,mint:new et(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 Et of s.rewardInfos){let wr=Et.mint.address===Te.WSOL.mint.toString();if(b[Et.mint.address])ee.push(b[Et.mint.address]);else{let{account:In,instructionParams:Qo}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!wr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});In||this.logAndCreateError("farm reward account not found:",Et.mint.address),Qo&&f.addInstruction(Qo),ee.push(In)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:ee},Tn=wt[s.programId],gi=Tn===6?Hn(dt):Tn===5?Qn(dt):jn(dt),wi={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[gi],instructionTypes:[wi[Tn]]})}let K=await this.getAmmPoolKeys(t.id),M=Io({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 xe.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(nu),P=c.useSOLBalance&&o.mint.equals(nu),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=tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),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}=La(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:ye(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=Mo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ta.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===Fs.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=Ka(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 ot(0),g=new ot(0);if(!f.isZero())if(d){g=vn(f.mul($a),Ja);let x=f.sub(g),K=m.add(x);b=p.mul(x).div(K)}else{g=f.mul(new ot(2)).div(new ot(1e4));let x=f.sub(g);l==="quote"?b=new ot(Ba(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ot(Sa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ot(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 et(l.address),programId:new et(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=ke(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=ke(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ti({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 se}from"@solana/web3.js";import ct from"bn.js";var ar=class extends Ie{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||se.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new ct(new se(i.address).toBuffer()).gt(new ct(new se(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await xe.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:[]}},Ga),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 se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||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 xe.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 se(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 se(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 xe.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 se(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 se(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=xe.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 se(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 se(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=xe.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 se(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 se(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});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 se(K.mint.programId),mint:new se(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 xe.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 xe.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=xe.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 se(n.mint.address),mint:new se(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(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=xe.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new se(n.mint.programId),mint:new se(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.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 se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(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=xe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new se(l.mint.programId),mint:new se(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 ct(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=xe.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 se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(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=xe.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new se(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 se(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=xe.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 se(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=xe.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?St.add(new ct(1)):Kt.sub(new ct(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 se(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 se(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(xe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new se(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(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 se(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 se(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 se(A.mint.programId),mint:new se(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});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=xe.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new ct(0),amountMinA:new ct(0),amountMinB:new ct(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(er(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(se.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new ct(1))).map(s=>at(new se(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=ai.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new se(e)),n=si.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 li,TOKEN_PROGRAM_ID as Qt,AccountLayout as pu}from"@solana/spl-token";var Zm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),$m=Buffer.from("amm_config","utf8"),Jm=Buffer.from("pool","utf8"),ed=Buffer.from("pool_lp_mint","utf8"),td=Buffer.from("pool_vault","utf8"),nd=Buffer.from("observation","utf8");function rd(r){return ie([Zm],r)}function id(r,e){return ie([$m,ad(e)],r)}function od(r,e,t,n){return ie([Jm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function sd(r,e){return ie([ed,e.toBuffer()],r)}function ru(r,e,t){return ie([td,e.toBuffer(),t.toBuffer()],r)}function ci(r,e){return ie([nd,e.toBuffer()],r)}function ad(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=id(r,0).publicKey,i=rd(r).publicKey,o=od(r,n,e,t).publicKey,s=sd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ci(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ur}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _o,TOKEN_2022_PROGRAM_ID as ou,ASSOCIATED_TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";var cd=ae("Raydium_cpmm"),cr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function su(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=O([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:_o,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:ud,isSigner:!1,isWritable:!1},{pubkey:ws,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new ur({keys:T,programId:r,data:Buffer.from([...cr.initialize,...I])})}function au(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return cd.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.deposit,...g])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:gs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.withdraw,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseInput,...P])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseOutput,...P])})}import Ge from"bn.js";var mu=O([pe(8),_("bump"),Ee("disableCreatePool"),It("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),du=O([pe(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 lr=class extends Ie{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=du.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=mu.decode(u.data))}return D(N({},i),{baseReserve:new Ge(pu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new Ge(pu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,j;let p=i.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),d=new Ge(new Y(c.mintA.address).toBuffer()).lte(new Ge(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===li.toBase58(),A=i.useSOLBalance&&f.address===li.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=iu({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[su(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,K,ye(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((v=y.programId)!=null?v:Qt),new Y((j=f.programId)!=null?j:Qt),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===li.toString(),A=t.mintB.address===li.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=ke(ee,["tokenAccount"]);h.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[au(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 tt(new Ge(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]=[Ae(c,t.mintA.extensions.feeConfig,m,!0),Ae(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:[uu(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 Ge(0)),l.sub((v=d.fee)!=null?v:new Ge(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:Qt),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T:Qt),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=ke(I,["tokenAccount"]);l.addInstruction(b);let 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=ke(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?cu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:Qt),new Y((K=t.mintB.programId)!=null?K:Qt),m,p,ci(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((M=t.mintB.programId)!=null?M:Qt),new Y((E=t.mintA.programId)!=null?E:Qt),p,m,ci(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 Ge(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Ae(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new Ge(0)),[l,m]=[new Ge(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Ge(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new Ge(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:ze,fee:void 0,expirationTime:void 0};c.isZero()||(f=Ae(ld(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new tt(new Ge(1)).add(n),g=Ae(b.mul(f.amount.sub((T=f.fee)!=null?T:new Ge(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 ld(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Ge(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Ge(1))),{amountA:i,amountB:o}}var mr=class extends Ie{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Wn({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 xt({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:[Wn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as md}from"@solana/spl-token";import{PublicKey as dd,Transaction as Vo,TransactionInstruction as pd}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Ie{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(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:Xe.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(Te.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(Te.WSOL.mint),associatedOnly:u.mintAddress.equals(Te.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(Te.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(Te.WSOL.mint),associatedOnly:m.mintAddress.equals(Te.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return _r(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Vo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Vo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Vo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=O([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:md,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 pd({keys:o,programId:e,data:a})}},lt=Xe;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=O([pe(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(O([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=O([pe(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(O([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new dd(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as dr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import pr from"bn.js";import{TransactionInstruction as yd,SYSVAR_RENT_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function fd(r="accountFlags"){let e=new zr(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 Eo=O([pe(5),fd("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"),pe(7)]);function gd({programId:r,marketInfo:e}){let t=O([_("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),It("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:bd,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 yd({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Eo.span),space:Eo.span,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),gd({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 Pn=class extends Ie{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new pr(100);function P(){let K=new pr(0);for(;;)try{return{vaultOwner:dr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new pr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new pr(Math.round(10**e.decimals*n)),I=new pr(Math.round(n*10**t.decimals*i));if(T.eq(ze))throw Error("lot size is too small");if(I.eq(ze))throw Error("tick size or lot size is too small");let B=await wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce: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 dr(e.mint),quoteMin:new dr(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 dr(e.mint),quoteMin:new dr(t.mint)}})}};import{PublicKey as yr}from"@solana/web3.js";import{PublicKey as wd,TransactionInstruction as vo,SYSVAR_CLOCK_PUBKEY as Ad}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wo}from"@solana/spl-token";var Fo=O([_("instruction"),Us("amount")]),fr=O([_("instruction")]);function nx({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new wd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Ci,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(Fo.span);return Fo.encode({instruction:1,amount:Number(e)},i),new vo({keys:n,programId:r,data:i})}function mi({programId:r},e){let t=[{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:Ci,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(fr.span);return fr.encode({instruction:2},n),new vo({keys:t,programId:r,data:n})}function Do(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(fr.span);fr.encode({instruction:2},s);let a=[{pubkey:Wo,isWritable:!1,isSigner:!1},{pubkey:Ad,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 vo({programId:e.programId,keys:a,data:s})}import Pu from"bn.js";var Pd={[En.IDO_PROGRAM_ID_V1.toString()]:1,[En.IDO_PROGRAM_ID_V2.toString()]:2,[En.IDO_PROGRAM_ID_V3.toString()]:3,[En.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Ie{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Pd[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new Pu(e.coin).isZero(),!new Pu(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?[mi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[mi({programId:new yr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[mi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new yr(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 yr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Do(D(N({},g),{side:"base"}))]:[],...l?[Do(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as kd}from"@solana/web3.js";import{MintLayout as hd,TOKEN_2022_PROGRAM_ID as qo,TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";var br=class extends Ie{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(ht.address,ht),this._mintGroup.official.add(ht.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")?qo.toBase58():Uo.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")?qo.toBase58():Uo.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")?qo.toBase58():Uo.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 ht;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 kd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=hd.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 di=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 yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new Zn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Dn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new sr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new br({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new mr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new ar({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new lr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Td({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Ur({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new di(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(Gr);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ws);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(Gr),new Error(Gr)}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 zo,TOKEN_2022_PROGRAM_ID as Go}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as Yo,SystemProgram as hu}from"@solana/web3.js";import Xo from"bn.js";function uB(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new Yo({keys:d,programId:r,data:y})}function cB(r,e,t,n,i,o,s,a,u,c){let l=O([_("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=fe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Yo({keys:m,programId:r,data:p})}function ku(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=fe(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Go)||a.mintB.programId.equals(Go)?[{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ut(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function Id(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=O([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1}];f.push(...ku(a,c,o,t,n,d[0])),f.push(...ku(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new Yo({keys:f,programId:r,data:b})}async function lB({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=fe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await xe.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 Xo(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ti({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 Xo(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:[Id(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 Xo(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var Ho=new Iu(1e6);function xd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var pi=class{static tradingFee(e,t){return xd(e,t,Ho)}static protocolFee(e,t){return Tu(e,t,Ho)}static fundFee(e,t){return Tu(e,t,Ho)}};import gr from"bn.js";function fi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Bd(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=fi(r,e);if(n.gt(hn)){t=t.add(new gr(1));let i=r.div(t);n=fi(r,t),n.gt(hn)&&(i=i.add(new gr(1)))}return[t,e]}var hn=new gr(0),yi=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Bd(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 fi(e.mul(n),t).gt(hn)&&s.gt(hn)&&(s=s.add(new gr(1))),fi(e.mul(i),t).gt(hn)&&a.gt(hn)&&(a=a.add(new gr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=pi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=yi.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[vi.toBase58()]:3},Ku={3:vi};var Sd=O([pe(5),pe(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"),pe(7)]),Cu={3:Sd};import{PublicKey as Ru}from"@solana/web3.js";var bi=ae("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||bi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||bi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||bi.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return bi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var iS=r=>r;export{Rm as AMM_CONFIG_SEED,_k as AmmConfigLayout,Wa as BIT_PRECISION,ar as Clmm,xe as ClmmInstrument,yi as ConstantProductCurve,mu as CpmmConfigInfoLayout,pi as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,ym as DataElement,Co as EXTENSION_TICKARRAY_BITMAP_SIZE,ca as FARM_LOCK_MINT,la as FARM_LOCK_VAULT,wt as FARM_PROGRAM_TO_VERSION,da as FARM_VERSION_TO_LEDGER_LAYOUT,ma as FARM_VERSION_TO_STATE_LAYOUT,oi as FEE_RATE_DENOMINATOR,Ho as FEE_RATE_DENOMINATOR_VALUE,Fm as FETCH_TICKARRAY_COUNT,Em as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,Xm as LIQUIDITY_VERSION_TO_SERUM_VERSION,ZA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Da as LOG_B_2_X32,qa as LOG_B_P_ERR_MARGIN_LOWER_X64,Ua as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,Eo as MARKET_STATE_LAYOUT_V2,Sd as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,He as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,wn as MODEL_DATA_PUBKEY,Lu as Market,$ as MathUtil,Ko as MaxU64,va as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,_m as OPERATION_SEED,Lo as ObservationInfoLayout,Dm as ObservationLayout,Ya as OperationLayout,Nm as POOL_REWARD_VAULT_SEED,Lm as POOL_SEED,Vm as POOL_TICK_ARRAY_BITMAP_SEED,Om as POOL_VAULT_SEED,Va as POSITION_SEED,si as PoolInfoLayout,Ue as PoolUtils,ai as PositionInfoLayout,Um as PositionRewardInfoLayout,ir as PositionUtils,Vk as ProtocolPositionLayout,ii as Q128,it as Q64,di as Raydium,qm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,ht as SOL_INFO,BA as SPL_MINT_LAYOUT,Z as SqrtPriceMath,gn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Mm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,IP as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,rr as TickArrayBitmapExtensionUtils,nr as TickArrayLayout,Gm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,tr as U64Resolution,BP as U64_IGNORE_RANGE,aa as Voter,Ql as VoterDepositEntry,Hl as VoterLockup,sa as VoterRegistrar,Yl as VoterVotingMintConfig,de as ZERO,Po as addLiquidityLayout,Ji as associatedLedgerAccountLayout,po as calFarmRewardAmount,xd as ceilDiv,fr as claimLayout,Nt as closeAccountInstruction,ya as createAssociatedLedgerAccountInstruction,Ta as createPoolFeeLayout,La as createPoolV4InstructionV2,jA as createPoolV4Layout,xt as createWSolAccountInstructions,Ye as dwLayout,ro as farmAddRewardLayout,mw as farmLedgerLayoutV3_1,Un as farmLedgerLayoutV3_2,dw as farmLedgerLayoutV5_1,ia as farmLedgerLayoutV5_2,oa as farmLedgerLayoutV6_1,fa as farmRewardInfoToConfig,to as farmRewardLayout,no as farmRewardRestartLayout,zl as farmRewardTimeInfoLayout,na as farmStateV3Layout,ra as farmStateV5Layout,qn as farmStateV6Layout,Ew as fetchMultipleFarmInfoAndUpdate,dh as fetchMultipleInfo,go as fixedSwapInLayout,wo as fixedSwapOutLayout,Tu as floorDiv,xm as formatLayout,De as generatePubKey,pa as getAssociatedAuthority,Mo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Xn as getAssociatedLedgerPoolAccount,Qm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,id as getCpmmPdaAmmConfigId,od as getCpmmPdaPoolId,iu as getCreatePoolKeys,fo as getDepositEntryIndex,Sa as getDxByDyBaseIn,Ba as getDyByDxBaseIn,Jr as getFarmLedgerLayout,jl as getFarmStateLayout,jm as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,mk as getLiquidityFromAmounts,kP as getPdaAmmConfigId,ut as getPdaExBitmapAccount,sd as getPdaLpMint,ri as getPdaMetadataKey,ci as getPdaObservationId,er as getPdaOperationAccount,at as getPdaPersonalPositionAddress,rd as getPdaPoolAuthority,Ea as getPdaPoolId,Fa as getPdaPoolRewardVaulId,So as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,ru as getPdaVault,so as getRegistrarAddress,Ka as getStablePrice,mo as getTokenOwnerRecordAddress,co as getVoterAddress,lo as getVoterWeightRecordAddress,uo as getVotingMintAuthority,ao as getVotingTokenMint,om as governanceCreateTokenOwnerRecord,bP as i16ToBytes,ni as i32ToBytes,Ao as initPoolLayout,Zi as initTokenAccountInstruction,gd as initializeMarket,io as isValidFarmVersion,Jn as isZero,Fw as judgeFarmType,xo as leadingZeros,_a as leastSignificantBit,dm as liquidityStateV4Layout,pm as liquidityStateV5Layout,ti as makeAMMSwapInstruction,Ra as makeAddLiquidityInstruction,bo as makeAddNewRewardInstruction,mi as makeClaimInstruction,Do as makeClaimInstructionV4,su as makeCreateCpmmPoolInInstruction,ba as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ga as makeCreatorWithdrawFarmRewardInstruction,au as makeDepositCpmmInInstruction,wa as makeDepositInstructionV3,Aa as makeDepositInstructionV5,Pa as makeDepositInstructionV6,tA as makeDepositTokenInstruction,rA as makeDepositWithdrawInstruction,fP as makeInitPoolInstructionV4,nx as makePurchaseInstruction,yo as makeRestartRewardInstruction,Oa as makeSimulatePoolInfoInstruction,cu as makeSwapCpmmBaseInInInstruction,lu as makeSwapCpmmBaseOutInInstruction,Km as makeSwapFixedInInstruction,Cm as makeSwapFixedOutInstruction,lB as makeSwapInstruction,Wn as makeTransferInstruction,uu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Qn as makeWithdrawInstructionV5,Hn as makeWithdrawInstructionV6,nA as makeWithdrawTokenInstruction,xP as mockCreatePoolInfo,Ga as mockV3CreatePoolInfo,bm as modelDataInfoLayout,Ma as mostSignificantBit,ta as parseTokenAccountResp,MA as parseTokenInfo,zt as poolTypeV6,Fo as purchaseLayout,Ul as realFarmStateV3Layout,Gl as realFarmStateV5Layout,Xl as realFarmV6Layout,Io as removeLiquidityInstruction,ko as removeLiquidityLayout,uB as route1Instruction,cB as route2Instruction,Id as routeInstruction,pP as simulatePoolInfoInstruction,EA as solToWSolToken,qt as splAccountLayout,ha as toToken,VA as toTokenAmount,_A as toTokenInfo,Bo as trailingZeros,Na as u16ToBytes,gP as u32ToBytes,iS as unionArr,Zl as updateFarmPoolInfo,oo as validateFarmRewards,am as voterStakeRegistryCreateDepositEntry,sm as voterStakeRegistryCreateVoter,nm as voterStakeRegistryDeposit,rm as voterStakeRegistryUpdateVoterWeightRecord,im as voterStakeRegistryWithdraw,FA as wSolToSolToken,eo as withdrawRewardLayout};
1
+ var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var Ar=Object.getOwnPropertySymbols;var Zo=Object.prototype.hasOwnProperty,$o=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))Zo.call(e,t)&&jo(r,t,e[t]);if(Ar)for(var t of Ar(e))$o.call(e,t)&&jo(r,t,e[t]);return r},D=(r,e)=>Nu(r,Mu(e));var ke=(r,e)=>{var t={};for(var n in r)Zo.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Ar)for(var n of Ar(r))e.indexOf(n)<0&&$o.call(r,n)&&(t[n]=r[n]);return t};import{merge as Td}from"lodash";import ml from"axios";import{get as Jo,set as _u}from"lodash";import ts from"dayjs";import Vu from"dayjs/plugin/utc";ts.extend(Vu);var Ai=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 ts().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}},es={},Eu={};function ae(r){let e=Jo(es,r);if(!e){let t=Jo(Eu,r);e=new Ai({name:r,logLevel:t}),_u(es,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Or from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,Pi="0123456789abcdef",kr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",hr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ki={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},os,Rt,J=!0,Ir="[DecimalError] ",Wt=Ir+"Invalid argument: ",ss=Ir+"Precision limit exceeded",as=Ir+"crypto unavailable",us="[object Decimal]",ve=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,cs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,Q=7,Du=9007199254740991,qu=kr.length-1,hi=hr.length-1,L={toStringTag:us};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};L.ceil=function(){return G(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Uu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=ve((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=we(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,G(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ve(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return we(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return G(we(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return G(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Br(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Br(5,r)),i=ln(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(i,e,t,!0)};L.hyperbolicTangent=L.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,we(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=we(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=hi)return s=pt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=hi)return s=pt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,G(s,l.precision=m,l.rounding=p,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&ve(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=vt(c,a),n=e?Tr(l,a+10):vt(r,a),u=we(s,n,a,1),xn(u.d,i=m,p))do if(a+=10,s=vt(c,a),n=e?Tr(l,a+10):vt(r,a),u=we(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(xn(u.d,i+=10,p));return J=!0,G(u,m,p)};L.minus=L.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?G(r,a,u):r}if(t=ve(r.e/Q),l=ve(d.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=xr(c,t),J?G(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=we(t,r.abs(),0,3,1),e.s*=r.s):e=we(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Ti(this)};L.naturalLogarithm=L.ln=function(){return vt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?G(r,a,u):r;if(o=ve(m.e/Q),n=ve(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=xr(c,n),J?G(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=ls(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};L.sine=L.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Xu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ve((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(we(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,G(n,u,l.rounding,r)};L.tangent=L.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=we(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=ve(l.e/Q)+ve(r.e/Q),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=xr(o,t),J?G(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return xi(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Qe(r,0,Dt),e===void 0?e=n.rounding:Qe(e,0,8),G(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(Qe(r,0,Dt),e===void 0?e=i.rounding:Qe(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(Qe(r,0,Dt),e===void 0?e=o.rounding:Qe(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ls(y)-d.e-1,s=o%Q,e.d[0]=Ke(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*Q*2;m=we(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=we(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=we(c,n,o,1).minus(d).abs().cmp(we(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};L.toHexadecimal=L.toHex=function(r,e){return xi(this,16,r,e)};L.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Qe(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=we(t,r,0,e,1).times(r),J=!0,G(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return xi(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=ve(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=ms(u,a,t,n),r.s<0?new u(1).div(i):G(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ke(+a,c),e=t==0||!isFinite(t)?ve(c*(Math.log("0."+Me(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ti(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),xn(i.d,n,o)&&(e=n+10,i=G(Ti(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,G(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Qe(r,1,Dt),e===void 0?e=i.rounding:Qe(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Qe(r,1,Dt),e===void 0?e=n.rounding:Qe(e,0,8)),G(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return G(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Me(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Qe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function xn(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Ke(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ke(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ke(10,e-3)-1,s}function Pr(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]+=Pi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Br(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var we=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M,E,H,v=n.constructor,j=n.s==i.s?1:-1,ee=n.d,oe=i.d;if(!ee||!ee[0]||!oe||!oe[0])return new v(!n.s||!i.s||(ee?oe&&ee[0]==oe[0]:!oe)?NaN:ee&&ee[0]==0||!oe?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=ft,d=Q,l=ve(n.e/d)-ve(i.e/d)),E=oe.length,K=ee.length,g=new v(j),P=g.d=[],m=0;oe[m]==(ee[m]||0);m++);if(oe[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,oe=oe[0],I++;(m<K||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/oe|0,p=B%oe|0;y=p||m<K}else{for(p=u/(oe[0]+1)|0,p>1&&(oe=r(oe,p,u),ee=r(ee,p,u),E=oe.length,K=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;H=oe.slice(),H.unshift(0),M=oe[0],oe[1]>=u/2&&++M;do p=0,c=e(oe,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(oe,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?H:oe,b,u))):(p==0&&(c=p=1),f=oe.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(oe,A,E,h),c<1&&(p++,t(A,E<h?H:oe,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,os=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[p=0],u=l/Ke(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/Q),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Ke(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ke(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Ke(10,Q-o),m[p]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=ft)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ps(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function xr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Tr(r,e,t){if(e>qu)throw J=!0,t&&(r.precision=t),Error(ss);return G(new r(kr),e,1,!0)}function pt(r,e,t){if(e>hi)throw Error(ss);return G(new r(hr),e,t,!0)}function ls(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ft(r){for(var e="";r--;)e+="0";return e}function ms(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),rs(o.d,s)&&(i=!0)),t=ve(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),rs(e.d,s)}return J=!0,o}function ns(r){return r.d[r.d.length-1]&1}function ds(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 Ti(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(we(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&xn(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return G(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Me(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Me(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Tr(g,l+2,A).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,P,J=!0):f;for(m=f,u=s=f=we(f.minus(1),f.plus(1),l,1),p=G(f.times(f),l,1),i=3;;){if(s=G(s.times(p),l,1),c=u.plus(we(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Tr(g,l+2,A).times(o+""))),u=we(u,new g(d),l,1),e==null)if(xn(u.d,l-y,P,a))g.precision=l+=y,c=s=f=we(m.minus(1),m.plus(1),l,1),p=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function ps(r){return String(r.s*r.s/0)}function Ii(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),cs.test(e))return Ii(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=ms(n,new n(t),o,o*2)),c=Pr(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=xr(c,l),r.d=c,J=!1,s&&(r=we(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):Bn.pow(2,u))),J=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Br(5,t)),e=ln(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(J=!1,u=t.times(t),a=new r(n);;){if(s=we(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=we(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function Br(r,e){for(var t=r;--e;)t*=r;return t}function fs(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ns(t)?n?2:3:n?4:1,e;Rt=ns(t)?n?1:4:n?3:2}return e.minus(i).abs()}function xi(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(Qe(t,1,Dt),n===void 0?n=d.rounding:Qe(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=ps(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Pr(kt(p),10,i),p.e=p.d.length),m=Pr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=we(r,p,t,n,0,i),m=r.d,o=r.e,c=os),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+=Pi.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=Pr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Pi.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 rs(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Hu(r){return new this(r).acosh()}function Qu(r,e){return new this(r).plus(e)}function ju(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(we(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(we(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(Ir+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=ki[t]),(n=r[t])!==void 0)if(ve(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=ki[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(as);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function ys(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,is(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 Ii(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),cs.test(o)?Ii(c,o):Gu(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ic,i.clone=ys,i.isDecimal=is,i.abs=zu,i.acos=Yu,i.acosh=Hu,i.add=Qu,i.asin=ju,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=Pc,i.round=kc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(r=new this(r),r.e+1,3)}function lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function is(r){return r instanceof Bn||r&&r.toStringTag===us||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ds(this,arguments,"lt")}function bc(){return ds(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function Pc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Qe(r,1,Dt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(as);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Ke(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function kc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Bn=L.constructor=ys(ki);kr=new Bn(kr);hr=new Bn(hr);var F=Bn;import{PublicKey as Ri}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as he,SystemProgram as bs,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Bi=[k({pubkey:Lc,isWritable:!1}),k({pubkey:bs.programId,isWritable:!1}),k({pubkey:Oc,isWritable:!1})];function Si({publicKey:r,transformSol:e}){let t=Ki(r.toString());if(t instanceof he)return e&&t.equals(Ce)?te:t;if(e&&t.toString()===Ce.toBase58())return te;if(typeof t=="string"){if(t===he.default.toBase58())return he.default;try{return new he(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ki(r){try{return new he(r)}catch{return r}}var mn=new he("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),gs=new he("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new he("SysvarRent111111111111111111111111111111111"),Ci=new he("SysvarC1ock11111111111111111111111111111111"),dn=new he("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Sr=new he("Sysvar1nstructions1111111111111111111111111"),ws=bs.programId,Ed=new he("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Fd=new he("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),vd=new he("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Wd=new he("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Dd=new he("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),qd=new he("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ud=new he("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Gd=new he("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Xd=new he("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),zd=new he("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Yd=new he("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new he("So11111111111111111111111111111111111111112"),Ce=he.default;function pn(r){return Si({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";var ht={chainId:101,address:Nc.default.toBase58(),programId:As.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:As.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 Li=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Ri&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Ri(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Ri.default:Si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Te=Li;Te.WSOL=new Li(D(N({},Re),{mint:Re.address}));import Cr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Sn=_c;var Kr=ae("module/fraction"),Oi=Sn(Cr),Kn=Sn(Ec),Fc={[0]:Kn.ROUND_DOWN,[1]:Kn.ROUND_HALF_UP,[2]:Kn.ROUND_UP},vc={[0]:Cr.roundDown,[1]:Cr.roundHalfUp,[2]:Cr.roundUp},me=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(X(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(X(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(X(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(X(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Kr.logWithError(`${e} is not an integer.`),e<=0&&Kr.logWithError(`${e} is not positive.`),Kn.set({precision:e+1,rounding:Fc[n]});let i=new Kn(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)||Kr.logWithError(`${e} is not an integer.`),e<0&&Kr.logWithError(`${e} is negative.`),Oi.DP=e,Oi.RM=vc[n]||1,new Oi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=ae("Raydium_price"),st=class extends me{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new me(Ni(n.decimals),Ni(i.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new st({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new st({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Mi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Rr=Mi;Rr.SOL=new Mi(ht);import qc from"bn.js";var Ps=new me(new qc(100)),tt=class extends me{toSignificant(e=5,t,n){return this.mul(Ps).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ps).toFixed(e,t,n)}};var ze=new Ze(0),hs=new Ze(1),Up=new Ze(2),Gp=new Ze(3),Xp=new Ze(5),_i=new Ze(10),zp=new Ze(100),Yp=new Ze(1e3),Hp=new Ze(1e4),ks=9007199254740991;function X(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ni(r){return _i.pow(X(r))}function Lr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=ae("Raydium_amount"),Is=Sn(Uc);function Xc(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Be=class extends me{constructor(t,n,i=!0,o){let s=new Or(0),a=_i.pow(new Or(t.decimals));if(i)s=X(n);else{let u=new Or(0),c=new Or(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=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 Be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Be(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 Is.DP=this.token.decimals,new Is(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ts(r){return typeof r=="object"&&r!==null&&![Te,Be,zc,me,Yc,st,tt].some(e=>typeof e=="object"&&r instanceof e)}function fe(r){return typeof r=="string"?Ki(r):Array.isArray(r)?r.map(e=>fe(e)):Ts(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fe(t)])):r}import{PublicKey as On,sendAndConfirmTransaction as Fr,Transaction as Nn,TransactionMessage as Mn,VersionedTransaction as _n}from"@solana/web3.js";import Jc from"axios";var 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 Bs,ComputeBudgetProgram as xs,Transaction as Nr,TransactionMessage as Hc,Keypair as Ss,VersionedTransaction as Ks}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qc}from"@solana/spl-token";var Lt=ae("Raydium_txUtil"),Cs=1644;function Mr(r){let e=[],t=[];return r.microLamports&&(e.push(xs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(xs.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function fn(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 _r(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Nr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Cs}catch{return!1}}async function Rs(r,e,t,n=!0){let i=new Bs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Nr;s.feePayer=i;for(let c of e)_r([...s.instructions,c],[i])||(o.push(s),s=new Nr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await jc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Ls(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=Bs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function jc(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Cn({instructions:r,payer:e,signers:t}){return _r(r,[e,...t])}function Rn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ss.generate().publicKey.toString()}){let o=new Hc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ks(o).serialize()).toString("base64").length<Cs}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function jt(r){let e=[];return r.forEach(t=>{t instanceof Nr&&(t.recentBlockhash||(t.recentBlockhash=Qc.toBase58()),t.feePayer||(t.feePayer=Ss.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ks&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Os,AddressLookupTableAccount as Vr}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Vf,unpackMint as Ef}from"@solana/spl-token";var Vi=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Ei(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=Ei(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Vi.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"&&Vi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Vi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ln(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}async function Fi({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Os(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Vr({key:s,state:Vr.deserialize(o.data)});n[s.toString()]=a,Er[s.toString()]=a}return n}var Er={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Vr({key:new Os("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Vr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var vr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,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 Jc.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Mr(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!==On.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 Nn;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 fn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),jt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Fr(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 fn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Fr(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));jt(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=ke(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:Er),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new On(d));let c=await Fi({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Mn({payerKey:this.feePayer,recentBlockhash:i?On.default.toBase58():await fn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new _n(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),jt([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),jt(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=ke(c,["computeBudgetConfig"]),i=t?Mr(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 On(f));if(u.length<12&&Cn({instructions:p,payer:this.feePayer,signers:y})||Cn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().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);Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().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 fn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),jt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let P of s){let A=await Fr(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 Fr(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=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:Er),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new On(g));let c=await Fi({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Mr(t):{instructions:[],instructionTypes:[]},m=await fn(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&&Rn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Rn({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&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(T))}else{let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(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&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(A))}else{let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(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)}),jt(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 yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function Ei(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Ns=r=>typeof r=="number";function Ms(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function _s(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as le}from"@solana/web3.js";var Vs=new le("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Es=new le("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new le("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),oy=new le("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),sy=new le("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),vi=new le("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fs=new le("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ay=new le("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),uy=new le("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),cy=new le("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ly=new le("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),el=new le("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new le("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new le("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new le("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),my=new le("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),dy=new le("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),py=new le("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),il=new le("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ol=new le("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),sl=new le("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),En={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};var fy={SERUM_MARKET:le.default,OPENBOOK_MARKET:new le("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:le.default,FarmV3:new le("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new le("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new le("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new le("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new le("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new le("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new le("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:il,CREATE_CPMM_POOL_AUTH:ol,CREATE_CPMM_POOL_FEE_ACC:sl,FEE_DESTINATION_ID:new le("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as al}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ul}from"@solana/spl-token";function ye(r,e,t){return ie([r.toBuffer(),(t!=null?t:ul).toBuffer(),e.toBuffer()],new al("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import bt from"bn.js";var Fn=1e4;function Ae(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 bt(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===Fn){let u=new bt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=vn(r.mul(new bt(Fn)),new bt(Fn-o.transferFeeBasisPoints)),c=new bt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=vn(l.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=vn(r.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function vn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new bt(0))?t.add(new bt(1)):t}var _e={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"},Wy=N({},_e);var vs="ray_tab_hash",Wi="ray_req_hash",cl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(vs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(vs,r)),r},Dr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=ke(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Wi)||"[]").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:cl()}));try{localStorage.setItem(Wi,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Wi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Dr(D(N({},t),{logCount:r,removeLastLog:!0}))}};var qr=ae("Raydium_Api"),Di=new Map;var Ur=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ml.create({baseURL:this.urlConfigs.BASE_HOST||_e.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return qr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(qr.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&&Dr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),qr.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&&Dr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),qr.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||_e.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||_e.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||_e.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||_e.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||_e.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||_e.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||_e.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||_e.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||_e.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>Di.has(s)?(n.push(Di.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||_e.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Di.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&&pn(t).toBase58(),n&&n!=="undefined"?pn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||_e.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||_e.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||_e.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||_e.CHECK_AVAILABILITY)).data}};var Gr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ws="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as $i,TOKEN_PROGRAM_ID as Xt,AccountLayout as bn,TOKEN_2022_PROGRAM_ID as Wl}from"@solana/spl-token";import{PublicKey as $r,SystemProgram as Dl}from"@solana/web3.js";var qi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ie=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new vr({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(qi(e))}logInfo(...e){this.logger.info(qi(e))}logAndCreateError(...e){let t=qi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ml,createCloseAccountInstruction as _l,createTransferInstruction as Vl,TOKEN_PROGRAM_ID as yn}from"@solana/spl-token";import{PublicKey as El,SystemProgram as Fl}from"@solana/web3.js";import vl from"bn.js";import{PublicKey as ea,Keypair as Rl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ll}from"@solana/spl-token";import Ol from"bn.js";import{PublicKey as Tl}from"@solana/web3.js";import Xs,{isBN as zs}from"bn.js";import{bits as dl,BitStructure as Pb,blob as pl,Blob as kb,cstr as hb,f32 as Tb,f32be as Ib,f64 as xb,f64be as Bb,greedy as Sb,Layout as fl,ns64 as Kb,ns64be as Cb,nu64 as yl,nu64be as Rb,offset as Lb,s16 as Ob,s16be as Nb,s24 as Mb,s24be as _b,s32 as bl,s32be as Vb,s40 as Eb,s40be as Fb,s48 as vb,s48be as Wb,s8 as Db,seq as gl,struct as qb,Structure as wl,u16 as Al,u16be as Ub,u24 as Gb,u24be as Xb,u32 as Pl,u32be as zb,u40 as Yb,u40be as Hb,u48 as Qb,u48be as jb,u8 as kl,UInt as hl,union as Zb,Union as $b,unionLayoutDiscriminator as Jb,utf8 as eg}from"@solana/buffer-layout";var Xr=fl,Ds=wl;var Ui=hl;var qs=kl,It=Al;var Gi=Pl;var Us=yl;var Ve=bl;var Gs=gl;var pe=pl;var Xi=dl;var $t=class extends Xr{constructor(t,n,i){super(t,i);this.blob=pe(t),this.signed=n}decode(t,n=0){let i=new Xs(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 Xs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},zr=class extends Xr{constructor(t){super(8,t);this._lower=Xi(Gi(),!1),this._upper=Xi(Gi(),!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 Ui(1,r)}function We(r){return new Ui(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function Ys(r){return new $t(1,!0,r)}function Hr(r){return new $t(8,!0,r)}function Hs(r){return new $t(16,!0,r)}var Yr=class extends Xr{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 Yr(pe(32),e=>new Tl(e),e=>e.toBuffer(),r)}function Ee(r){return new Yr(qs(),Il,xl,r)}function Il(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function xl(r){return r?1:0}var zi=class extends Ds{decode(e,t){return super.decode(e,t)}};function O(r,e,t){return new zi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:zs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=zs(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 Gs(r,i,t)}var qt=O([S("mint"),S("owner"),w("amount"),We("delegateOption"),S("delegate"),_("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),S("closeAuthority")]);function Bl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Yi(r,...e){if(!Bl(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 Hi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Qs(r,e){Yi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var jr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),gt=(r,e)=>r<<32-e|r>>>e;var yg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sl(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Qi(r){return typeof r=="string"&&(r=Sl(r)),Yi(r),r}var Qr=class{clone(){return this._cloneInto()}},bg={}.toString;function js(r){let e=n=>r().update(Qi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Kl(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 Zs=(r,e,t)=>r&e^~r&t,$s=(r,e,t)=>r&e^r&t^e&t,Zr=class extends Qr{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=jr(this.buffer)}update(e){Hi(this);let{view:t,buffer:n,blockLen:i}=this;e=Qi(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=jr(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){Hi(this),Qs(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;Kl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=jr(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 Cl=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),ji=class extends Zr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Gt[m-15],d=Gt[m-2],y=gt(p,7)^gt(p,18)^p>>>3,f=gt(d,17)^gt(d,19)^d>>>10;Gt[m]=f+Gt[m-7]+y+Gt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=gt(a,6)^gt(a,11)^gt(a,25),d=l+p+Zs(a,u,c)+Cl[m]+Gt[m]|0,f=(gt(n,2)^gt(n,13)^gt(n,22))+$s(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Js=js(()=>new ji);var Ng=ae("Raydium_Util");function ta({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:ye(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ea.default,amount:new Ol(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Ll}){let t=Rl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Nl(r,t,e),seed:t}}function Nl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Js(n);return new ea(i)}function Zi(r){let{mint:e,tokenAccount:t,owner:n,programId:i=yn}=r;return Ml(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=yn}=r;return _l(e,t,i,n,o)}async function xt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new vl(a)),c=De({fromPublicKey:i,programId:yn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[Fl.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:yn}),Zi({mint:new El(Re.address),tokenAccount:c.publicKey,owner:o,programId:yn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Wn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=yn}){return Vl(r,e,t,BigInt(String(n)),i,o)}var Dn=class extends Ie{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ye(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Wl},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ta({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Xt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new $r(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new $r(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=$i(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)&&bn.decode(P.data).mint.equals(n)&&bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(V.CreateATA);if(n.equals(te)&&i.amount){let P=await xt({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(Wn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Nt({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 xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(bn.span),A=Dl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:bn.span,programId:l});return d.instructions.push(A,Zi({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(Nt({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=Xt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await $i(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({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=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new $r(te).equals(o)){let d=await xt({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=$i(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Xt)&&bn.decode(f.data).mint.equals(o)&&bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new $r(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=ke(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=ke(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as um}from"@solana/spl-token";import{PublicKey as Pe,SystemProgram as cm}from"@solana/web3.js";import{PublicKey as ua}from"@solana/web3.js";var Ji=O([_("instruction")]),eo=O([_("instruction")]),ql=O([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")]),Ul=O([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Gl=O([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),pe(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),Xl=O([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(ql,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),na=new Proxy(Ul,{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)}}),ra=new Proxy(Gl,{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)}}),qn=new Proxy(Xl,{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)}}),zl=O([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),to=O([_("instruction"),w("nonce"),q(zl,5,"rewardTimeInfo")]),no=O([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),ro=O([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),mw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Un=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),dw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ia=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),oa=O([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=O([_("instruction"),w("amount")]),Yl=O([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ys("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),sa=O([pe(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(Yl,4,"votingMints"),Hr("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),Hl=O([Hr("startTime"),Hr("endTime"),_("kind"),q(_(),15,"reserved")]),Ql=O([q(Hl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),aa=O([pe(8),S("voterAuthority"),S("registrar"),q(Ql,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var Pw=ae("Raydium_farm_config"),ca=new ua("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),la=new ua("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),ma={3:na,5:ra,6:qn},da={3:Un,5:ia,6:oa},io=r=>[3,5,6].indexOf(r)!==-1,oo=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},wt={[Vs.toString()]:3,[Es.toString()]:5,[Vn.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as $l,SYSVAR_CLOCK_PUBKEY as zn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Jl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as em}from"@solana/spl-token";import ei from"bn.js";function so(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function ao(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function uo(r,e){return ie([e.toBuffer()],r)}function co(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function lo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function mo(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Gn=ae("Raydium.farm.util");function Xn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var pa=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function fa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function po(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function Jr(r){let e=da[r];return e||Gn.logWithError("invalid version",r),e}function jl(r){let e=ma[r];return e||Gn.logWithError("invalid version",r),e}function Zl(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new $e(0)))continue;let o=$e.min(new $e(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function Ew({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let p of e){let d=fe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:Je({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await Ln(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=jl(d);(!b||!b.data||b.data.length!==P.span)&&Gn.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Gn.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=Jr(d);b&&b.data&&(b.data.length!==P.span&&Gn.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=Zl(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=D(N({},c[p].wrapped),{pendingRewards:b})}return c}function Fw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ms(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>_s(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 fo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=sa.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=aa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var tm=ae("Raydium_farm_instruction"),Yn={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 ya(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||tm.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ji.span);Ji.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:$l,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function ba(r){var n;let e=Buffer.alloc(to.span);to.encode({instruction:0,nonce:new ei(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Bi,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6Create}}function ga(r){let e=Buffer.alloc(eo.span);eo.encode({instruction:5},e);let t=[k({pubkey:nt,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function nm(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=O([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...Yn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function rm(r,e,t,n){let i=O([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...Yn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function im(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...Yn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function om(r,e,t,n,i,o){let s=O([_("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function sm(r,e,t,n,i,o,s,a){let u=O([_("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:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Yn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function am(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),We("periods"),Ee("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:em,isSigner:!1,isWritable:!1},{pubkey:je,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([...Yn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:d,programId:r,data:f})}async function tA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=so(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new ei(0)))throw Error("user do not has new stake amount");let y=ao(e,a).publicKey,f=uo(e,a).publicKey,{publicKey:b,nonce:g}=co(n,c,s),P=ye(b,y,u).publicKey,{publicKey:A,nonce:h}=lo(n,c,s),T=mo(t,i,o,s).publicKey,I=[],B=ye(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(Jl(s,B,s,y)),await r.getAccountInfo(b)===null){let H=om(t,i,s,o,s,T);I.push(H,sm(n,c,b,A,s,s,g,h))}let{index:M,isInit:E}=await fo(r,c,b,y);return E||I.push(am(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(nm(n,c,b,P,B,s,l,a,y,f,e,M,d),rm(n,c,b,A)),I}async function nA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=so(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data);if(p.voteLockedBalance.eq(new ei(0)))throw Error("user has vote locked balance = 0");let d=ao(e,a).publicKey,y=uo(e,a).publicKey,{publicKey:f}=co(n,c,s),b=ye(f,d,u).publicKey,{publicKey:g}=lo(n,c,s),P=mo(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await fo(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(im(n,c,f,s,P,g,b,ye(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function yo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(no.span);no.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[k({pubkey:nt,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function bo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(ro.span);ro.encode({instruction:4,isSet:new ei(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...Bi,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function rA(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],p=Je({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:nt,isWritable:!1}),...c?[k({pubkey:Jt.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new re(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new re(t.rewardInfos[f].vault)})),y.push(k({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:d})}function Hn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Pa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}var Zn=class extends Ie{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:po(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=Vn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Pe(e.lpMint.address),lockInfo:{lockMint:ca,lockVault:la},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(qn.span);u.addInstruction({instructions:[cm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:qn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=pa({programId:new Pe(a.programId),poolId:l.publicKey}),y=Xn({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(fa(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(Ce)?new Pe(Re.address):h.mint;b.push({rewardMint:B,rewardVault:Xn({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}=ba({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=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ce)?new Pe(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new Pe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ce,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[yo({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=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ce)?new Pe(Re.address):m.mint,d=a.rewardInfos.findIndex(A=>new Pe(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ce,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=yo({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=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new Pe(Re.address):i.mint,m=Xn({programId:new Pe(n.programId),poolId:new Pe(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:[bo({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=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=fe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ce)?new Pe(Re.address):l.mint,p=Xn({programId:new Pe(n.programId),poolId:new Pe(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=bo({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=wt[p];io(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Pe(n.programId),new Pe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=ye(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:oe,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new Pe(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=oe,dt&&P.addInstruction(dt)}A[v.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=Jr(d).decode(x.data)),n.programId!==Vn.toString()&&!B){let{instruction:v,instructionType:j}=ya({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[v],instructionTypes:[j]})}let K=oo({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new Pe(v))},E=d===6?Pa(M):d===5?Aa(M):wa(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=wt[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=ye(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=Je({programId:new Pe(n.programId),poolId:new Pe(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}),Jr(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 Pe(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 Pe(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=oo({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new Pe(K))},B=d===6?Hn(I):d===5?Qn(I):jn(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=fe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ce.toString()?new Pe(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:po(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:[um(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=ga({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=ye(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=wt[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 Pe(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:oe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:H.mint.programId,mint:new Pe(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,oe&&l.addInstruction(oe)}m[H.mint.address]=j,B.push(j)}let x=d[P],K={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(H=>new Pe(H))},M=A===6?Hn(K):A===5?Qn(K):jn(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 et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ui}from"@solana/spl-token";var BA=O([We("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),We("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as lm}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as mm}from"@solana/spl-token";var MA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new lm(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},_A=({mint:r,decimals:e,programId:t=mm,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}},ha=r=>new Te({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),VA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=ke(o,["amount","isRaw","name"]);return new Be(new Te({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function EA(r){return r.address===ht.address?Re:r}function FA(r){return r.address===Re.address?ht:r}import{TOKEN_PROGRAM_ID as $n,ASSOCIATED_TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{PublicKey as be,TransactionInstruction as Mt,SystemProgram as To,SYSVAR_RENT_PUBKEY as Sm}from"@solana/web3.js";var go=O([_("instruction"),w("amountIn"),w("minAmountOut")]),wo=O([_("instruction"),w("maxAmountIn"),w("amountOut")]),jA=O([_("instruction"),_("nonce")]),Ao=O([_("instruction"),_("nonce"),w("startTime")]),dm=O([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),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")]),pm=O([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),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")]),Po=O([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),ko=O([_("instruction"),w("amountIn")]),ZA={4:dm,5:pm},Ta=O([w("fee")]);import{PublicKey as fm}from"@solana/web3.js";var wn=new fm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,ym=O([w("x"),w("y"),w("price")]),bm=O([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(ym,tn,"DataElement")]);function gm(r,e){return[0,tn-2]}function wm(r){return[0,tn-2]}function Am(r){return[0,tn-2]}function Pm(r,e,t){let[n,i]=gm(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=tn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function ho(r,e,t){let[n,i,o]=Pm(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function en(r,e,t){return e*r.multiplier/t}function Ia(r,e,t){return e*t/r.multiplier}function km(r,e){let[t,n]=wm(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function hm(r,e){let[t,n]=Am(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=km(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 Tm(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=hm(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 Im(r,e){let t=xa(r,e,0,!1);return t[3]?t[0]:0}function Ba(r,e,t,n){let i=ho(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,p]=xa(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ia(r,d,i)}}function Sa(r,e,t,n){let i=ho(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,p]=Tm(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ia(r,d,i)}}function xm(r){let e=bm.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 Ka(r,e,t,n){let i=Im(r,en(r,e,ho(r,e,t)))/r.multiplier;return n?i:1/i}var gn=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(wn);e&&(this._layoutData=xm(e==null?void 0:e.data))}}};var Ca=ae("Raydium_liquidity_instruction");function Ra(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Po.span);Po.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:hs},a);let u=[k({pubkey:$n,isWritable:!1}),k({pubkey:new be(e.id)}),k({pubkey:new be(t.authority),isWritable:!1}),k({pubkey:new be(t.openOrders),isWritable:!1}),k({pubkey:new be(t.targetOrders)}),k({pubkey:new be(e.lpMint.address)}),k({pubkey:new be(t.vault.A)}),k({pubkey:new be(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:wn})),u.push(k({pubkey:new be(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new be(t.marketEventQueue),isWritable:!1})),new Mt({programId:new be(e.programId),keys:u,data:a})}function Io(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=fe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(ko.span);ko.encode({instruction:4,amountIn:X(i)},a);let u=[k({pubkey:$n,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:wn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function La({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=O([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Bm,isSigner:!1,isWritable:!1},{pubkey:To.programId,isSigner:!1,isWritable:!1},{pubkey:je,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 Mt({keys:K,programId:r,data:M}),instructionType:V.AmmV4CreatePool}}function pP(r){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new be(r.programId),keys:n,data:t})}function Km({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=fe(r),s=Buffer.alloc(go.span);go.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[k({pubkey:$n,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:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Cm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=fe(r),s=Buffer.alloc(wo.span);wo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[k({pubkey:To.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:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function ti(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 Km(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Cm(D(N({},a),{maxAmountIn:i,amountOut:o}),t);Ca.logWithError("invalid params","params",r)}throw Ca.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function fP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Ao.span);Ao.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=fe(r),o=[k({pubkey:$n,isWritable:!1}),k({pubkey:To.programId,isWritable:!1}),k({pubkey:Sm,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Oa({poolKeys:r}){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new be(r.id),isWritable:!1}),k({pubkey:new be(r.authority),isWritable:!1}),k({pubkey:new be(r.openOrders),isWritable:!1}),k({pubkey:new be(r.vault.A),isWritable:!1}),k({pubkey:new be(r.vault.B),isWritable:!1}),k({pubkey:new be(r.mintLp.address),isWritable:!1}),k({pubkey:new be(r.marketId),isWritable:!1}),k({pubkey:new be(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new be(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Fe,TOKEN_2022_PROGRAM_ID as Ht,ASSOCIATED_TOKEN_PROGRAM_ID as Ha}from"@solana/spl-token";import{PublicKey as W,TransactionInstruction as At,SystemProgram as An,Keypair as Oo}from"@solana/web3.js";import Qa from"bn.js";import Wm from"bn.js";function Na(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function bP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function gP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ni(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function xo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Bo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Jn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ma(r,e){return Jn(r,e)?null:xo(r,e)}function _a(r,e){return Jn(r,e)?null:Bo(r,e)}var Rm=Buffer.from("amm_config","utf8"),Lm=Buffer.from("pool","utf8"),Om=Buffer.from("pool_vault","utf8"),Nm=Buffer.from("pool_reward_vault","utf8"),Va=Buffer.from("position","utf8"),Mm=Buffer.from("tick_array","utf8"),_m=Buffer.from("operation","utf8"),Vm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function kP(r,e){return ie([Rm,Na(e)],r)}function Ea(r,e,t,n){return ie([Lm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function So(r,e,t){return ie([Om,e.toBuffer(),t.toBuffer()],r)}function Fa(r,e,t){return ie([Nm,e.toBuffer(),t.toBuffer()],r)}function ge(r,e,t){return ie([Mm,e.toBuffer(),ni(t)],r)}function nn(r,e,t,n){return ie([Va,e.toBuffer(),ni(t),ni(n)],r)}function at(r,e){return ie([Va,e.toBuffer()],r)}function ri(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function er(r){return ie([_m],r)}function ut(r,e){return ie([Vm,e.toBuffer()],r)}import Bt from"bn.js";var de=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ii=new Bt(1).shln(128),Ko=it.sub(rt),tr=64,va=ii.subn(1),qe=-443636,He=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Wa=16,Da="59543866431248",qa="184467440737095516",Ua="15793534762490258745",oi=new Bt(10).pow(new Bt(6)),Em=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Em||{}),IP={[500]:10,[3e3]:60,[1e4]:200},xP={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},Ga={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:[]},BP=new Bt("18446744073700000000");var Fm=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Fm/2));for(let d=0;d<l.length;d++){let{publicKey:y}=ge(t,n,l[d]);u.push(y)}let m=(await Tt(e,u)).map(d=>d!==null?nr.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=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Le-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=ge(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<Le;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=ge(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(U.checkIsOutOfBoundary(e)){if(e>He)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Se from"bn.js";var Co=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Ma(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=_a(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},rr=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;if(He<=t)throw Error(`extensionTickBoundary check error: ${He}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=Jn(512,u)?null:xo(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=Jn(512,u)?null:Bo(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var ir=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ct(0),a=new Ct(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,it),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,it),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=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=ue.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[Ae(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ae(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Ae(new Ct(new F(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ae(new Ct(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:Zt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Xa}from"@solana/spl-token";var Ue=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=ge(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?rr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ge(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=ge(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=rr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>He)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 Yt(p)});if(d.tokenMint.equals(Yt.default))continue;if(n<=d.openTime.toNumber()||i.eq(de)){s.push(d);continue}let y=new Se(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,it),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=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>He&&(t=ce.getArrayStartIndex(He,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Ln(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=ge(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await Ln(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=nr.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(at(d,p).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=ai.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ue.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 Se(0)})),leverage:T,tokenFeeAmountA:new Se(0),tokenFeeAmountB:new Se(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=B}if(o){let p=Object.values(m),d=await Tt(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=nr.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[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await ir.GetPositionFees(f,g,I,B),M=await ir.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Se(0))?x:new Se(0),g.tokenFeeAmountB=K.gte(new Se(0))?K:new Se(0);for(let E=0;E<M.length;E++)g.rewardInfos[E].pendingReward=M[E].gte(new Se(0))?M[E]:new Se(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?St.add(new Se(1)):Kt.sub(new Se(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ae(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((M=p.fee)!=null?M:de),u),g=Ae(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 Se(Math.floor((1-s)*1e10))).div(new Se(1e10)),T=Ae(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 tt(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:Zt(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 Te(D(N({},u),{mint:u.address,isToken2022:u.programId===Xa.toBase58()})),new Te(D(N({},c),{mint:c.address,isToken2022:c.programId===Xa.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(N({},p),{amount:new Be(l,p.amount),fee:p.fee===void 0?void 0:new Be(l,p.fee)}),I=D(N({},d),{amount:new Be(m,d.amount),fee:d.fee===void 0?void 0:new Be(m,d.fee)}),B=D(N({},y),{amount:new Be(m,y.amount),fee:y.fee===void 0?void 0:new Be(m,y.fee)}),x=new st({baseToken:l,denominator:new Se(10).pow(new Se(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),K=new st({baseToken:l,denominator:new Se(10).pow(new Se(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),M=new Be(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=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[pn(e.mintA.address).toString()],p=i[pn(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}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ue.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 oe,dt;let j=v.mint.decimals,ee=i[v.mint.address];return u<((oe=v.startTime)!=null?oe:0)||u>((dt=v.endTime)!=null?dt: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=Ae(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Se(new F(y.amount.sub((P=y.fee)!=null?P:de).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,p,f,!a):new Se(0);else if(l.lte(p)){let A=ue.getLiquidityFromTokenAmountA(l,p,f,!a),h=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Se(0):ue.getLiquidityFromTokenAmountB(m,p,f);return Ue.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[Ae(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ae(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Ae(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Ae(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=si.decode(i.data),s=ut(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new F(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function mk({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]=[Ae(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),Ae(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:de),g.amount.sub((I=g.fee)!=null?I:de));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(de)||(o=o.add(rt)),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(rt)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ii).sub(t).mod(ii)}};function Ne(r,e){return Ro(r.mul(e),64,256)}function vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ro(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(tr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,rt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(tr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,rt,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<qe||e>He)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=va.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=vm(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Wa;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ne(Da)),p=Ro(m.sub(new ne(qa)),64,128).toNumber(),d=Ro(m.add(new ne(Ua)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},sn=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=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(s,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(tr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),rt,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),it):$.mulDivFloor(n,t.sub(e),it)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,rt,Ko):a.shrn(tr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Ko,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new F(u.toString()).mul(l).toFixed(0)),p=new ne(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=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Ae(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),Ae(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[Ae(new ne(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),Ae(new ne(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:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Kt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(de),b={amountSpecifiedRemaining:p,amountCalculated:de,sqrtPriceX64:m,tick:c>d?Math.min(d+ce.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new ne(0)},g=d,P=n[d],A=0,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=U.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Ue.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}=ge(e,t,g);x=E,P=n[g],B=U.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<qe?T.tickNext=qe:T.tickNext>He&&(T.tickNext=He),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]=on.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(_t)),b.liquidity=ue.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}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(ge(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 ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(de);if(u){let l=$.mulDivFloor(i,oi.sub(new ne(o.toString())),oi);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new ne(o),oi.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=ge(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Wm(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=ge(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>He}static nextInitTick(e,t,n,i,o){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=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=sn.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=sn.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 _k=O([pe(8),_("bump"),It("index"),S(""),We("protocolFeeRate"),We("tradeFeeRate"),It("tickSpacing"),q(w(),8,"")]),Dm=O([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Lo=O([pe(8),Ee("initialized"),S("poolId"),q(Dm,1e3,"observations"),q(z(),5,"")]),qm=O([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),si=O([pe(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),It("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ve("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(qm,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")]),Um=O([z("growthInsideLastX64"),w("rewardAmountOwed")]),ai=O([pe(8),_("bump"),S("nftMint"),S("poolId"),Ve("tickLower"),Ve("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Um,3,"rewardInfos"),q(w(),8,"")]),Vk=O([pe(8),_("bump"),S("poolId"),Ve("tickLowerIndex"),Ve("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Gm=O([Ve("tick"),Hs("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),nr=O([pe(8),S("poolId"),Ve("startTickIndex"),q(Gm,Le,"ticks"),_("initializedTickCount"),q(_(),115,"")]),Ya=O([pe(329),q(S(),100,"whitelistMints")]),za=O([pe(8),S("poolId"),q(q(w(),8),Co,"positiveTickArrayBitmap"),q(q(w(),8),Co,"negativeTickArrayBitmap")]);var ja=ae("Raydium_Clmm"),Pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},xe=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...Pt.createPool,...g]);return new At({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=De({fromPublicKey:i,programId:n}),[p,d]=[new W(o.address),new W(s.address)],y=[An.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Lo.span),space:Lo.span,programId:n})],{publicKey:f}=Ea(n,a,p,d),{publicKey:b}=So(n,f,p),{publicKey:g}=So(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new W(o.programId||Fe),d,g,new W(s.programId||Fe),ut(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=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("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:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Ha,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Ht,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([...Pt.openPosition,...j]);return new At({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=Oo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,Fe),{publicKey:h}=ri(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(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=Oo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(p,d,f),{publicKey:P}=ge(p,d,b),{publicKey:A}=ye(n.wallet,y,Fe),{publicKey:h}=ri(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(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=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("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:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Ha,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Ht,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 Qa(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...Pt.openPosition,...j]);return new At({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=Oo.generate();p.push(x),m=x.publicKey}let[d,y]=[new W(e.programId),new W(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=ge(d,y,f),{publicKey:P}=ge(d,y,b),{publicKey:A}=ye(n.wallet,m,Fe),{publicKey:h}=ri(m),{publicKey:T}=at(d,m),{publicKey:I}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(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=O([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Pt.closePosition,...u]);return new At({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new W(e.programId),{publicKey:s}=ye(n.wallet,i.nftMint,Fe),{publicKey:a}=at(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=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,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([...Pt.increaseLiquidity,...I]);return new At({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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ge(u,c,l),{publicKey:d}=ge(u,c,m),{publicKey:y}=ye(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new W(t.vault.A),new W(t.vault.B),new W(e.mintA.address),new W(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(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=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,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 Qa(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new At({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=O([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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:mn,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([...Pt.decreaseLiquidity,...B]);return new At({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=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ge(c,l,m),{publicKey:y}=ge(c,l,p),{publicKey:f}=ye(i.wallet,n.nftMint,u),{publicKey:b}=at(c,n.nftMint),{publicKey:g}=nn(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,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ut(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=O([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:mn,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([...Pt.swap,...T]);return new At({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,ut(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=O([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...Pt.initReward,...f]);return new At({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=Fa(o,s,i.mint).publicKey,u=er(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=O([_("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:X(l),endTime:X(m)},f);let b=Buffer.from([...Pt.setRewardEmissions,...f]);return new At({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)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=er(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=O([_("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:Fe,isSigner:!1,isWritable:!1},{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Pt.collectReward,...l]);return new At({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)&&ja.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 Hm}from"@solana/web3.js";import{PublicKey as zm}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),Xm={4:3,5:3};var Ym=ae("Raydium_liquidity_serum");function eu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=zm.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Ym.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 or from"bn.js";function Mo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Qm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function jm({programId:r}){return ie([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=jm({programId:a}),d=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Qm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=eu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Hm.default,configId:Mo({programId:a})}}var No;async function dh({connection:r,poolKeysList:e,config:t}){No||(No=new gn({connection:r}),await No.initStableModelLayout());let n=e.map(s=>Oa({poolKeys:s}));return(await Rs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Ls(s,"GetPoolData"),u=new or(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),p=new or(Ot(a,"pool_coin_amount")),d=new or(Ot(a,"pool_pc_amount")),y=new or(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new or(f)}})}import ot from"bn.js";var sr=class extends Ie{constructor(t){super(t);this.stableLayout=new gn({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 ot(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ha(t[o?"mintB":"mintA"]),[u,c]=[new ot(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ot(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ot(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=ze;s.isZero()||(p=m==="base"?Lr(s.mul(c),u):Lr(s.mul(u),c)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let d=Lr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",d.toString());let f=new tt(new ot(1)).add(i).mul(p).quotient,b=new Be(a,p),g=new Be(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new et(n.lpMint.address)}),P=[d,y],A=[f,b],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(),Et=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Et,oe=ke(Et,["tokenAccount"]);j.addInstruction(oe);let wr=await l.handleTokenAccount({side:"in",amount:H,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:dt}=wr,Tn=ke(wr,["tokenAccount"]);j.addInstruction(Tn);let In=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:gi}=In,wi=ke(In,["tokenAccount"]);return j.addInstruction(wi),j.addInstruction({instructions:[Ra({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:dt,lpTokenAccount:gi,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 et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=ke(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=ke(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Io({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=ui,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||ye(this.scope.ownerPubKey,ee.accountInfo.mint,ui).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 ot(0)),A=t.mintA.address===Te.WSOL.mint.toString(),h=t.mintB.address===Te.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ui,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ui,mint:new et(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 Et of s.rewardInfos){let wr=Et.mint.address===Te.WSOL.mint.toString();if(b[Et.mint.address])ee.push(b[Et.mint.address]);else{let{account:In,instructionParams:Qo}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!wr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});In||this.logAndCreateError("farm reward account not found:",Et.mint.address),Qo&&f.addInstruction(Qo),ee.push(In)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:ee},Tn=wt[s.programId],gi=Tn===6?Hn(dt):Tn===5?Qn(dt):jn(dt),wi={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[gi],instructionTypes:[wi[Tn]]})}let K=await this.getAmmPoolKeys(t.id),M=Io({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 xe.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(nu),P=c.useSOLBalance&&o.mint.equals(nu),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=tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),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}=La(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:ye(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=Mo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ta.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===Fs.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=Ka(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 ot(0),g=new ot(0);if(!f.isZero())if(d){g=vn(f.mul($a),Ja);let x=f.sub(g),K=m.add(x);b=p.mul(x).div(K)}else{g=f.mul(new ot(2)).div(new ot(1e4));let x=f.sub(g);l==="quote"?b=new ot(Ba(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ot(Sa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ot(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 et(l.address),programId:new et(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=ke(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=ke(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ti({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 se}from"@solana/web3.js";import ct from"bn.js";var ar=class extends Ie{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||se.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new ct(new se(i.address).toBuffer()).gt(new ct(new se(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await xe.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:[]}},Ga),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 se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||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 xe.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 se(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 se(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 xe.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 se(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 se(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=xe.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 se(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 se(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=xe.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 se(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 se(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});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 se(K.mint.programId),mint:new se(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 xe.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 xe.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=xe.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 se(n.mint.address),mint:new se(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(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=xe.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new se(n.mint.programId),mint:new se(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.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 se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(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=xe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new se(l.mint.programId),mint:new se(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 ct(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=xe.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 se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(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=xe.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new se(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 se(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=xe.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 se(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=xe.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?St.add(new ct(1)):Kt.sub(new ct(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 se(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 se(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(xe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new se(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?ye(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(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 se(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 se(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 se(A.mint.programId),mint:new se(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});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=xe.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new ct(0),amountMinA:new ct(0),amountMinB:new ct(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(er(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(se.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new ct(1))).map(s=>at(new se(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=ai.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new se(e)),n=si.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 li,TOKEN_PROGRAM_ID as Qt,AccountLayout as pu}from"@solana/spl-token";var Zm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),$m=Buffer.from("amm_config","utf8"),Jm=Buffer.from("pool","utf8"),ed=Buffer.from("pool_lp_mint","utf8"),td=Buffer.from("pool_vault","utf8"),nd=Buffer.from("observation","utf8");function rd(r){return ie([Zm],r)}function id(r,e){return ie([$m,ad(e)],r)}function od(r,e,t,n){return ie([Jm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function sd(r,e){return ie([ed,e.toBuffer()],r)}function ru(r,e,t){return ie([td,e.toBuffer(),t.toBuffer()],r)}function ci(r,e){return ie([nd,e.toBuffer()],r)}function ad(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=id(r,0).publicKey,i=rd(r).publicKey,o=od(r,n,e,t).publicKey,s=sd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ci(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ur}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _o,TOKEN_2022_PROGRAM_ID as ou,ASSOCIATED_TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";var cd=ae("Raydium_cpmm"),cr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function su(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=O([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:_o,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:ud,isSigner:!1,isWritable:!1},{pubkey:ws,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new ur({keys:T,programId:r,data:Buffer.from([...cr.initialize,...I])})}function au(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return cd.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.deposit,...g])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:gs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.withdraw,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseInput,...P])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseOutput,...P])})}import Ge from"bn.js";var mu=O([pe(8),_("bump"),Ee("disableCreatePool"),It("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),du=O([pe(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 lr=class extends Ie{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=du.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=mu.decode(u.data))}return D(N({},i),{baseReserve:new Ge(pu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new Ge(pu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var H,v,j;let p=i.feePayer||((H=this.scope.owner)==null?void 0:H.publicKey),d=new Ge(new Y(c.mintA.address).toBuffer()).lte(new Ge(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===li.toBase58(),A=i.useSOLBalance&&f.address===li.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=iu({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[su(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,K,ye(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((v=y.programId)!=null?v:Qt),new Y((j=f.programId)!=null?j:Qt),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===li.toString(),A=t.mintB.address===li.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=ke(ee,["tokenAccount"]);h.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[au(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 tt(new Ge(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]=[Ae(c,t.mintA.extensions.feeConfig,m,!0),Ae(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:[uu(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 Ge(0)),l.sub((v=d.fee)!=null?v:new Ge(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:Qt),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T:Qt),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=ke(I,["tokenAccount"]);l.addInstruction(b);let 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=ke(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?cu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:Qt),new Y((K=t.mintB.programId)!=null?K:Qt),m,p,ci(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((M=t.mintB.programId)!=null?M:Qt),new Y((E=t.mintA.programId)!=null?E:Qt),p,m,ci(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 Ge(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=Ae(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new Ge(0)),[l,m]=[new Ge(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Ge(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new Ge(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:ze,fee:void 0,expirationTime:void 0};c.isZero()||(f=Ae(ld(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new tt(new Ge(1)).add(n),g=Ae(b.mul(f.amount.sub((T=f.fee)!=null?T:new Ge(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 ld(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Ge(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Ge(1))),{amountA:i,amountB:o}}var mr=class extends Ie{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Wn({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 xt({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:[Wn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as md}from"@solana/spl-token";import{PublicKey as dd,Transaction as Vo,TransactionInstruction as pd}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Ie{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(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:Xe.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(Te.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(Te.WSOL.mint),associatedOnly:u.mintAddress.equals(Te.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(Te.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(Te.WSOL.mint),associatedOnly:m.mintAddress.equals(Te.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return _r(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Vo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Vo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Vo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=O([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:md,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 pd({keys:o,programId:e,data:a})}},lt=Xe;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=O([pe(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(O([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=O([pe(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(O([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new dd(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as dr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import pr from"bn.js";import{TransactionInstruction as yd,SYSVAR_RENT_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function fd(r="accountFlags"){let e=new zr(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 Eo=O([pe(5),fd("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"),pe(7)]);function gd({programId:r,marketInfo:e}){let t=O([_("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),It("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:bd,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 yd({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Eo.span),space:Eo.span,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),gd({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 Pn=class extends Ie{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new pr(100);function P(){let K=new pr(0);for(;;)try{return{vaultOwner:dr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new pr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new pr(Math.round(10**e.decimals*n)),I=new pr(Math.round(n*10**t.decimals*i));if(T.eq(ze))throw Error("lot size is too small");if(I.eq(ze))throw Error("tick size or lot size is too small");let B=await wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce: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 dr(e.mint),quoteMin:new dr(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 dr(e.mint),quoteMin:new dr(t.mint)}})}};import{PublicKey as yr}from"@solana/web3.js";import{PublicKey as wd,TransactionInstruction as vo,SYSVAR_CLOCK_PUBKEY as Ad}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wo}from"@solana/spl-token";var Fo=O([_("instruction"),Us("amount")]),fr=O([_("instruction")]);function nx({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new wd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Ci,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(Fo.span);return Fo.encode({instruction:1,amount:Number(e)},i),new vo({keys:n,programId:r,data:i})}function mi({programId:r},e){let t=[{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:Ci,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(fr.span);return fr.encode({instruction:2},n),new vo({keys:t,programId:r,data:n})}function Do(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(fr.span);fr.encode({instruction:2},s);let a=[{pubkey:Wo,isWritable:!1,isSigner:!1},{pubkey:Ad,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 vo({programId:e.programId,keys:a,data:s})}import Pu from"bn.js";var Pd={[En.IDO_PROGRAM_ID_V1.toString()]:1,[En.IDO_PROGRAM_ID_V2.toString()]:2,[En.IDO_PROGRAM_ID_V3.toString()]:3,[En.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Ie{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=Pd[t.programId];a||this.logAndCreateError("invalid version",a);let u=fe(t),[c,l]=[!new Pu(e.coin).isZero(),!new Pu(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?[mi({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[mi({programId:new yr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[mi({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new yr(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 yr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Do(D(N({},g),{side:"base"}))]:[],...l?[Do(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as kd}from"@solana/web3.js";import{MintLayout as hd,TOKEN_2022_PROGRAM_ID as qo,TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";var br=class extends Ie{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(ht.address,ht),this._mintGroup.official.add(ht.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")?qo.toBase58():Uo.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")?qo.toBase58():Uo.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")?qo.toBase58():Uo.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 ht;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 kd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=hd.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 di=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 yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new Zn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Dn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new sr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new br({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new mr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new ar({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new lr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Td({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Ur({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new di(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(Gr);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ws);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(Gr),new Error(Gr)}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 zo,TOKEN_2022_PROGRAM_ID as Go}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as Yo,SystemProgram as hu}from"@solana/web3.js";import Xo from"bn.js";function uB(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=fe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=fe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new Yo({keys:d,programId:r,data:y})}function cB(r,e,t,n,i,o,s,a,u,c){let l=O([_("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=fe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=fe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Yo({keys:m,programId:r,data:p})}function ku(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=fe(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Go)||a.mintB.programId.equals(Go)?[{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ut(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=fe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function Id(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=O([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1}];f.push(...ku(a,c,o,t,n,d[0])),f.push(...ku(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new Yo({keys:f,programId:r,data:b})}async function lB({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=fe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await xe.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 Xo(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ti({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 Xo(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:[Id(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 Xo(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var Ho=new Iu(1e6);function xd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var pi=class{static tradingFee(e,t){return xd(e,t,Ho)}static protocolFee(e,t){return Tu(e,t,Ho)}static fundFee(e,t){return Tu(e,t,Ho)}};import gr from"bn.js";function fi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Bd(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=fi(r,e);if(n.gt(hn)){t=t.add(new gr(1));let i=r.div(t);n=fi(r,t),n.gt(hn)&&(i=i.add(new gr(1)))}return[t,e]}var hn=new gr(0),yi=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Bd(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 fi(e.mul(n),t).gt(hn)&&s.gt(hn)&&(s=s.add(new gr(1))),fi(e.mul(i),t).gt(hn)&&a.gt(hn)&&(a=a.add(new gr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=pi.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=yi.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[vi.toBase58()]:3},Ku={3:vi};var Sd=O([pe(5),pe(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"),pe(7)]),Cu={3:Sd};import{PublicKey as Ru}from"@solana/web3.js";var bi=ae("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||bi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||bi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||bi.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return bi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var iS=r=>r;export{Rm as AMM_CONFIG_SEED,_k as AmmConfigLayout,Wa as BIT_PRECISION,ar as Clmm,xe as ClmmInstrument,yi as ConstantProductCurve,mu as CpmmConfigInfoLayout,pi as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,ym as DataElement,Co as EXTENSION_TICKARRAY_BITMAP_SIZE,ca as FARM_LOCK_MINT,la as FARM_LOCK_VAULT,wt as FARM_PROGRAM_TO_VERSION,da as FARM_VERSION_TO_LEDGER_LAYOUT,ma as FARM_VERSION_TO_STATE_LAYOUT,oi as FEE_RATE_DENOMINATOR,Ho as FEE_RATE_DENOMINATOR_VALUE,Fm as FETCH_TICKARRAY_COUNT,Em as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,Xm as LIQUIDITY_VERSION_TO_SERUM_VERSION,ZA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Da as LOG_B_2_X32,qa as LOG_B_P_ERR_MARGIN_LOWER_X64,Ua as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,Eo as MARKET_STATE_LAYOUT_V2,Sd as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,He as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,wn as MODEL_DATA_PUBKEY,Lu as Market,$ as MathUtil,Ko as MaxU64,va as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,_m as OPERATION_SEED,Lo as ObservationInfoLayout,Dm as ObservationLayout,Ya as OperationLayout,Nm as POOL_REWARD_VAULT_SEED,Lm as POOL_SEED,Vm as POOL_TICK_ARRAY_BITMAP_SEED,Om as POOL_VAULT_SEED,Va as POSITION_SEED,si as PoolInfoLayout,Ue as PoolUtils,ai as PositionInfoLayout,Um as PositionRewardInfoLayout,ir as PositionUtils,Vk as ProtocolPositionLayout,ii as Q128,it as Q64,di as Raydium,qm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,ht as SOL_INFO,BA as SPL_MINT_LAYOUT,Z as SqrtPriceMath,gn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Mm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,IP as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,rr as TickArrayBitmapExtensionUtils,nr as TickArrayLayout,Gm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,tr as U64Resolution,BP as U64_IGNORE_RANGE,aa as Voter,Ql as VoterDepositEntry,Hl as VoterLockup,sa as VoterRegistrar,Yl as VoterVotingMintConfig,de as ZERO,Po as addLiquidityLayout,Ji as associatedLedgerAccountLayout,po as calFarmRewardAmount,xd as ceilDiv,fr as claimLayout,Nt as closeAccountInstruction,ya as createAssociatedLedgerAccountInstruction,Ta as createPoolFeeLayout,La as createPoolV4InstructionV2,jA as createPoolV4Layout,xt as createWSolAccountInstructions,Ye as dwLayout,ro as farmAddRewardLayout,mw as farmLedgerLayoutV3_1,Un as farmLedgerLayoutV3_2,dw as farmLedgerLayoutV5_1,ia as farmLedgerLayoutV5_2,oa as farmLedgerLayoutV6_1,fa as farmRewardInfoToConfig,to as farmRewardLayout,no as farmRewardRestartLayout,zl as farmRewardTimeInfoLayout,na as farmStateV3Layout,ra as farmStateV5Layout,qn as farmStateV6Layout,Ew as fetchMultipleFarmInfoAndUpdate,dh as fetchMultipleInfo,go as fixedSwapInLayout,wo as fixedSwapOutLayout,Tu as floorDiv,xm as formatLayout,De as generatePubKey,pa as getAssociatedAuthority,Mo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Xn as getAssociatedLedgerPoolAccount,Qm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,id as getCpmmPdaAmmConfigId,od as getCpmmPdaPoolId,iu as getCreatePoolKeys,fo as getDepositEntryIndex,Sa as getDxByDyBaseIn,Ba as getDyByDxBaseIn,Jr as getFarmLedgerLayout,jl as getFarmStateLayout,jm as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,mk as getLiquidityFromAmounts,kP as getPdaAmmConfigId,ut as getPdaExBitmapAccount,sd as getPdaLpMint,ri as getPdaMetadataKey,ci as getPdaObservationId,er as getPdaOperationAccount,at as getPdaPersonalPositionAddress,rd as getPdaPoolAuthority,Ea as getPdaPoolId,Fa as getPdaPoolRewardVaulId,So as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,ge as getPdaTickArrayAddress,ru as getPdaVault,so as getRegistrarAddress,Ka as getStablePrice,mo as getTokenOwnerRecordAddress,co as getVoterAddress,lo as getVoterWeightRecordAddress,uo as getVotingMintAuthority,ao as getVotingTokenMint,om as governanceCreateTokenOwnerRecord,bP as i16ToBytes,ni as i32ToBytes,Ao as initPoolLayout,Zi as initTokenAccountInstruction,gd as initializeMarket,io as isValidFarmVersion,Jn as isZero,Fw as judgeFarmType,xo as leadingZeros,_a as leastSignificantBit,dm as liquidityStateV4Layout,pm as liquidityStateV5Layout,ti as makeAMMSwapInstruction,Ra as makeAddLiquidityInstruction,bo as makeAddNewRewardInstruction,mi as makeClaimInstruction,Do as makeClaimInstructionV4,su as makeCreateCpmmPoolInInstruction,ba as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ga as makeCreatorWithdrawFarmRewardInstruction,au as makeDepositCpmmInInstruction,wa as makeDepositInstructionV3,Aa as makeDepositInstructionV5,Pa as makeDepositInstructionV6,tA as makeDepositTokenInstruction,rA as makeDepositWithdrawInstruction,fP as makeInitPoolInstructionV4,nx as makePurchaseInstruction,yo as makeRestartRewardInstruction,Oa as makeSimulatePoolInfoInstruction,cu as makeSwapCpmmBaseInInInstruction,lu as makeSwapCpmmBaseOutInInstruction,Km as makeSwapFixedInInstruction,Cm as makeSwapFixedOutInstruction,lB as makeSwapInstruction,Wn as makeTransferInstruction,uu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Qn as makeWithdrawInstructionV5,Hn as makeWithdrawInstructionV6,nA as makeWithdrawTokenInstruction,xP as mockCreatePoolInfo,Ga as mockV3CreatePoolInfo,bm as modelDataInfoLayout,Ma as mostSignificantBit,ta as parseTokenAccountResp,MA as parseTokenInfo,zt as poolTypeV6,Fo as purchaseLayout,Ul as realFarmStateV3Layout,Gl as realFarmStateV5Layout,Xl as realFarmV6Layout,Io as removeLiquidityInstruction,ko as removeLiquidityLayout,uB as route1Instruction,cB as route2Instruction,Id as routeInstruction,pP as simulatePoolInfoInstruction,EA as solToWSolToken,qt as splAccountLayout,ha as toToken,VA as toTokenAmount,_A as toTokenInfo,Bo as trailingZeros,Na as u16ToBytes,gP as u32ToBytes,iS as unionArr,Zl as updateFarmPoolInfo,oo as validateFarmRewards,am as voterStakeRegistryCreateDepositEntry,sm as voterStakeRegistryCreateVoter,nm as voterStakeRegistryDeposit,rm as voterStakeRegistryUpdateVoterWeightRecord,im as voterStakeRegistryWithdraw,FA as wSolToSolToken,eo as withdrawRewardLayout};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=index.mjs.map