@raydium-io/raydium-sdk-v2 0.1.29-alpha → 0.1.30-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 (94) hide show
  1. package/lib/api/api.d.ts +1 -1
  2. package/lib/api/index.d.ts +1 -1
  3. package/lib/api/type.d.ts +1 -1
  4. package/lib/common/accountInfo.d.ts +1 -1
  5. package/lib/common/bignumber.d.ts +1 -1
  6. package/lib/common/fractionUtil.d.ts +1 -1
  7. package/lib/common/index.d.ts +1 -1
  8. package/lib/common/transfer.d.ts +1 -1
  9. package/lib/common/txTool/txTool.d.ts +1 -1
  10. package/lib/common/txTool/txUtils.d.ts +1 -1
  11. package/lib/common/utility.d.ts +1 -1
  12. package/lib/index.d.ts +3 -3
  13. package/lib/index.js +1 -1
  14. package/lib/index.js.map +1 -1
  15. package/lib/index.mjs +1 -1
  16. package/lib/index.mjs.map +1 -1
  17. package/lib/module/amount.d.ts +1 -1
  18. package/lib/module/fraction.d.ts +1 -1
  19. package/lib/module/index.d.ts +1 -1
  20. package/lib/module/percent.d.ts +1 -1
  21. package/lib/module/price.d.ts +1 -1
  22. package/lib/raydium/account/account.d.ts +3 -3
  23. package/lib/raydium/account/index.d.ts +1 -1
  24. package/lib/raydium/account/instruction.d.ts +1 -1
  25. package/lib/raydium/account/types.d.ts +1 -1
  26. package/lib/raydium/account/util.d.ts +1 -1
  27. package/lib/raydium/clmm/clmm.d.ts +3 -3
  28. package/lib/raydium/clmm/index.d.ts +3 -3
  29. package/lib/raydium/clmm/instrument.d.ts +2 -2
  30. package/lib/raydium/clmm/layout.d.ts +1 -1
  31. package/lib/raydium/clmm/type.d.ts +2 -2
  32. package/lib/raydium/clmm/utils/math.d.ts +2 -2
  33. package/lib/raydium/clmm/utils/pool.d.ts +2 -2
  34. package/lib/raydium/clmm/utils/position.d.ts +2 -2
  35. package/lib/raydium/clmm/utils/tick.d.ts +2 -2
  36. package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
  37. package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
  38. package/lib/raydium/cpmm/cpmm.d.ts +3 -3
  39. package/lib/raydium/cpmm/index.d.ts +1 -1
  40. package/lib/raydium/cpmm/layout.d.ts +1 -1
  41. package/lib/raydium/cpmm/type.d.ts +1 -1
  42. package/lib/raydium/farm/config.d.ts +1 -1
  43. package/lib/raydium/farm/farm.d.ts +3 -3
  44. package/lib/raydium/farm/index.d.ts +1 -1
  45. package/lib/raydium/farm/instruction.d.ts +1 -1
  46. package/lib/raydium/farm/layout.d.ts +1 -1
  47. package/lib/raydium/farm/type.d.ts +1 -1
  48. package/lib/raydium/farm/util.d.ts +1 -1
  49. package/lib/raydium/ido/ido.d.ts +3 -3
  50. package/lib/raydium/ido/index.d.ts +3 -3
  51. package/lib/raydium/ido/instruction.d.ts +1 -1
  52. package/lib/raydium/ido/type.d.ts +1 -1
  53. package/lib/raydium/index.d.ts +3 -3
  54. package/lib/raydium/index.js +1 -1
  55. package/lib/raydium/index.js.map +1 -1
  56. package/lib/raydium/index.mjs +1 -1
  57. package/lib/raydium/index.mjs.map +1 -1
  58. package/lib/raydium/liquidity/index.d.ts +1 -1
  59. package/lib/raydium/liquidity/instruction.d.ts +1 -1
  60. package/lib/raydium/liquidity/layout.d.ts +6 -6
  61. package/lib/raydium/liquidity/liquidity.d.ts +3 -3
  62. package/lib/raydium/liquidity/liquidity.js +1 -1
  63. package/lib/raydium/liquidity/liquidity.js.map +1 -1
  64. package/lib/raydium/liquidity/liquidity.mjs +1 -1
  65. package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
  66. package/lib/raydium/liquidity/type.d.ts +6 -2
  67. package/lib/raydium/liquidity/type.js.map +1 -1
  68. package/lib/raydium/liquidity/utils.d.ts +1 -1
  69. package/lib/raydium/marketV2/createMarket.d.ts +3 -3
  70. package/lib/raydium/marketV2/index.d.ts +3 -3
  71. package/lib/raydium/moduleBase.d.ts +3 -3
  72. package/lib/raydium/raydium.d.ts +3 -3
  73. package/lib/raydium/raydium.js +1 -1
  74. package/lib/raydium/raydium.js.map +1 -1
  75. package/lib/raydium/raydium.mjs +1 -1
  76. package/lib/raydium/raydium.mjs.map +1 -1
  77. package/lib/raydium/token/constant.d.ts +1 -1
  78. package/lib/raydium/token/index.d.ts +1 -1
  79. package/lib/raydium/token/token.d.ts +3 -3
  80. package/lib/raydium/token/type.d.ts +1 -1
  81. package/lib/raydium/token/utils.d.ts +1 -1
  82. package/lib/raydium/tradeV2/index.d.ts +2 -2
  83. package/lib/raydium/tradeV2/instrument.d.ts +2 -2
  84. package/lib/raydium/tradeV2/trade.d.ts +3 -3
  85. package/lib/raydium/tradeV2/type.d.ts +2 -2
  86. package/lib/raydium/type.d.ts +1 -1
  87. package/lib/raydium/utils1216/index.d.ts +3 -3
  88. package/lib/raydium/utils1216/utils1216.d.ts +3 -3
  89. package/lib/{raydium-1e9cad89.d.ts → raydium-8871c9e8.d.ts} +4 -4
  90. package/lib/{type-b95eb35d.d.ts → type-0de39dab.d.ts} +1 -1
  91. package/package.json +1 -1
  92. package/src/raydium/liquidity/liquidity.ts +76 -30
  93. package/src/raydium/liquidity/type.ts +5 -1
  94. package/lib/{type-60acc172.d.ts → type-2596119f.d.ts} +5 -5
@@ -1,3 +1,3 @@
1
- var Cu=Object.defineProperty,Ru=Object.defineProperties;var Lu=Object.getOwnPropertyDescriptors;var Ir=Object.getOwnPropertySymbols;var ns=Object.prototype.hasOwnProperty,rs=Object.prototype.propertyIsEnumerable;var ts=(o,e,t)=>e in o?Cu(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,C=(o,e)=>{for(var t in e||(e={}))ns.call(e,t)&&ts(o,t,e[t]);if(Ir)for(var t of Ir(e))rs.call(e,t)&&ts(o,t,e[t]);return o},E=(o,e)=>Ru(o,Lu(e));var ke=(o,e)=>{var t={};for(var n in o)ns.call(o,n)&&e.indexOf(n)<0&&(t[n]=o[n]);if(o!=null&&Ir)for(var n of Ir(o))e.indexOf(n)<0&&rs.call(o,n)&&(t[n]=o[n]);return t};import{merge as Td}from"lodash";import Gs from"axios";import{get as os,set as Ou}from"lodash";import ss from"dayjs";import Nu from"dayjs/plugin/utc";ss.extend(Nu);var Mo=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 ss().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}},is={},Mu={};function se(o){let e=os(is,o);if(!e){let t=os(Mu,o);e=new Mo({name:o,logLevel:t}),Ou(is,o,e)}return e}import{PublicKey as Gc}from"@solana/web3.js";import Xc from"bn.js";import Wc from"big.js";import Er from"bn.js";import et from"bn.js";var wn=9e15,Xt=1e9,_o="0123456789abcdef",xr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Sr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vo={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-wn,maxE:wn,crypto:!1},ls,Mt,ne=!0,Cr="[DecimalError] ",Gt=Cr+"Invalid argument: ",ms=Cr+"Precision limit exceeded",ds=Cr+"crypto unavailable",ps="[object Decimal]",qe=Math.floor,Re=Math.pow,_u=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,vu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,fs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,yt=1e7,ee=7,Eu=9007199254740991,Fu=xr.length-1,vo=Sr.length-1,M={toStringTag:ps};M.absoluteValue=M.abs=function(){var o=new this.constructor(this);return o.s<0&&(o.s=1),j(o)};M.ceil=function(){return j(new this.constructor(this),this.e+1,2)};M.clampedTo=M.clamp=function(o,e){var t,n=this,r=n.constructor;if(o=new r(o),e=new r(e),!o.s||!e.s)return new r(NaN);if(o.gt(e))throw Error(Gt+e);return t=n.cmp(o),t<0?o:n.cmp(e)>0?e:new r(n)};M.comparedTo=M.cmp=function(o){var e,t,n,r,i=this,s=i.d,a=(o=new i.constructor(o)).d,u=i.s,c=o.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(i.e!==o.e)return i.e>o.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};M.cosine=M.cos=function(){var o,e,t=this,n=t.constructor;return t.d?t.d[0]?(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+ee,n.rounding=1,t=Du(n,As(n,t)),n.precision=o,n.rounding=e,j(Mt==2||Mt==3?t.neg():t,o,e,!0)):new n(1):new n(NaN)};M.cubeRoot=M.cbrt=function(){var o,e,t,n,r,i,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(ne=!1,i=l.s*Re(l.s*l,1/3),!i||Math.abs(i)==1/0?(t=Ve(l.d),o=l.e,(i=(o-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=Re(t,1/3),o=qe((o+1)/3)-(o%3==(o<0?-1:2)),i==1/0?t="5e"+o:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+o),n=new m(t),n.s=l.s):n=new m(i.toString()),s=(o=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=be(c.plus(l).times(a),c.plus(u),s+2,1),Ve(a.d).slice(0,s)===(t=Ve(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(j(a,o+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(j(n,o+1,1),e=!n.times(n).times(n).eq(l));break}return ne=!0,j(n,o,m.rounding,e)};M.decimalPlaces=M.dp=function(){var o,e=this.d,t=NaN;if(e){if(o=e.length-1,t=(o-qe(this.e/ee))*ee,o=e[o],o)for(;o%10==0;o/=10)t--;t<0&&(t=0)}return t};M.dividedBy=M.div=function(o){return be(this,new this.constructor(o))};M.dividedToIntegerBy=M.divToInt=function(o){var e=this,t=e.constructor;return j(be(e,new t(o),0,1,1),t.precision,t.rounding)};M.equals=M.eq=function(o){return this.cmp(o)===0};M.floor=function(){return j(new this.constructor(this),this.e+1,3)};M.greaterThan=M.gt=function(o){return this.cmp(o)>0};M.greaterThanOrEqualTo=M.gte=function(o){var e=this.cmp(o);return e==1||e===0};M.hyperbolicCosine=M.cosh=function(){var o,e,t,n,r,i=this,s=i.constructor,a=new s(1);if(!i.isFinite())return new s(i.s?1/0:NaN);if(i.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(i.e,i.sd())+4,s.rounding=1,r=i.d.length,r<32?(o=Math.ceil(r/3),e=(1/Lr(4,o)).toString()):(o=16,e="2.3283064365386962890625e-10"),i=An(s,1,i.times(e),new s(1),!0);for(var u,c=o,l=new s(8);c--;)u=i.times(i),i=a.minus(u.times(l.minus(u.times(l))));return j(i,s.precision=t,s.rounding=n,!0)};M.hyperbolicSine=M.sinh=function(){var o,e,t,n,r=this,i=r.constructor;if(!r.isFinite()||r.isZero())return new i(r);if(e=i.precision,t=i.rounding,i.precision=e+Math.max(r.e,r.sd())+4,i.rounding=1,n=r.d.length,n<3)r=An(i,2,r,r,!0);else{o=1.4*Math.sqrt(n),o=o>16?16:o|0,r=r.times(1/Lr(5,o)),r=An(i,2,r,r,!0);for(var s,a=new i(5),u=new i(16),c=new i(20);o--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return i.precision=e,i.rounding=t,j(r,e,t,!0)};M.hyperbolicTangent=M.tanh=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+7,n.rounding=1,be(t.sinh(),t.cosh(),n.precision=o,n.rounding=e)):new n(t.s)};M.inverseCosine=M.acos=function(){var o,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n!==-1?n===0?e.isNeg()?ft(t,r,i):new t(0):new t(NaN):e.isZero()?ft(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),o=ft(t,r+4,i).times(.5),t.precision=r,t.rounding=i,o.minus(e))};M.inverseHyperbolicCosine=M.acosh=function(){var o,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(o=n.precision,e=n.rounding,n.precision=o+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,ne=!1,t=t.times(t).minus(1).sqrt().plus(t),ne=!0,n.precision=o,n.rounding=e,t.ln()):new n(t)};M.inverseHyperbolicSine=M.asinh=function(){var o,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,ne=!1,t=t.times(t).plus(1).sqrt().plus(t),ne=!0,n.precision=o,n.rounding=e,t.ln())};M.inverseHyperbolicTangent=M.atanh=function(){var o,e,t,n,r=this,i=r.constructor;return r.isFinite()?r.e>=0?new i(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(o=i.precision,e=i.rounding,n=r.sd(),Math.max(n,o)<2*-r.e-1?j(new i(r),o,e,!0):(i.precision=t=n-r.e,r=be(r.plus(1),new i(1).minus(r),t+o,1),i.precision=o+4,i.rounding=1,r=r.ln(),i.precision=o,i.rounding=e,r.times(.5))):new i(NaN)};M.inverseSine=M.asin=function(){var o,e,t,n,r=this,i=r.constructor;return r.isZero()?new i(r):(e=r.abs().cmp(1),t=i.precision,n=i.rounding,e!==-1?e===0?(o=ft(i,t+4,n).times(.5),o.s=r.s,o):new i(NaN):(i.precision=t+6,i.rounding=1,r=r.div(new i(1).minus(r.times(r)).sqrt().plus(1)).atan(),i.precision=t,i.rounding=n,r.times(2)))};M.inverseTangent=M.atan=function(){var o,e,t,n,r,i,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=vo)return s=ft(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=vo)return s=ft(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/ee+2|0),o=t;o;--o)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(ne=!1,e=Math.ceil(a/ee),n=1,u=c.times(c),s=new l(c),r=c;o!==-1;)if(r=r.times(u),i=s.minus(r.div(n+=2)),r=r.times(u),s=i.plus(r.div(n+=2)),s.d[e]!==void 0)for(o=e;s.d[o]===i.d[o]&&o--;);return t&&(s=s.times(2<<t-1)),ne=!0,j(s,l.precision=m,l.rounding=d,!0)};M.isFinite=function(){return!!this.d};M.isInteger=M.isInt=function(){return!!this.d&&qe(this.e/ee)>this.d.length-2};M.isNaN=function(){return!this.s};M.isNegative=M.isNeg=function(){return this.s<0};M.isPositive=M.isPos=function(){return this.s>0};M.isZero=function(){return!!this.d&&this.d[0]===0};M.lessThan=M.lt=function(o){return this.cmp(o)<0};M.lessThanOrEqualTo=M.lte=function(o){return this.cmp(o)<1};M.logarithm=M.log=function(o){var e,t,n,r,i,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(o==null)o=new l(10),e=!0;else{if(o=new l(o),t=o.d,o.s<0||!t||!t[0]||o.eq(1))return new l(NaN);e=o.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)i=!0;else{for(r=t[0];r%10===0;)r/=10;i=r!==1}if(ne=!1,a=m+p,s=Ut(c,a),n=e?Kr(l,a+10):Ut(o,a),u=be(s,n,a,1),Nn(u.d,r=m,d))do if(a+=10,s=Ut(c,a),n=e?Kr(l,a+10):Ut(o,a),u=be(s,n,a,1),!i){+Ve(u.d).slice(r+1,r+15)+1==1e14&&(u=j(u,m+1,0));break}while(Nn(u.d,r+=10,d));return ne=!0,j(u,m,d)};M.minus=M.sub=function(o){var e,t,n,r,i,s,a,u,c,l,m,d,p=this,y=p.constructor;if(o=new y(o),!p.d||!o.d)return!p.s||!o.s?o=new y(NaN):p.d?o.s=-o.s:o=new y(o.d||p.s!==o.s?p:NaN),o;if(p.s!=o.s)return o.s=-o.s,p.plus(o);if(c=p.d,d=o.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])o.s=-o.s;else if(c[0])o=new y(p);else return new y(u===3?-0:0);return ne?j(o,a,u):o}if(t=qe(o.e/ee),l=qe(p.e/ee),c=c.slice(),i=l-t,i){for(m=i<0,m?(e=c,i=-i,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/ee),s)+2,i>n&&(i=n,e.length=1),e.reverse(),n=i;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}i=0}for(m&&(e=c,c=d,d=e,o.s=-o.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>i;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=yt-1;--c[r],c[n]+=yt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(o.d=c,o.e=Rr(c,t),ne?j(o,a,u):o):new y(u===3?-0:0)};M.modulo=M.mod=function(o){var e,t=this,n=t.constructor;return o=new n(o),!t.d||!o.s||o.d&&!o.d[0]?new n(NaN):!o.d||t.d&&!t.d[0]?j(new n(t),n.precision,n.rounding):(ne=!1,n.modulo==9?(e=be(t,o.abs(),0,3,1),e.s*=o.s):e=be(t,o,0,n.modulo,1),e=e.times(o),ne=!0,t.minus(e))};M.naturalExponential=M.exp=function(){return Eo(this)};M.naturalLogarithm=M.ln=function(){return Ut(this)};M.negated=M.neg=function(){var o=new this.constructor(this);return o.s=-o.s,j(o)};M.plus=M.add=function(o){var e,t,n,r,i,s,a,u,c,l,m=this,d=m.constructor;if(o=new d(o),!m.d||!o.d)return!m.s||!o.s?o=new d(NaN):m.d||(o=new d(o.d||m.s===o.s?m:NaN)),o;if(m.s!=o.s)return o.s=-o.s,m.minus(o);if(c=m.d,l=o.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(o=new d(m)),ne?j(o,a,u):o;if(i=qe(m.e/ee),n=qe(o.e/ee),c=c.slice(),r=i-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=i,s=c.length),i=Math.ceil(a/ee),s=i>s?i+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/yt|0,c[r]%=yt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return o.d=c,o.e=Rr(c,n),ne?j(o,a,u):o};M.precision=M.sd=function(o){var e,t=this;if(o!==void 0&&o!==!!o&&o!==1&&o!==0)throw Error(Gt+o);return t.d?(e=ys(t.d),o&&t.e+1>e&&(e=t.e+1)):e=NaN,e};M.round=function(){var o=this,e=o.constructor;return j(new e(o),o.e+1,e.rounding)};M.sine=M.sin=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+ee,n.rounding=1,t=qu(n,As(n,t)),n.precision=o,n.rounding=e,j(Mt>2?t.neg():t,o,e,!0)):new n(NaN)};M.squareRoot=M.sqrt=function(){var o,e,t,n,r,i,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(ne=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Ve(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=qe((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(i=n,n=i.plus(be(s,i,t+2,1)).times(.5),Ve(i.d).slice(0,t)===(e=Ve(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(j(i,u+1,0),i.times(i).eq(s))){n=i;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(j(n,u+1,1),o=!n.times(n).eq(s));break}return ne=!0,j(n,u,l.rounding,o)};M.tangent=M.tan=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+10,n.rounding=1,t=t.sin(),t.s=1,t=be(t,new n(1).minus(t.times(t)).sqrt(),o+10,0),n.precision=o,n.rounding=e,j(Mt==2||Mt==4?t.neg():t,o,e,!0)):new n(NaN)};M.times=M.mul=function(o){var e,t,n,r,i,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(o=new m(o)).d;if(o.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!o.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?o.s/0:o.s*0);for(t=qe(l.e/ee)+qe(o.e/ee),u=d.length,c=p.length,u<c&&(i=d,d=p,p=i,s=u,u=c,c=s),i=[],s=u+c,n=s;n--;)i.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=i[r]+p[n]*d[r-n-1]+e,i[r--]=a%yt|0,e=a/yt|0;i[r]=(i[r]+e)%yt|0}for(;!i[--s];)i.pop();return e?++t:i.shift(),o.d=i,o.e=Rr(i,t),ne?j(o,m.precision,m.rounding):o};M.toBinary=function(o,e){return Do(this,2,o,e)};M.toDecimalPlaces=M.toDP=function(o,e){var t=this,n=t.constructor;return t=new n(t),o===void 0?t:($e(o,0,Xt),e===void 0?e=n.rounding:$e(e,0,8),j(t,o+t.e+1,e))};M.toExponential=function(o,e){var t,n=this,r=n.constructor;return o===void 0?t=Bt(n,!0):($e(o,0,Xt),e===void 0?e=r.rounding:$e(e,0,8),n=j(new r(n),o+1,e),t=Bt(n,!0,o+1)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toFixed=function(o,e){var t,n,r=this,i=r.constructor;return o===void 0?t=Bt(r):($e(o,0,Xt),e===void 0?e=i.rounding:$e(e,0,8),n=j(new i(r),o+r.e+1,e),t=Bt(n,!1,o+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};M.toFraction=function(o){var e,t,n,r,i,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),i=e.e=ys(y)-p.e-1,s=i%ee,e.d[0]=Re(10,s<0?ee+s:s),o==null)o=i>0?e:c;else{if(a=new f(o),!a.isInt()||a.lt(c))throw Error(Gt+a);o=a.gt(e)?i>0?e:c:a}for(ne=!1,a=new f(Ve(y)),l=f.precision,f.precision=i=y.length*ee*2;m=be(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(o)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=be(o.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=be(c,n,i,1).minus(p).abs().cmp(be(u,t,i,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,ne=!0,d};M.toHexadecimal=M.toHex=function(o,e){return Do(this,16,o,e)};M.toNearest=function(o,e){var t=this,n=t.constructor;if(t=new n(t),o==null){if(!t.d)return t;o=new n(1),e=n.rounding}else{if(o=new n(o),e===void 0?e=n.rounding:$e(e,0,8),!t.d)return o.s?t:o;if(!o.d)return o.s&&(o.s=t.s),o}return o.d[0]?(ne=!1,t=be(t,o,0,e,1).times(o),ne=!0,j(t)):(o.s=t.s,t=o),t};M.toNumber=function(){return+this};M.toOctal=function(o,e){return Do(this,8,o,e)};M.toPower=M.pow=function(o){var e,t,n,r,i,s,a=this,u=a.constructor,c=+(o=new u(o));if(!a.d||!o.d||!a.d[0]||!o.d[0])return new u(Re(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,i=u.rounding,o.eq(1))return j(a,n,i);if(e=qe(o.e/ee),e>=o.d.length-1&&(t=c<0?-c:c)<=Eu)return r=bs(u,a,t,n),o.s<0?new u(1).div(r):j(r,n,i);if(s=a.s,s<0){if(e<o.d.length-1)return new u(NaN);if((o.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Re(+a,c),e=t==0||!isFinite(t)?qe(c*(Math.log("0."+Ve(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(ne=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=Eo(o.times(Ut(a,n+t)),n),r.d&&(r=j(r,n+5,1),Nn(r.d,n,i)&&(e=n+10,r=j(Eo(o.times(Ut(a,e+t)),e),e+5,1),+Ve(r.d).slice(n+1,n+15)+1==1e14&&(r=j(r,n+1,0)))),r.s=s,ne=!0,u.rounding=i,j(r,n,i))};M.toPrecision=function(o,e){var t,n=this,r=n.constructor;return o===void 0?t=Bt(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):($e(o,1,Xt),e===void 0?e=r.rounding:$e(e,0,8),n=j(new r(n),o,e),t=Bt(n,o<=n.e||n.e<=r.toExpNeg,o)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toSignificantDigits=M.toSD=function(o,e){var t=this,n=t.constructor;return o===void 0?(o=n.precision,e=n.rounding):($e(o,1,Xt),e===void 0?e=n.rounding:$e(e,0,8)),j(new n(t),o,e)};M.toString=function(){var o=this,e=o.constructor,t=Bt(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()&&!o.isZero()?"-"+t:t};M.truncated=M.trunc=function(){return j(new this.constructor(this),this.e+1,1)};M.valueOf=M.toJSON=function(){var o=this,e=o.constructor,t=Bt(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()?"-"+t:t};function Ve(o){var e,t,n,r=o.length-1,i="",s=o[0];if(r>0){for(i+=s,e=1;e<r;e++)n=o[e]+"",t=ee-n.length,t&&(i+=qt(t)),i+=n;s=o[e],n=s+"",t=ee-n.length,t&&(i+=qt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function $e(o,e,t){if(o!==~~o||o<e||o>t)throw Error(Gt+o)}function Nn(o,e,t,n){var r,i,s,a;for(i=o[0];i>=10;i/=10)--e;return--e<0?(e+=ee,r=0):(r=Math.ceil((e+1)/ee),e%=ee),i=Re(10,ee-e),a=o[r]%i|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==i||t>3&&a+1==i/2)&&(o[r+1]/i/100|0)==Re(10,e-2)-1||(a==i/2||a==0)&&(o[r+1]/i/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==i||!n&&t>3&&a+1==i/2)&&(o[r+1]/i/1e3|0)==Re(10,e-3)-1,s}function Br(o,e,t){for(var n,r=[0],i,s=0,a=o.length;s<a;){for(i=r.length;i--;)r[i]*=e;for(r[0]+=_o.indexOf(o.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Du(o,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/Lr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),o.precision+=t,e=An(o,1,e.times(r),new o(1));for(var i=t;i--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return o.precision-=t,e}var be=function(){function o(n,r,i){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function e(n,r,i,s){var a,u;if(i!=s)u=i>s?1:-1;else for(a=u=0;a<i;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,i,s){for(var a=0;i--;)n[i]-=a,a=n[i]<r[i]?1:0,n[i]=a*s+n[i]-r[i];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,i,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,k,B,T,S,x,R,I,L,U,F=n.constructor,J=n.s==r.s?1:-1,G=n.d,W=r.d;if(!G||!G[0]||!W||!W[0])return new F(!n.s||!r.s||(G?W&&G[0]==W[0]:!W)?NaN:G&&G[0]==0||!W?J*0:J/0);for(u?(p=1,l=n.e-r.e):(u=yt,p=ee,l=qe(n.e/p)-qe(r.e/p)),L=W.length,R=G.length,g=new F(J),h=g.d=[],m=0;W[m]==(G[m]||0);m++);if(W[m]>(G[m]||0)&&l--,i==null?(T=i=F.precision,s=F.rounding):a?T=i+(n.e-r.e)+1:T=i,T<0)h.push(1),y=!0;else{if(T=T/p+2|0,m=0,L==1){for(d=0,W=W[0],T++;(m<R||d)&&T--;m++)S=d*u+(G[m]||0),h[m]=S/W|0,d=S%W|0;y=d||m<R}else{for(d=u/(W[0]+1)|0,d>1&&(W=o(W,d,u),G=o(G,d,u),L=W.length,R=G.length),x=L,A=G.slice(0,L),k=A.length;k<L;)A[k++]=0;U=W.slice(),U.unshift(0),I=W[0],W[1]>=u/2&&++I;do d=0,c=e(W,A,L,k),c<0?(B=A[0],L!=k&&(B=B*u+(A[1]||0)),d=B/I|0,d>1?(d>=u&&(d=u-1),f=o(W,d,u),b=f.length,k=A.length,c=e(f,A,b,k),c==1&&(d--,t(f,L<b?U:W,b,u))):(d==0&&(c=d=1),f=W.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(W,A,L,k),c<1&&(d++,t(A,L<k?U:W,k,u))),k=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[k++]=G[x]||0:(A=[G[x]],k=1);while((x++<R||A[0]!==void 0)&&T--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,ls=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,j(g,a?i+g.e+1:i,s,y)}return g}}();function j(o,e,t,n){var r,i,s,a,u,c,l,m,d,p=o.constructor;e:if(e!=null){if(m=o.d,!m)return o;for(r=1,a=m[0];a>=10;a/=10)r++;if(i=e-r,i<0)i+=ee,s=e,l=m[d=0],u=l/Re(10,r-s-1)%10|0;else if(d=Math.ceil((i+1)/ee),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,i%=ee,s=i-ee+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;i%=ee,s=i-ee+r,u=s<0?0:l/Re(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Re(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(o.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(i>0?s>0?l/Re(10,r-s):0:m[d-1])%10&1||t==(o.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=o.e+1,m[0]=Re(10,(ee-e%ee)%ee),o.e=-e||0):m[0]=o.e=0,o;if(i==0?(m.length=d,a=1,d--):(m.length=d+1,a=Re(10,ee-i),m[d]=s>0?(l/Re(10,r-s)%Re(10,s)|0)*a:0),c)for(;;)if(d==0){for(i=1,s=m[0];s>=10;s/=10)i++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(o.e++,m[0]==yt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=yt)break;m[d--]=0,a=1}for(i=m.length;m[--i]===0;)m.pop()}return ne&&(o.e>p.maxE?(o.d=null,o.e=NaN):o.e<p.minE&&(o.e=0,o.d=[0])),o}function Bt(o,e,t){if(!o.isFinite())return ws(o);var n,r=o.e,i=Ve(o.d),s=i.length;return e?(t&&(n=t-s)>0?i=i.charAt(0)+"."+i.slice(1)+qt(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(o.e<0?"e":"e+")+o.e):r<0?(i="0."+qt(-r-1)+i,t&&(n=t-s)>0&&(i+=qt(n))):r>=s?(i+=qt(r+1-s),t&&(n=t-r-1)>0&&(i=i+"."+qt(n))):((n=r+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(i+="."),i+=qt(n))),i}function Rr(o,e){var t=o[0];for(e*=ee;t>=10;t/=10)e++;return e}function Kr(o,e,t){if(e>Fu)throw ne=!0,t&&(o.precision=t),Error(ms);return j(new o(xr),e,1,!0)}function ft(o,e,t){if(e>vo)throw Error(ms);return j(new o(Sr),e,t,!0)}function ys(o){var e=o.length-1,t=e*ee+1;if(e=o[e],e){for(;e%10==0;e/=10)t--;for(e=o[0];e>=10;e/=10)t++}return t}function qt(o){for(var e="";o--;)e+="0";return e}function bs(o,e,t,n){var r,i=new o(1),s=Math.ceil(n/ee+4);for(ne=!1;;){if(t%2&&(i=i.times(e),us(i.d,s)&&(r=!0)),t=qe(t/2),t===0){t=i.d.length-1,r&&i.d[t]===0&&++i.d[t];break}e=e.times(e),us(e.d,s)}return ne=!0,i}function as(o){return o.d[o.d.length-1]&1}function gs(o,e,t){for(var n,r=new o(e[0]),i=0;++i<e.length;)if(n=new o(e[i]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function Eo(o,e){var t,n,r,i,s,a,u,c=0,l=0,m=0,d=o.constructor,p=d.rounding,y=d.precision;if(!o.d||!o.d[0]||o.e>17)return new d(o.d?o.d[0]?o.s<0?0:1/0:1:o.s?o.s<0?0:o:0/0);for(e==null?(ne=!1,u=y):u=e,a=new d(.03125);o.e>-2;)o=o.times(a),m+=5;for(n=Math.log(Re(2,m))/Math.LN10*2+5|0,u+=n,t=i=s=new d(1),d.precision=u;;){if(i=j(i.times(o),u,1),t=t.times(++l),a=s.plus(be(i,t,u,1)),Ve(a.d).slice(0,u)===Ve(s.d).slice(0,u)){for(r=m;r--;)s=j(s.times(s),u,1);if(e==null)if(c<3&&Nn(s.d,u-n,p,c))d.precision=u+=10,t=i=a=new d(1),l=0,c++;else return j(s,d.precision=y,p,ne=!0);else return d.precision=y,s}s=a}}function Ut(o,e){var t,n,r,i,s,a,u,c,l,m,d,p=1,y=10,f=o,b=f.d,g=f.constructor,h=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(ne=!1,l=A):l=e,g.precision=l+=y,t=Ve(b),n=t.charAt(0),Math.abs(i=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(o),t=Ve(f.d),n=t.charAt(0),p++;i=f.e,n>1?(f=new g("0."+t),i++):f=new g(n+"."+t.slice(1))}else return c=Kr(g,l+2,A).times(i+""),f=Ut(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?j(f,A,h,ne=!0):f;for(m=f,u=s=f=be(f.minus(1),f.plus(1),l,1),d=j(f.times(f),l,1),r=3;;){if(s=j(s.times(d),l,1),c=u.plus(be(s,new g(r),l,1)),Ve(c.d).slice(0,l)===Ve(u.d).slice(0,l))if(u=u.times(2),i!==0&&(u=u.plus(Kr(g,l+2,A).times(i+""))),u=be(u,new g(p),l,1),e==null)if(Nn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=be(m.minus(1),m.plus(1),l,1),d=j(f.times(f),l,1),r=a=1;else return j(u,g.precision=A,h,ne=!0);else return g.precision=A,u;u=c,r+=2}}function ws(o){return String(o.s*o.s/0)}function Fo(o,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,o.e=t=t-n-1,o.d=[],n=(t+1)%ee,t<0&&(n+=ee),n<r){for(n&&o.d.push(+e.slice(0,n)),r-=ee;n<r;)o.d.push(+e.slice(n,n+=ee));e=e.slice(n),n=ee-e.length}else n-=r;for(;n--;)e+="0";o.d.push(+e),ne&&(o.e>o.constructor.maxE?(o.d=null,o.e=NaN):o.e<o.constructor.minE&&(o.e=0,o.d=[0]))}else o.e=0,o.d=[0];return o}function Wu(o,e){var t,n,r,i,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),fs.test(e))return Fo(o,e)}else if(e==="Infinity"||e==="NaN")return+e||(o.s=NaN),o.e=NaN,o.d=null,o;if(Vu.test(e))t=16,e=e.toLowerCase();else if(_u.test(e))t=2;else if(vu.test(e))t=8;else throw Error(Gt+e);for(i=e.search(/p/i),i>0?(u=+e.slice(i+1),e=e.substring(2,i)):e=e.slice(2),i=e.indexOf("."),s=i>=0,n=o.constructor,s&&(e=e.replace(".",""),a=e.length,i=a-i,r=bs(n,new n(t),i,i*2)),c=Br(e,t,yt),l=c.length-1,i=l;c[i]===0;--i)c.pop();return i<0?new n(o.s*0):(o.e=Rr(c,l),o.d=c,ne=!1,s&&(o=be(o,r,a*4)),u&&(o=o.times(Math.abs(u)<54?Re(2,u):Mn.pow(2,u))),ne=!0,o)}function qu(o,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:An(o,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Lr(5,t)),e=An(o,2,e,e);for(var r,i=new o(5),s=new o(16),a=new o(20);t--;)r=e.times(e),e=e.times(i.plus(r.times(s.times(r).minus(a))));return e}function An(o,e,t,n,r){var i,s,a,u,c=1,l=o.precision,m=Math.ceil(l/ee);for(ne=!1,u=t.times(t),a=new o(n);;){if(s=be(a.times(u),new o(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=be(s.times(u),new o(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(i=m;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,c++}return ne=!0,s.d.length=m+1,s}function Lr(o,e){for(var t=o;--e;)t*=o;return t}function As(o,e){var t,n=e.s<0,r=ft(o,o.precision,1),i=r.times(.5);if(e=e.abs(),e.lte(i))return Mt=n?4:1,e;if(t=e.divToInt(r),t.isZero())Mt=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(i))return Mt=as(t)?n?2:3:n?4:1,e;Mt=as(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Do(o,e,t,n){var r,i,s,a,u,c,l,m,d,p=o.constructor,y=t!==void 0;if(y?($e(t,1,Xt),n===void 0?n=p.rounding:$e(n,0,8)):(t=p.precision,n=p.rounding),!o.isFinite())l=ws(o);else{for(l=Bt(o),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Br(Bt(d),10,r),d.e=d.d.length),m=Br(l,10,r),i=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?i--:(o=new p(o),o.d=m,o.e=i,o=be(o,d,t,n,0,r),m=o.d,i=o.e,c=ls),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(o.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(o.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++i,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=_o.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=Br(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=_o.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)l="0"+l;l="0."+l}else if(++i>u)for(i-=u;i--;)l+="0";else i<u&&(l=l.slice(0,i)+"."+l.slice(i))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return o.s<0?"-"+l:l}function us(o,e){if(o.length>e)return o.length=e,!0}function Uu(o){return new this(o).abs()}function Gu(o){return new this(o).acos()}function Xu(o){return new this(o).acosh()}function zu(o,e){return new this(o).plus(e)}function Yu(o){return new this(o).asin()}function Qu(o){return new this(o).asinh()}function ju(o){return new this(o).atan()}function Hu(o){return new this(o).atanh()}function Zu(o,e){o=new this(o),e=new this(e);var t,n=this.precision,r=this.rounding,i=n+4;return!o.s||!e.s?t=new this(NaN):!o.d&&!e.d?(t=ft(this,i,1).times(e.s>0?.25:.75),t.s=o.s):!e.d||o.isZero()?(t=e.s<0?ft(this,n,r):new this(0),t.s=o.s):!o.d||e.isZero()?(t=ft(this,i,1).times(.5),t.s=o.s):e.s<0?(this.precision=i,this.rounding=1,t=this.atan(be(o,e,i,1)),e=ft(this,i,1),this.precision=n,this.rounding=r,t=o.s<0?t.minus(e):t.plus(e)):t=this.atan(be(o,e,i,1)),t}function $u(o){return new this(o).cbrt()}function Ju(o){return j(o=new this(o),o.e+1,2)}function ec(o,e,t){return new this(o).clamp(e,t)}function tc(o){if(!o||typeof o!="object")throw Error(Cr+"Object expected");var e,t,n,r=o.defaults===!0,i=["precision",1,Xt,"rounding",0,8,"toExpNeg",-wn,0,"toExpPos",0,wn,"maxE",0,wn,"minE",-wn,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],r&&(this[t]=Vo[t]),(n=o[t])!==void 0)if(qe(n)===n&&n>=i[e+1]&&n<=i[e+2])this[t]=n;else throw Error(Gt+t+": "+n);if(t="crypto",r&&(this[t]=Vo[t]),(n=o[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(ds);else this[t]=!1;else throw Error(Gt+t+": "+n);return this}function nc(o){return new this(o).cos()}function rc(o){return new this(o).cosh()}function hs(o){var e,t,n;function r(i){var s,a,u,c=this;if(!(c instanceof r))return new r(i);if(c.constructor=r,cs(i)){c.s=i.s,ne?!i.d||i.e>r.maxE?(c.e=NaN,c.d=null):i.e<r.minE?(c.e=0,c.d=[0]):(c.e=i.e,c.d=i.d.slice()):(c.e=i.e,c.d=i.d?i.d.slice():i.d);return}if(u=typeof i,u==="number"){if(i===0){c.s=1/i<0?-1:1,c.e=0,c.d=[0];return}if(i<0?(i=-i,c.s=-1):c.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;ne?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[i]):(c.e=s,c.d=[i]);return}else if(i*0!==0){i||(c.s=NaN),c.e=NaN,c.d=null;return}return Fo(c,i.toString())}else if(u!=="string")throw Error(Gt+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),c.s=-1):(a===43&&(i=i.slice(1)),c.s=1),fs.test(i)?Fo(c,i):Wu(c,i)}if(r.prototype=M,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=tc,r.clone=hs,r.isDecimal=cs,r.abs=Uu,r.acos=Gu,r.acosh=Xu,r.add=zu,r.asin=Yu,r.asinh=Qu,r.atan=ju,r.atanh=Hu,r.atan2=Zu,r.cbrt=$u,r.ceil=Ju,r.clamp=ec,r.cos=nc,r.cosh=rc,r.div=oc,r.exp=ic,r.floor=sc,r.hypot=ac,r.ln=uc,r.log=cc,r.log10=mc,r.log2=lc,r.max=dc,r.min=pc,r.mod=fc,r.mul=yc,r.pow=bc,r.random=gc,r.round=wc,r.sign=Ac,r.sin=hc,r.sinh=Pc,r.sqrt=kc,r.sub=Tc,r.sum=Ic,r.tan=Bc,r.tanh=xc,r.trunc=Sc,o===void 0&&(o={}),o&&o.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)o.hasOwnProperty(t=n[e++])||(o[t]=this[t]);return r.config(o),r}function oc(o,e){return new this(o).div(e)}function ic(o){return new this(o).exp()}function sc(o){return j(o=new this(o),o.e+1,3)}function ac(){var o,e,t=new this(0);for(ne=!1,o=0;o<arguments.length;)if(e=new this(arguments[o++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return ne=!0,new this(1/0);t=e}return ne=!0,t.sqrt()}function cs(o){return o instanceof Mn||o&&o.toStringTag===ps||!1}function uc(o){return new this(o).ln()}function cc(o,e){return new this(o).log(e)}function lc(o){return new this(o).log(2)}function mc(o){return new this(o).log(10)}function dc(){return gs(this,arguments,"lt")}function pc(){return gs(this,arguments,"gt")}function fc(o,e){return new this(o).mod(e)}function yc(o,e){return new this(o).mul(e)}function bc(o,e){return new this(o).pow(e)}function gc(o){var e,t,n,r,i=0,s=new this(1),a=[];if(o===void 0?o=this.precision:$e(o,1,Xt),n=Math.ceil(o/ee),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));i<n;)r=e[i],r>=429e7?e[i]=crypto.getRandomValues(new Uint32Array(1))[0]:a[i++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);i<n;)r=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+((e[i+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,i):(a.push(r%1e7),i+=4);i=n/4}else throw Error(ds);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],o%=ee,n&&o&&(r=Re(10,ee-o),a[i]=(n/r|0)*r);a[i]===0;i--)a.pop();if(i<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=ee)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<ee&&(t-=ee-n)}return s.e=t,s.d=a,s}function wc(o){return j(o=new this(o),o.e+1,this.rounding)}function Ac(o){return o=new this(o),o.d?o.d[0]?o.s:0*o.s:o.s||NaN}function hc(o){return new this(o).sin()}function Pc(o){return new this(o).sinh()}function kc(o){return new this(o).sqrt()}function Tc(o,e){return new this(o).sub(e)}function Ic(){var o=0,e=arguments,t=new this(e[o]);for(ne=!1;t.s&&++o<e.length;)t=t.plus(e[o]);return ne=!0,j(t,this.precision,this.rounding)}function Bc(o){return new this(o).tan()}function xc(o){return new this(o).tanh()}function Sc(o){return j(o=new this(o),o.e+1,1)}M[Symbol.for("nodejs.util.inspect.custom")]=M.toString;M[Symbol.toStringTag]="Decimal";var Mn=M.constructor=hs(Vo);xr=new Mn(xr);Sr=new Mn(Sr);var _=Mn;import{PublicKey as Xo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kc}from"@solana/spl-token";import{PublicKey as Ae,SystemProgram as Ps,SYSVAR_RENT_PUBKEY as Cc}from"@solana/web3.js";function P({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var Wo=[P({pubkey:Kc,isWritable:!1}),P({pubkey:Ps.programId,isWritable:!1}),P({pubkey:Cc,isWritable:!1})];function qo({publicKey:o,transformSol:e}){let t=Uo(o.toString());if(t instanceof Ae)return e&&t.equals(Le)?$:t;if(e&&t.toString()===Le.toBase58())return $;if(typeof t=="string"){if(t===Ae.default.toBase58())return Ae.default;try{return new Ae(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Uo(o){try{return new Ae(o)}catch{return o}}var Or=new Ae("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Nr=new Ae("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bt=new Ae("SysvarRent111111111111111111111111111111111"),ks=new Ae("SysvarC1ock11111111111111111111111111111111"),hn=new Ae("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Rc=new Ae("Sysvar1nstructions1111111111111111111111111"),Go=Ps.programId,Nd=new Ae("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Md=new Ae("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),_d=new Ae("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Vd=new Ae("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),vd=new Ae("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ed=new Ae("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fd=new Ae("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new Ae("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Wd=new Ae("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qd=new Ae("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ud=new Ae("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new Ae("So11111111111111111111111111111111111111112"),Le=Ae.default;function nt(o){return qo({publicKey:o,transformSol:!0})}import{PublicKey as Lc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ts}from"@solana/spl-token";var zt={chainId:101,address:Lc.default.toBase58(),programId:Ts.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ve={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ts.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 zo=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:i=!1,isToken2022:s=!1}){if(e===Le.toBase58()||e instanceof Xo&&Le.equals(e)){this.decimals=ve.decimals,this.symbol=ve.symbol,this.name=ve.name,this.mint=new Xo(ve.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=i?Xo.default:qo({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=zo;he.WSOL=new zo(E(C({},ve),{mint:ve.address}));import _r from"big.js";import Mc from"bn.js";import _c from"decimal.js-light";import Oc from"toformat";var Nc=Oc,_n=Nc;var Mr=se("module/fraction"),Yo=_n(_r),Vn=_n(_c),Vc={[0]:Vn.ROUND_DOWN,[1]:Vn.ROUND_HALF_UP,[2]:Vn.ROUND_UP},vc={[0]:_r.roundDown,[1]:_r.roundHalfUp,[2]:_r.roundUp},de=class{constructor(e,t=new Mc(1)){this.numerator=H(e),this.denominator=H(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new de(this.denominator,this.numerator)}add(e){let t=e instanceof de?e:new de(H(e));return this.denominator.eq(t.denominator)?new de(this.numerator.add(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof de?e:new de(H(e));return this.denominator.eq(t.denominator)?new de(this.numerator.sub(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof de?e:new de(H(e));return new de(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof de?e:new de(H(e));return new de(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Mr.logWithError(`${e} is not an integer.`),e<=0&&Mr.logWithError(`${e} is not positive.`),Vn.set({precision:e+1,rounding:Vc[n]});let r=new Vn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Mr.logWithError(`${e} is not an integer.`),e<0&&Mr.logWithError(`${e} is negative.`),Yo.DP=e,Yo.RM=vc[n]||1,new Yo(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Fc=se("Raydium_price"),Je=class extends de{constructor(t){let{baseToken:n,quoteToken:r,numerator:i,denominator:s}=t;super(i,s);this.baseToken=n,this.quoteToken=r,this.scalar=new de(Qo(n.decimals),Qo(r.decimals))}get raw(){return new de(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Fc.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var jo=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Vr=jo;Vr.SOL=new jo(zt);import Dc from"bn.js";var Is=new de(new Dc(100)),Qe=class extends de{toSignificant(e=5,t,n){return this.mul(Is).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Is).toFixed(e,t,n)}};var at=new et(0),xs=new et(1),Fp=new et(2),Dp=new et(3),Wp=new et(5),Ho=new et(10),qp=new et(100),Up=new et(1e3),Gp=new et(1e4),Bs=9007199254740991;function H(o){let e=se("Raydium_parseBigNumberish");if(o instanceof et)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new et(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=Bs||o<=-Bs)&&e.logWithError(`BigNumberish number overflow: ${o}`),new et(String(o))):typeof o=="bigint"?new et(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new et(0))}function Qo(o){return Ho.pow(H(o))}function vr(o,e){let t=o.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var qc=se("Raydium_amount"),Ks=_n(Wc);function Uc(o,e){let t="0",n="0";if(o.includes(".")){let r=o.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):qc.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,n.slice(0,e)||n]}var fe=class extends de{constructor(t,n,r=!0,i){let s=new Er(0),a=Ho.pow(new Er(t.decimals));if(r)s=H(n);else{let u=new Er(0),c=new Er(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Uc(n.toString(),t.decimals);u=H(l),c=H(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(i||"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 fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Ks.DP=this.token.decimals,new Ks(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ss(o){return typeof o=="object"&&o!==null&&![he,fe,Gc,de,Xc,Je,Qe].some(e=>typeof e=="object"&&o instanceof e)}function Ee(o){return typeof o=="string"?Uo(o):Array.isArray(o)?o.map(e=>Ee(e)):Ss(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,Ee(t)])):o}import{PublicKey as Fn,sendAndConfirmTransaction as ti,Transaction as Dn,TransactionMessage as Wn,VersionedTransaction as qn}from"@solana/web3.js";import el 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 zc,ComputeBudgetProgram as Cs,Transaction as Ls,TransactionMessage as Yc,Keypair as Os,VersionedTransaction as Ns}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qc}from"@solana/spl-token";var Rs=se("Raydium_txUtil"),Ms=1644;function Fr(o){let e=[],t=[];return o.microLamports&&(e.push(Cs.setComputeUnitPrice({microLamports:o.microLamports})),t.push(v.SetComputeUnitPrice)),o.units&&(e.push(Cs.setComputeUnitLimit({units:o.units})),t.push(v.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(o,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=o.getLatestBlockhash)==null?void 0:n.call(o,{commitment:t})))==null?void 0:r.blockhash)||(await o.getRecentBlockhash(t)).blockhash}catch{return(await o.getRecentBlockhash(t)).blockhash}}function Zo(o,e){o.length<1&&Rs.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&Rs.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ls;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ms}catch{return!1}}function le(o,e){let[t,n]=zc.findProgramAddressSync(o,e);return{publicKey:t,nonce:n}}function vn({instructions:o,payer:e,signers:t}){return Zo(o,[e,...t])}function En({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Os.generate().publicKey.toString()}){let i=new Yc({payerKey:e,recentBlockhash:n,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ns(i).serialize()).toString("base64").length<Ms}catch{return!1}}var jc=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o);function tn(o){let e=[];return o.forEach(t=>{t instanceof Ls&&(t.recentBlockhash||(t.recentBlockhash=Qc.toBase58()),t.feePayer||(t.feePayer=Os.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ns&&(n=jc(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Vs,AddressLookupTableAccount as Dr}from"@solana/web3.js";import{PublicKey as _s}from"@solana/web3.js";import{MINT_SIZE as Hc,TOKEN_PROGRAM_ID as Zc,getTransferFeeConfig as $c,unpackMint as Jc}from"@solana/spl-token";var $o=se("Raydium_accountInfo_util");async function gt(o,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:i=100}=C({batchRequest:!1},t),s=Jo(e,i),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=o._buildArgs([m.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Jo(u,10);a=(await(await Promise.all(c.map(async m=>await o._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&$o.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:b,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&$o.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new _s(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(u=>o.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&$o.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Ne(o,e,t){let n=await gt(o,e.map(r=>r.pubkey),t);return e.map((r,i)=>E(C({},r),{accountInfo:n[i]}))}async function kn({connection:o,mints:e,config:t}){var i,s,a;if(e.length===0)return{};let n=await Ne(o,e.map(u=>({pubkey:nt(u)})),t),r={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Hc){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=Jc(u.pubkey,u.accountInfo,(i=u.accountInfo)==null?void 0:i.owner);r[u.pubkey.toString()]=E(C({},c),{programId:((s=u.accountInfo)==null?void 0:s.owner)||Zc,feeConfig:(a=$c(c))!=null?a:void 0})}return r[_s.default.toBase58()]=r[$.toBase58()],r}async function ei({connection:o,address:e}){let t=await gt(o,[...new Set(e.map(r=>r.toString()))].map(r=>new Vs(r))),n={};for(let r=0;r<e.length;r++){let i=t[r],s=e[r];if(!i)continue;let a=new Dr({key:s,state:Dr.deserialize(i.data)});n[s.toString()]=a,Wr[s.toString()]=a}return n}var Wr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Dr({key:new Vs("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Dr.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 qr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await el.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}=Fr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:i=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...s.filter(a=>a!==Fn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){var n;let t=new Dn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var c;let{recentBlockHash:i,skipPreflight:s=!0,sendAndConfirm:a}=r||{},u=i!=null?i:await Pn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),tn([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await ti(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),i=t.filter(l=>l.transaction.instructions.length>0),s=[r,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Pn(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await ti(this.connection,h,this.signers.find(k=>k.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 await Promise.all(s.map(async(g,h)=>(g.recentBlockhash=f,await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:y})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((A,k)=>(A.recentBlockhash=f,a[k].length&&A.sign(...a[k]),A));tn(g);let h=await this.signAllTransactions(g);if(m){let A=0,k=[],B=async()=>{if(!h[A])return;let T=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:y});k.push({txId:T,status:"sent",signedTx:h[A]}),d==null||d([...k]),A++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),d==null||d([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let A=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:y});A.push(B)}return{txIds:A,signedTxs:h}}}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){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,i=ke(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=C(C({},this.cluster==="devnet"?{}:Wr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let y of a)s[y]===void 0&&u.push(new Fn(y));let c=await ei({connection:this.connection,address:u});for(let[y,f]of Object.entries(c))s[y]=f;let l=new Wn({payerKey:this.feePayer,recentBlockhash:r?Fn.default.toBase58():await Pn(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new qn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var h;let{recentBlockHash:f,skipPreflight:b=!0,sendAndConfirm:g}=y||{};if(f&&(m.message.recentBlockhash=f),tn([m]),(h=this.owner)!=null&&h.isKeyPair){let A=await this.connection.sendTransaction(m,{skipPreflight:b});if(g){let{lastValidBlockHeight:k,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:k,signature:A},"confirmed")}return{txId:A,signedTx:m}}if(this.signAllTransactions){let A=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(A[0],{skipPreflight:b}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),i=t.filter(l=>l.builder.instructions.length>0),s=[r,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),tn(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let b=[];for(let g of s){let h=await this.connection.sendTransaction(g,{skipPreflight:y}),{lastValidBlockHeight:A,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:A,signature:h},"confirmed"),b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let g=0,h=[],A=async()=>{if(!b[g])return;let k=await this.connection.sendTransaction(b[g],{skipPreflight:y});h.push({txId:k,status:"sent",signedTx:b[g]}),d==null||d([...h]),g++,this.connection.onSignature(k,B=>{let T=h.findIndex(S=>S.txId===k);T>-1&&(h[T].status=B.err?"error":"success"),d==null||d([...h]),B.err||A()},"processed"),this.connection.getSignatureStatus(k)};return A(),{txIds:[],signedTxs:b}}else{let g=[];for(let h=0;h<b.length;h+=1){let A=await this.connection.sendTransaction(b[h],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let c=e||{},{computeBudgetConfig:t}=c,n=ke(c,["computeBudgetConfig"]),r=t?Fr(t):{instructions:[],instructionTypes:[]},i=this.signers.reduce((m,d)=>E(C({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(m=>{let d=[...u,m],p=t?[...r.instructions,...d]:d,f=[...new Set(d.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>new Fn(b));if(u.length<12&&vn({instructions:p,payer:this.feePayer,signers:f})||vn({instructions:d,payer:this.feePayer,signers:f}))u.push(m);else{if(u.length===0)throw Error("item ins too big");vn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:f})?s.push(new Dn().add(...r.instructions,...u)):s.push(new Dn().add(...u)),a.push(Array.from(new Set(u.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(b=>i[b]).filter(b=>b!==void 0)),u=[m]}}),u.length>0){let d=[...new Set(u.map(p=>p.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(p=>i[p]).filter(p=>p!==void 0);vn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new Dn().add(...r.instructions,...u)):s.push(new Dn().add(...u)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var g;let{sequentially:d,onTxUpdate:p,recentBlockHash:y,skipPreflight:f=!0}=m||{},b=y!=null?y:await Pn(this.connection,this.blockhashCommitment);if(s.forEach(async(h,A)=>{h.recentBlockhash=b,a[A].length&&h.sign(...a[A])}),tn(s),(g=this.owner)!=null&&g.isKeyPair){if(d){let h=[];for(let A of s){let k=await ti(this.connection,A,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(k)}return{txIds:h,signedTxs:s}}return{txIds:await Promise.all(s.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let h=await this.signAllTransactions(s);if(d){let A=0,k=[],B=async()=>{if(!h[A])return;let T=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:f});k.push({txId:T,status:"sent",signedTx:h[A]}),p==null||p([...k]),A++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),p==null||p([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let A=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:f});A.push(B)}return{txIds:A,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var g;let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=b,i=ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=C(C({},this.cluster==="devnet"?{}:Wr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let h of a)s[h]===void 0&&u.push(new Fn(h));let c=await ei({connection:this.connection,address:u});for(let[h,A]of Object.entries(c))s[h]=A;let l=t?Fr(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,A)=>E(C({},h),{[A.publicKey.toBase58()]:A}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(h=>{let A=[...f,h],k=t?[...l.instructions,...A]:A;if(f.length<12&&En({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||En({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(h);else{if(f.length===0)throw Error("item ins too big");let B={};for(let T of[...new Set(a)])s[T]!==void 0&&(B[T]=s[T]);if(t&&En({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Wn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new qn(T))}else{let T=new Wn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new qn(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[h]}}),f.length>0){let A=[...new Set(f.map(k=>k.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&En({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new Wn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new qn(k))}else{let k=new Wn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new qn(k))}y.push(A)}return(g=this.owner)!=null&&g.signer&&y.forEach(h=>{h.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var S;let{sequentially:A,onTxUpdate:k,recentBlockHash:B,skipPreflight:T=!0}=h||{};if(p.map(async(x,R)=>{y[R].length&&x.sign(y[R]),B&&(x.message.recentBlockhash=B)}),tn(p),(S=this.owner)!=null&&S.isKeyPair){if(A){let x=[];for(let R of p){let I=await this.connection.sendTransaction(R,{skipPreflight:T}),{lastValidBlockHeight:L,blockhash:U}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:U,lastValidBlockHeight:L,signature:I},"confirmed"),x.push(I)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:T}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(A){let R=0,I=[],L=async()=>{if(!x[R])return;let U=await this.connection.sendTransaction(x[R],{skipPreflight:T});I.push({txId:U,status:"sent",signedTx:x[R]}),k==null||k([...I]),R++,this.connection.onSignature(U,F=>{let J=I.findIndex(G=>G.txId===U);J>-1&&(I[J].status=F.err?"error":"success"),k==null||k([...I]),F.err||L()},"processed"),this.connection.getSignatureStatus(U)};return L(),{txIds:[],signedTxs:x}}else{let R=[];for(let I=0;I<x.length;I+=1){let L=await this.connection.sendTransaction(x[I],{skipPreflight:T});R.push(L)}return{txIds:R,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}};var wt=class{constructor(e){this._owner=e}get publicKey(){return wt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return wt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return wt.isKeyPair(this._owner)}get isPublicKey(){return wt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!wt.isKeyPair(e)}};function Jo(o,e=1,t=[]){let n=[...o];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ue}from"@solana/web3.js";var vs=new ue("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Es=new ue("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Gn=new ue("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ty=new ue("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ny=new ue("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ni=new ue("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fs=new ue("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ry=new ue("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ds=new ue("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ws=new ue("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),oy=new ue("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),iy=new ue("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tl=new ue("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nl=new ue("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),rl=new ue("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ol=new ue("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),qs=new ue("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),sy=new ue("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ay=new ue("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),il=new ue("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),sl=new ue("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),al=new ue("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Xn={IDO_PROGRAM_ID_V1:tl,IDO_PROGRAM_ID_V2:nl,IDO_PROGRAM_ID_V3:rl,IDO_PROGRAM_ID_V4:ol};var Ur={SERUM_MARKET:ue.default,OPENBOOK_MARKET:new ue("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ue.default,FarmV3:new ue("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ue("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ue("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ue("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ue("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ue("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ue("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:il,CREATE_CPMM_POOL_AUTH:sl,CREATE_CPMM_POOL_FEE_ACC:al,FEE_DESTINATION_ID:new ue("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ul}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cl}from"@solana/spl-token";function Pe(o,e,t){return le([o.toBuffer(),(t!=null?t:cl).toBuffer(),e.toBuffer()],new ul("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import At from"bn.js";var zn=1e4;function we(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let r=E(C({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new At(i.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===zn){let u=new At(i.maximumFee.toString());return{amount:o.add(u),fee:u,expirationTime:a}}else{let u=Yn(o.mul(new At(zn)),new At(zn-i.transferFeeBasisPoints)),c=new At(i.maximumFee.toString()),l=u.sub(o).gt(c)?o.add(c):u,m=Yn(l.mul(new At(i.transferFeeBasisPoints)),new At(zn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Yn(o.mul(new At(i.transferFeeBasisPoints)),new At(zn)),c=u.gt(s)?s:u;return{amount:o,fee:c,expirationTime:a}}}function xt(o,e){return o===void 0?e:e===void 0?o:Math.min(o,e)}function Yn(o,e){let{div:t,mod:n}=o.divmod(e);return n.gt(new At(0))?t.add(new At(1)):t}var Fe={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"},Ny=C({},Fe);var Us="ray_tab_hash",ri="ray_req_hash",ll=()=>{if(typeof window===void 0)return"";let o=sessionStorage.getItem(Us);return o||(o=`ray-${Date.now()}`,sessionStorage.setItem(Us,o)),o},Gr=async n=>{var r=n,{logCount:o=1e3,removeLastLog:e}=r,t=ke(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let i=JSON.parse(localStorage.getItem(ri)||"[]").slice(0,o-1);e&&i.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),i.unshift(E(C({},t),{time:Date.now(),session:ll()}));try{localStorage.setItem(ri,JSON.stringify(i))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(i[0].data=a+(a.length>100?"...":"");!s;){i.pop();let u=JSON.stringify(t.data).substring(0,100);i[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(ri,JSON.stringify(i)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Gr(E(C({},t),{logCount:o,removeLastLog:!0}))}};var Xr=se("Raydium_Api"),oi=new Map;var zr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=r||1e3,this.api=Gs.create({baseURL:this.urlConfigs.BASE_HOST||Fe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Xr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Xr.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:d}=a;return n&&Gr({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Xr.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&Gr({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Xr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Fe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Fe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Gs.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(r=>r.numSlots);return n.reduce((r,i)=>r+i,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Fe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Fe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Fe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Fe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Fe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:i=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Fe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${i}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Fe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>oi.has(s)?(n.push(oi.get(s)),!1):!0),i=[];return r.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Fe.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),i.forEach(a=>{oi.set(a.id,a)})),n.concat(i)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:i="default",order:s="desc",page:a=1}=e,[u,c]=[t&&nt(t).toBase58(),n&&n!=="undefined"?nt(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Fe.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${i}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Fe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Fe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Fe.CHECK_AVAILABILITY)).data}};var Yr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Xs="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as yi,TOKEN_PROGRAM_ID as jt,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as Dl}from"@solana/spl-token";import{PublicKey as to,SystemProgram as Wl}from"@solana/web3.js";var ii=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new qr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ii(e))}logInfo(...e){this.logger.info(ii(e))}logAndCreateError(...e){let t=ii(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 In}from"@solana/spl-token";import{PublicKey as vl,SystemProgram as El}from"@solana/web3.js";import Fl from"bn.js";import{PublicKey as ia,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 Hs,{isBN as Zs}from"bn.js";import{bits as dl,BitStructure as pb,blob as pl,Blob as fb,cstr as yb,f32 as bb,f32be as gb,f64 as wb,f64be as Ab,greedy as hb,Layout as fl,ns64 as Pb,ns64be as kb,nu64 as yl,nu64be as Tb,offset as Ib,s16 as Bb,s16be as xb,s24 as Sb,s24be as Kb,s32 as bl,s32be as Cb,s40 as Rb,s40be as Lb,s48 as Ob,s48be as Nb,s8 as Mb,seq as gl,struct as _b,Structure as wl,u16 as Al,u16be as Vb,u24 as vb,u24be as Eb,u32 as hl,u32be as Fb,u40 as Db,u40be as Wb,u48 as qb,u48be as Ub,u8 as Pl,UInt as kl,union as Gb,Union as Xb,unionLayoutDiscriminator as zb,utf8 as Yb}from"@solana/buffer-layout";var Qr=fl,zs=wl;var si=kl;var Ys=Pl,St=Al;var ai=hl;var Qs=yl;var De=bl;var js=gl;var pe=pl;var ui=dl;var nn=class extends Qr{constructor(t,n,r){super(t,r);this.blob=pe(t),this.signed=n}decode(t,n=0){let r=new Hs(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Hs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},jr=class extends Qr{constructor(t){super(8,t);this._lower=ui(ai(),!1),this._upper=ui(ai(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return C(C({},r),i)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function D(o){return new si(1,o)}function je(o){return new si(4,o)}function w(o){return new nn(8,!1,o)}function Y(o){return new nn(16,!1,o)}function $s(o){return new nn(1,!0,o)}function Zr(o){return new nn(8,!0,o)}function Js(o){return new nn(16,!0,o)}var Hr=class extends Qr{constructor(t,n,r,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(o){return new Hr(pe(32),e=>new Tl(e),e=>e.toBuffer(),o)}function Ue(o){return new Hr(Ys(),Il,Bl,o)}function Il(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Bl(o){return o?1:0}var ci=class extends zs{decode(e,t){return super.decode(e,t)}};function V(o,e,t){return new ci(o,e,t)}function X(o,e,t){let n,r=typeof e=="number"?e:Zs(e)?e.toNumber():new Proxy(e,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=Zs(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,s)},set(i,s,a){return s==="count"&&(n=a),Reflect.set(i,s,a)}});return js(o,r,t)}var Tn=V([K("mint"),K("owner"),w("amount"),je("delegateOption"),K("delegate"),D("state"),je("isNativeOption"),w("isNative"),w("delegatedAmount"),je("closeAuthorityOption"),K("closeAuthority")]);function xl(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function li(o,...e){if(!xl(o))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(o.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${o.length}`)}function mi(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function ea(o,e){li(o);let t=e.outputLen;if(o.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Jr=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),ht=(o,e)=>o<<32-e|o>>>e;var ug=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sl(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function di(o){return typeof o=="string"&&(o=Sl(o)),li(o),o}var $r=class{clone(){return this._cloneInto()}},cg={}.toString;function ta(o){let e=n=>o().update(di(n)).digest(),t=o();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>o(),e}function Kl(o,e,t,n){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,t,n);let r=BigInt(32),i=BigInt(4294967295),s=Number(t>>r&i),a=Number(t&i),u=n?4:0,c=n?0:4;o.setUint32(e+u,s,n),o.setUint32(e+c,a,n)}var na=(o,e,t)=>o&e^~o&t,ra=(o,e,t)=>o&e^o&t^e&t,eo=class extends $r{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Jr(this.buffer)}update(e){mi(this);let{view:t,buffer:n,blockLen:r}=this;e=di(e);let i=e.length;for(let s=0;s<i;){let a=Math.min(r-this.pos,i-s);if(a===r){let u=Jr(e);for(;r<=i-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){mi(this),ea(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Kl(n,r-8,BigInt(this.length*8),i),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],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:i,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=i,e.destroyed=s,r%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]),Yt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qt=new Uint32Array(64),pi=class extends eo{constructor(){super(64,32,8,!1),this.A=Yt[0]|0,this.B=Yt[1]|0,this.C=Yt[2]|0,this.D=Yt[3]|0,this.E=Yt[4]|0,this.F=Yt[5]|0,this.G=Yt[6]|0,this.H=Yt[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:s,G:a,H:u}=this;return[e,t,n,r,i,s,a,u]}set(e,t,n,r,i,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Qt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Qt[m-15],p=Qt[m-2],y=ht(d,7)^ht(d,18)^d>>>3,f=ht(p,17)^ht(p,19)^p>>>10;Qt[m]=f+Qt[m-7]+y+Qt[m-16]|0}let{A:n,B:r,C:i,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ht(a,6)^ht(a,11)^ht(a,25),p=l+d+na(a,u,c)+Cl[m]+Qt[m]|0,f=(ht(n,2)^ht(n,13)^ht(n,22))+ra(n,r,i)|0;l=c,c=u,u=a,a=s+p|0,s=i,i=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,s,a,u,c,l)}roundClean(){Qt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var oa=ta(()=>new pi);var xg=se("Raydium_Util");function sa({owner:o,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:i,account:s}of t.value){let a=Tn.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:i,mint:u,amount:c,isAssociated:Pe(o,u,s.owner).publicKey.equals(i),isNative:!1,programId:s.owner}),r.push({pubkey:i,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ia.default,amount:new Ol(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Ge({fromPublicKey:o,programId:e=Ll}){let t=Rl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Nl(o,t,e),seed:t}}function Nl(o,e,t){let n=Buffer.concat([o.toBuffer(),Buffer.from(e),t.toBuffer()]),r=oa(n);return new ia(r)}function fi(o){let{mint:e,tokenAccount:t,owner:n,programId:r=In}=o;return Ml(t,e,n,r)}function Kt(o){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:i=In}=o;return _l(e,t,r,n,i)}async function _t(o){let{connection:e,amount:t,commitment:n,payer:r,owner:i,skipCloseAccount:s}=o,a=await e.getMinimumBalanceForRentExemption(Tn.span,n),u=H(t).add(new Fl(a)),c=Ge({fromPublicKey:r,programId:In});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[El.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Tn.span,programId:In}),fi({mint:new vl(ve.address),tokenAccount:c.publicKey,owner:i,programId:In})],instructionTypes:[v.CreateAccount,v.InitAccount],endInstructionTypes:s?[]:[v.CloseAccount],endInstructions:s?[]:[Kt({tokenAccount:c.publicKey,payer:r,owner:i})]}}function Qn({source:o,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:i=In}){return Vl(o,e,t,BigInt(String(n)),r,i)}var jn=class extends Te{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return Pe(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let r=C(C({},{}),t),[i,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:jt},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Dl},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=sa({owner:this.scope.ownerPubKey,solAccountResp:i,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}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=jt,associatedOnly:r=!0}){await this.fetchWalletTokenAccounts();let i=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 i){let{publicKey:u}=a;if(u&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:i,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new to(t.tokenProgram||jt),m=this.getAssociatedTokenAccount(n,new to(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!i||h.pubkey.equals(m))).sort((h,A)=>h.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let h=yi(s,m,s,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(v.CreateATA);else if(!(A.owner.equals(l)&&Bn.decode(A.data).mint.equals(n)&&Bn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(v.CreateATA);if(n.equals($)&&r.amount){let A=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),r.amount&&(p.instructions.push(Qn({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:jt})),p.instructionTypes.push(v.TransferAmount))}return u||(p.endInstructions.push(Kt({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:m,instructionParams:p}}else{let h=Ge({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),k=Wl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:A+Number((g=(b=r.amount)==null?void 0:b.toString())!=null?g:0),space:Bn.span,programId:l});return p.instructions.push(k,fi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(v.CreateAccount),p.instructionTypes.push(v.InitAccount),u||(p.endInstructions.push(Kt({owner:s,payer:r.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=jt,autoUnwrapWSOLToSOL:r}){var u;await this.fetchWalletTokenAccounts();let i=(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(!i){let c=this.getAssociatedTokenAccount(t,n),l=await yi(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[v.CreateATA],i=c}return r&&$.toBase58()===t.toBase58()&&(a.endInstructions=[Kt({owner:s,payer:s,tokenAccount:i,programId:n})],a.endInstructionTypes=[v.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:i,programId:s=jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(i,s);if(new to($).equals(i)){let p=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=yi(this.scope.ownerPubKey,d,this.scope.ownerPubKey,i,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(jt)&&Bn.decode(f.data).mint.equals(i)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[v.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:r=jt,amount:i,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new to($))&&s){let l=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=ke(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=ke(m,["tokenAccount"]);u=d,c.addInstruction(p)}return C({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as om}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as im}from"@solana/web3.js";import{PublicKey as ca}from"@solana/web3.js";var bi=V([D("instruction")]),gi=V([D("instruction")]),ql=V([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Y("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),X(w(),15,"padding")]),Ul=V([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),Y("perShareReward"),w("lastSlot"),w("perSlotReward")]),Gl=V([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),Y("perShareRewardA"),w("perSlotRewardA"),D("option"),K("rewardVaultB"),pe(7),w("totalRewardB"),Y("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),Xl=V([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Y("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),X(ql,5,"rewardInfos"),K("creator"),K(),X(w(),32,"padding")]),zl=new Proxy(Ul,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return E(C({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(o,e,t)}}),Yl=new Proxy(Gl,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return E(C({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(o,e,t)}}),no=new Proxy(Xl,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return E(C({},r),{version:6,rewardInfos:r.rewardInfos.map(i=>{var s;return E(C({},i),{rewardType:((s=Object.entries(Ht).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(o,e,t)}}),Ql=V([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),wi=V([D("instruction"),w("nonce"),X(Ql,5,"rewardTimeInfo")]),Ai=V([D("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),hi=V([D("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),ow=V([w("state"),K("id"),K("owner"),w("deposited"),X(w(),1,"rewardDebts")]),Pi=V([w("state"),K("id"),K("owner"),w("deposited"),X(Y(),1,"rewardDebts"),w(""),w("voteLockedBalance"),X(w(),15)]),iw=V([w("state"),K("id"),K("owner"),w("deposited"),X(w(),2,"rewardDebts")]),aa=V([w("state"),K("id"),K("owner"),w("deposited"),X(Y(),2,"rewardDebts"),X(w(),17)]),ua=V([w(),w("state"),K("id"),K("owner"),w("deposited"),X(Y(),5,"rewardDebts"),X(w(),16)]),rt=V([D("instruction"),w("amount")]),jl=V([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),$s("digitShift"),X(D(),7,"reserved1"),X(w(),7,"reserved2")]),Hl=V([pe(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),X(D(),32,"reserved1"),X(jl,4,"votingMints"),Zr("timeOffset"),D("bump"),X(D(),7,"reserved2"),X(w(),11,"reserved3")]),Zl=V([Zr("startTime"),Zr("endTime"),D("kind"),X(D(),15,"reserved")]),$l=V([X(Zl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ue("isUsed"),Ue("allowClawback"),D("votingMintConfigIdx"),X(D(),29,"reserved")]),Jl=V([pe(8),K("voterAuthority"),K("registrar"),X($l,32,"deposits"),D("voterBump"),D("voterWweightRecordBump"),X(D(),94,"reserved")]);var la=new ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ma=new ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var da={3:Pi,5:aa,6:ua},ki=o=>[3,5,6].indexOf(o)!==-1,Ti=o=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=o,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,i={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=i[e])==null?void 0:s.call(i)},Ht={"Standard SPL":0,"Option tokens":1},ut={[vs.toString()]:3,[Es.toString()]:5,[Gn.toString()]:6,[Ur.FarmV3.toString()]:3,[Ur.FarmV5.toString()]:5,[Ur.FarmV6.toString()]:6};import{PublicKey as me,SystemProgram as ya,SYSVAR_RENT_PUBKEY as nm,SYSVAR_CLOCK_PUBKEY as ro,TransactionInstruction as Pt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as qw,TOKEN_PROGRAM_ID as Zt,ASSOCIATED_TOKEN_PROGRAM_ID as Uw}from"@solana/spl-token";import ba from"bn.js";import em from"bn.js";var tm=se("Raydium.farm.util");function Hn({programId:o,poolId:e,mint:t,type:n}){let{publicKey:r}=le([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return r}function ct({programId:o,poolId:e,owner:t,version:n}){let{publicKey:r}=le([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return r}var pa=({programId:o,poolId:e})=>le([e.toBuffer()],o);function fa(o){return{isSet:new em(1),rewardPerSecond:H(o.perSecond),rewardOpenTime:H(o.openTime),rewardEndTime:H(o.endTime),rewardType:H(Ht[o.rewardType])}}function Ii(o){return H(o.endTime).sub(H(o.openTime)).mul(H(o.perSecond))}function Zn(o){let e=da[o];return e||tm.logWithError("invalid version",o),e}var rm=se("Raydium_farm_instruction"),nA={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 oo(o){let{version:e,id:t,ledger:n,programId:r,owner:i}=o,s={3:9,5:10}[e];s||rm.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(bi.span);bi.encode({instruction:s},a);let u=[P({pubkey:t}),P({pubkey:n}),P({pubkey:i,isWritable:!1}),P({pubkey:ya.programId,isWritable:!1}),P({pubkey:nm,isWritable:!1})];return{instruction:new Pt({programId:r,keys:u,data:a}),instructionType:v.FarmV3CreateLedger}}function ga(o){var n;let e=Buffer.alloc(wi.span);wi.encode({instruction:0,nonce:new ba(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...Wo,P({pubkey:o.farmId}),P({pubkey:o.farmAuthority,isWritable:!1}),P({pubkey:o.lpVault}),P({pubkey:o.lpMint,isWritable:!1}),P({pubkey:o.lockVault}),P({pubkey:o.lockMint,isWritable:!1}),P({pubkey:(n=o.lockUserAccount)!=null?n:Le}),P({pubkey:o.owner,isWritable:!1,isSigner:!0})];for(let r of o.rewardInfo)t.push(P({pubkey:r.rewardMint,isWritable:!1}),P({pubkey:r.rewardVault}),P({pubkey:r.userRewardToken}));return{instruction:new Pt({programId:o.programId,keys:t,data:e}),instructionType:v.FarmV6Create}}function wa(o){let e=Buffer.alloc(gi.span);gi.encode({instruction:5},e);let t=[P({pubkey:Zt,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.lpVault,isWritable:!1}),P({pubkey:o.rewardVault}),P({pubkey:o.userRewardToken}),P({pubkey:o.owner,isWritable:!1,isSigner:!0})];return{instruction:new Pt({programId:o.programId,keys:t,data:e}),instructionType:v.FarmV6CreatorWithdraw}}function Bi({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let i=Buffer.alloc(Ai.span);Ai.encode({instruction:3,rewardReopenTime:H(r.openTime),rewardEndTime:H(r.endTime),rewardPerSecond:H(r.perSecond)},i);let s=[P({pubkey:Zt,isWritable:!1}),P({pubkey:n.id}),P({pubkey:n.lpVault,isWritable:!1}),P({pubkey:e}),P({pubkey:t}),P({pubkey:o,isWritable:!1,isSigner:!0})];return new Pt({programId:n.programId,keys:s,data:i})}function xi({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let i=Buffer.alloc(hi.span);hi.encode({instruction:4,isSet:new ba(1),rewardPerSecond:H(r.perSecond),rewardOpenTime:H(r.openTime),rewardEndTime:H(r.endTime),rewardType:H(Ht[r.rewardType])},i);let s=[...Wo,P({pubkey:t.id}),P({pubkey:t.authority,isWritable:!1}),P({pubkey:r.mint,isWritable:!1}),P({pubkey:n}),P({pubkey:e}),P({pubkey:o,isWritable:!1,isSigner:!0})];return new Pt({programId:t.programId,keys:s,data:i})}function $n(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s}=o,[a,u]=[new me(e.programId),new me(e.id)],c=ct({programId:a,poolId:u,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:2,amount:H(s)},l);let m=[P({pubkey:Zt,isWritable:!1}),P({pubkey:u}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:new me(t.lpVault)}),P({pubkey:c}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(P({pubkey:new me(t.rewardInfos[d].vault)})),m.push(P({pubkey:r[d]}));return new Pt({programId:a,keys:m,data:l})}function Jn(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:5}),m=Buffer.alloc(rt.span);rt.encode({instruction:12,amount:H(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:r[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ro,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(P({pubkey:r[p]})),d.push(P({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function er(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:3}),m=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:H(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:r[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ro,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function Aa(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:3}),m=Buffer.alloc(rt.span);rt.encode({instruction:10,amount:H(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:r[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ro,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function ha(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:5}),m=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:H(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:r[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ro,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(P({pubkey:r[p]})),d.push(P({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function Pa(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s}=o,[a,u]=[new me(e.programId),new me(e.id)],c=ct({programId:a,poolId:u,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:1,amount:H(s)},l);let m=[P({pubkey:Zt,isWritable:!1}),P({pubkey:ya.programId,isWritable:!1}),P({pubkey:u}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:new me(t.lpVault)}),P({pubkey:c}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(P({pubkey:new me(t.rewardInfos[d].vault)})),m.push(P({pubkey:r[d]}));return new Pt({programId:a,keys:m,data:l})}var tr=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Le)){let n=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Ii(E(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:r=Gn,txVersion:i}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ge(e.lpMint.address),lockInfo:{lockMint:la,lockVault:ma},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ge({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(no.span);u.addInstruction({instructions:[im.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:no.span,programId:a.programId})]});let{publicKey:d,nonce:p}=pa({programId:new ge(a.programId),poolId:l.publicKey}),y=Hn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let B of a.rewardInfos){B.openTime>=B.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",B.openTime.toString()),isNaN(Ht[B.rewardType])&&this.logAndCreateError("rewardType error",B.rewardType),Number(B.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",B.perSecond),f.push(fa(B));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:B,payer:c});S&&u.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=B.mint.equals(Le)?new ge(ve.address):B.mint;b.push({rewardMint:x,rewardVault:Hn({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new ge(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&u.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=ga({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let i=ut[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ee((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(Le)?new ge(ve.address):n.mint,l=a.rewardInfos.findIndex(g=>new ge(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(b=m.vault)!=null?b:Le,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[Bi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[v.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let i=ut[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ee((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Le)?new ge(ve.address):m.mint,p=a.rewardInfos.findIndex(A=>new ge(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Le,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=Bi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[v.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:i}=e,s=ut[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ee((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Le)?new ge(ve.address):r.mint,m=Hn({programId:new ge(n.programId),poolId:new ge(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[xi({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[v.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:i}=e,s=ut[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ee((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Le)?new ge(ve.address):l.mint,d=Hn({programId:new ge(n.programId),poolId:new ge(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=xi({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:E(C({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[v.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=ut[d];ki(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ge(n.programId),new ge(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=ct({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let F of this.scope.account.tokenAccounts)if(a){let J=Pe(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&J.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let k=b.lpMint,B=A[k.address];B||this.logAndCreateError("you don't have any lp","lp zero",A);let T=[];for(let F of m){let J=s&&F.mint.address===$.toString(),G=A[F.mint.address];if(!G){let{account:W,instructionParams:Ye}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new ge(F.mint.address),notUseTokenAccount:J,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!J,associatedOnly:J?!1:a,checkCreateATAOwner:u});G=W,Ye&&h.addInstruction(Ye)}A[F.mint.address]=G,T.push(G)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=Zn(p).decode(x.data)),n.programId!==Gn.toString()&&!S){let{instruction:F,instructionType:J}=oo({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[F],instructionTypes:[J]})}let R=Ti({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});R&&this.logAndCreateError(R);let I={amount:H(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:B,rewardAccounts:T,userAuxiliaryLedgers:c==null?void 0:c.map(F=>new ge(F))},L=p===6?Pa(I):p===5?ha(I):Aa(I),U={3:v.FarmV3Deposit,5:v.FarmV5Deposit,6:v.FarmV6Deposit};return h.addInstruction({instructions:[L],instructionTypes:[U[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=ut[n.programId];ki(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let R of this.scope.account.tokenAccounts)if(u){let I=Pe(this.scope.ownerPubKey,R.mint).publicKey;R.publicKey&&I.equals(R.publicKey)&&(b[R.mint.toString()]=R.publicKey)}else b[R.mint.toString()]=R.publicKey;if(i)i.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let R=ct({programId:new ge(n.programId),poolId:new ge(n.id),owner:this.scope.ownerPubKey,version:p}),I=await this.scope.connection.getAccountInfo(R);I||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:I}),Zn(p).decode(I.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===$.toString(),A=b[g.toString()];if(!A){let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ge(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=R,I&&f.addInstruction(I)}b[g.toString()]=A;let k=[];for(let R of d){let I=s&&R.mint.address===$.toString(),L=b[R.mint.address];if(!L){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new ge(R.mint.address),notUseTokenAccount:I,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!I,associatedOnly:I?!1:u,checkCreateATAOwner:c});L=U,F&&f.addInstruction(F)}b[R.mint.address]=L,k.push(L)}let B=Ti({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});B&&this.logAndCreateError(B);let T={amount:H(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(R=>new ge(R))},S=p===6?$n(T):p===5?Jn(T):er(T),x={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ee((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),i=ut[e.programId];i!==6&&this.logAndCreateError("invalid farm version",i);let s=e.rewardInfos.findIndex(y=>y.mint.address===Le.toString()?new ge(ve.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Le,c=this.createTxBuilder(),l;if(t.equals(Le)){let y=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Ii(E(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new _(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:[om(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[v.CreateATA]})):l=y}let{instruction:m,instructionType:d}=wa({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(i){let f=Pe(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>E(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=ut[f],k=b.address,B=n&&k===$.toString(),T=m[k];if(!T){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ge(k),notUseTokenAccount:B,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:B?!1:i,checkCreateATAOwner:s});T=U,F&&l.addInstruction(F)}m[k.toString()]=T;let S=[];for(let U of g){let F=n&&U.mint.address===$.toString(),J=m[U.mint.address];if(!J){let{account:G,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:U.mint.programId,mint:new ge(U.mint.address),notUseTokenAccount:F,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:i,checkCreateATAOwner:s});J=G,W&&l.addInstruction(W)}m[U.mint.address]=J,S.push(J)}let x=p[h],R={amount:at,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(U=>new ge(U))},I=A===6?$n(R):A===5?Jn(R):er(R),L={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};l.addInstruction({instructions:[I],instructionTypes:[L[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Ce}from"@solana/web3.js";import{AccountLayout as Wm,NATIVE_MINT as tu,TOKEN_PROGRAM_ID as wo}from"@solana/spl-token";var xA=V([je("mintAuthorityOption"),K("mintAuthority"),w("supply"),D("decimals"),D("isInitialized"),je("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as RA}from"@solana/web3.js";import{MintLayout as OA,TOKEN_PROGRAM_ID as MA}from"@solana/spl-token";var io=o=>new he({mint:o.address,decimals:o.decimals,symbol:o.symbol,name:o.name}),nr=r=>{var i=r,{amount:o,isRaw:e,name:t}=i,n=ke(i,["amount","isRaw","name"]);return new fe(new he({mint:nt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),o,e,t)};var He=r=>{var i=r,{address:o,programId:e,decimals:t}=i,n=ke(i,["address","programId","decimals"]);return C({chainId:101,address:nt(o).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},$t=o=>o?E(C({},o),{transferFeeConfigAuthority:o.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:o.withdrawWithheldAuthority.toBase58(),withheldAmount:o.withheldAmount.toString(),olderTransferFee:E(C({},o.olderTransferFee),{epoch:o.olderTransferFee.epoch.toString(),maximumFee:o.olderTransferFee.maximumFee.toString()}),newerTransferFee:E(C({},o.newerTransferFee),{epoch:o.newerTransferFee.epoch.toString(),maximumFee:o.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as or,ASSOCIATED_TOKEN_PROGRAM_ID as Am}from"@solana/spl-token";import{PublicKey as Ct,TransactionInstruction as Sn,SystemProgram as hm,SYSVAR_RENT_PUBKEY as ih}from"@solana/web3.js";var Si=V([D("instruction"),w("amountIn"),w("minAmountOut")]),Ki=V([D("instruction"),w("maxAmountIn"),w("amountOut")]),HA=V([D("instruction"),D("nonce")]),sm=V([D("instruction"),D("nonce"),w("startTime")]),so=V([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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),X(w(),3,"padding")]),ZA=V([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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),X(w(),64,"padding")]),Ci=V([D("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Ri=V([D("instruction"),w("amountIn")]);var ka=V([w("fee")]);import{PublicKey as am}from"@solana/web3.js";var xn=new am("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),on=5e4,um=V([w("x"),w("y"),w("price")]),cm=V([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),X(um,on,"DataElement")]);function lm(o,e){return[0,on-2]}function mm(o){return[0,on-2]}function dm(o){return[0,on-2]}function pm(o,e,t){let[n,r]=lm(e,t),i=n,s=r,a=0,u=e*o.multiplier/t;for(;i<=s;){if(a=Math.floor((s+i)/2),a===0||a>=on-2)return[a,a,!1];let c=o.DataElement[a].x*o.multiplier/o.DataElement[a].y,l=o.DataElement[a-1].x*o.multiplier/o.DataElement[a-1].y,m=o.DataElement[a+1].x*o.multiplier/o.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];i=a+1}}return[a,a,!1]}function Li(o,e,t){let[n,r,i]=pm(o,e,t);if(!i)return 0;if(n===r){let s=o.DataElement[n].x;return e*o.multiplier/s}else{let s=o.DataElement[n].x,a=o.DataElement[n].y,u=o.DataElement[r].x,c=o.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*o.multiplier*l/p}}function rn(o,e,t){return e*o.multiplier/t}function Ta(o,e,t){return e*t/o.multiplier}function fm(o,e){let[t,n]=mm(e),r=t,i=n,s=0,a=e;for(;r<i;){if(s=Math.floor((i+r)/2),s<=0||s>on-2)return[s,s,!1];let u=o.DataElement[s].x,c=o.DataElement[s-1].x,l=o.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)i=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];r=s+1}}return[s,s,!1]}function ym(o,e){let[t,n]=dm(e),r=t,i=n,s=0,a=e;for(;r<=i;){if(s=Math.floor((i+r)/2),s<=0||s>=on-2)return[s,s,!1];let u=o.DataElement[s].y,c=o.DataElement[s-1].y,l=o.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)r=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];i=s-1}}return[s,s,!1]}function Ia(o,e,t,n){let r=n?e+t:e-t,[i,s,a]=fm(o,r);if(!a)return[0,0,!1,a];if(i===s)return[o.DataElement[s].price,o.DataElement[s].y,!1,a];{let u=o.DataElement[i].x,c=o.DataElement[s].x,l=o.DataElement[i].price,m=o.DataElement[s].price,d=o.DataElement[i].y,p=o.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(r-u)*o.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*o.multiplier/l),[y,f,!1,a]}}}function bm(o,e,t,n){let r=n?e-t:e+t,[i,s,a]=ym(o,r);if(!a)return[0,0,!1,a];if(i===s)return[o.DataElement[s].price,o.DataElement[s].x,!1,a];{let u=o.DataElement[i].x,c=o.DataElement[s].x,l=o.DataElement[i].price,m=o.DataElement[s].price,d=o.DataElement[i].y,p=o.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-r)/o.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/o.multiplier),[y,f,!1,a]}}}function gm(o,e){let t=Ia(o,e,0,!1);return t[3]?t[0]:0}function Ba(o,e,t,n){let r=Li(o,e,t),i=rn(o,e,r),s=rn(o,t,r),a=rn(o,n,r),u=!0,[c,l,m,d]=Ia(o,i,a,u);if(!d)return 0;if(m)return n*o.multiplier/c;{let p=s-l;return Ta(o,p,r)}}function xa(o,e,t,n){let r=Li(o,e,t),i=rn(o,e,r),s=rn(o,t,r),a=rn(o,n,r),u=!1,[c,l,m,d]=bm(o,s,a,u);if(!d)return 0;if(m)return n*c/o.multiplier;{let p=i-l;return Ta(o,p,r)}}function wm(o){let e=cm.decode(o);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 Sa(o,e,t,n){let r=gm(o,rn(o,e,Li(o,e,t)))/o.multiplier;return n?r:1/r}var rr=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(xn);e&&(this._layoutData=wm(e==null?void 0:e.data))}}};var Ka=se("Raydium_liquidity_instruction");function Ca(o){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:i,fixedSide:s}=o,a=Buffer.alloc(Ci.span);Ci.encode({instruction:3,baseAmountIn:H(r),quoteAmountIn:H(i),fixedSide:s==="base"?at:xs},a);let u=[P({pubkey:or,isWritable:!1}),P({pubkey:new Ct(e.id)}),P({pubkey:new Ct(t.authority),isWritable:!1}),P({pubkey:new Ct(t.openOrders),isWritable:!1}),P({pubkey:new Ct(t.targetOrders)}),P({pubkey:new Ct(e.lpMint.address)}),P({pubkey:new Ct(t.vault.A)}),P({pubkey:new Ct(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(P({pubkey:xn})),u.push(P({pubkey:new Ct(e.marketId),isWritable:!1}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:new Ct(t.marketEventQueue),isWritable:!1})),new Sn({programId:new Ct(e.programId),keys:u,data:a})}function Oi(o){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=o,i=Ee(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Ri.span);Ri.encode({instruction:4,amountIn:H(r)},a);let u=[P({pubkey:or,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders}),P({pubkey:i.targetOrders}),P({pubkey:i.mintLp.address}),P({pubkey:i.vault.A}),P({pubkey:i.vault.B})];return s===5?u.push(P({pubkey:xn})):(u.push(P({pubkey:i.id})),u.push(P({pubkey:i.id}))),u.push(P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId}),P({pubkey:i.marketBaseVault}),P({pubkey:i.marketQuoteVault}),P({pubkey:i.marketAuthority,isWritable:!1}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:i.marketEventQueue}),P({pubkey:i.marketBids}),P({pubkey:i.marketAsks})),new Sn({programId:i.programId,keys:u,data:a})}return new Sn({programId:i.programId,keys:[]})}function Ra({programId:o,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,coinMint:i,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:A,coinAmount:k,pcAmount:B,ammConfigId:T,feeDestinationId:S}){let x=V([D("instruction"),D("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),R=[{pubkey:or,isSigner:!1,isWritable:!1},{pubkey:Am,isSigner:!1,isWritable:!1},{pubkey:hm.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,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:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],I=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:B},I),{instruction:new Sn({keys:R,programId:o,data:I}),instructionType:v.AmmV4CreatePool}}function Pm({poolKeys:o,userKeys:e,amountIn:t,minAmountOut:n},r){let i=Ee(o),s=Buffer.alloc(Si.span);Si.encode({instruction:9,amountIn:H(t),minAmountOut:H(n)},s);let a=[P({pubkey:or,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders})];return r===4&&a.push(P({pubkey:i.targetOrders})),a.push(P({pubkey:i.vault.A}),P({pubkey:i.vault.B})),r===5&&a.push(P({pubkey:xn})),a.push(P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId}),P({pubkey:i.marketBids}),P({pubkey:i.marketAsks}),P({pubkey:i.marketEventQueue}),P({pubkey:i.marketBaseVault}),P({pubkey:i.marketQuoteVault}),P({pubkey:i.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1})),new Sn({programId:i.programId,keys:a,data:s})}function km({poolKeys:o,userKeys:e,maxAmountIn:t,amountOut:n},r){let i=Ee(o),s=Buffer.alloc(Ki.span);Ki.encode({instruction:11,maxAmountIn:H(t),amountOut:H(n)},s);let a=[P({pubkey:or,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders}),P({pubkey:i.targetOrders}),P({pubkey:i.vault.A}),P({pubkey:i.vault.B})];return r===5&&a.push(P({pubkey:xn})),a.push(P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId}),P({pubkey:i.marketBids}),P({pubkey:i.marketAsks}),P({pubkey:i.marketEventQueue}),P({pubkey:i.marketBaseVault}),P({pubkey:i.marketQuoteVault}),P({pubkey:i.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Sn({programId:i.programId,keys:a,data:s})}function ao(o){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:i,fixedSide:s}=o;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pm(E(C({},a),{amountIn:r,minAmountOut:i}),t);if(s==="out")return km(E(C({},a),{maxAmountIn:r,amountOut:i}),t);Ka.logWithError("invalid params","params",o)}throw Ka.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as We,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as Ya}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as Tt,SystemProgram as Kn,Keypair as Wi}from"@solana/web3.js";import Qa from"bn.js";import Lm from"bn.js";function uo(o){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,o,!1),new Uint8Array(e)}function Ni(o,e){let t=0;for(let n=o-1;n>=0&&!e.testn(n);n--)t++;return t}function Mi(o,e){let t=0;for(let n=0;n<o&&!e.testn(n);n++)t++;return t}function ir(o,e){for(let t=0;t<o;t++)if(e.testn(t))return!1;return!0}function La(o,e){return ir(o,e)?null:Ni(o,e)}function Oa(o,e){return ir(o,e)?null:Mi(o,e)}var Ah=Buffer.from("amm_config","utf8"),Tm=Buffer.from("pool","utf8"),Im=Buffer.from("pool_vault","utf8"),Bm=Buffer.from("pool_reward_vault","utf8"),Na=Buffer.from("position","utf8"),xm=Buffer.from("tick_array","utf8"),Sm=Buffer.from("operation","utf8"),Km=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ma(o,e,t,n){return le([Tm,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function _i(o,e,t){return le([Im,e.toBuffer(),t.toBuffer()],o)}function _a(o,e,t){return le([Bm,e.toBuffer(),t.toBuffer()],o)}function ye(o,e,t){return le([xm,e.toBuffer(),uo(t)],o)}function sn(o,e,t,n){return le([Na,e.toBuffer(),uo(t),uo(n)],o)}function lt(o,e){return le([Na,e.toBuffer()],o)}function co(o){return le([Buffer.from("metadata","utf8"),hn.toBuffer(),o.toBuffer()],hn)}function sr(o){return le([Sm],o)}function ot(o,e){return le([Km,e.toBuffer()],o)}import mt from"bn.js";var Be=new mt(0),it=new mt(1),Vt=new mt(-1),st=new mt(1).shln(64),lo=new mt(1).shln(128),Vi=st.sub(it),ar=64,Va=lo.subn(1),Xe=-443636,Ze=-Xe,Rt=new mt("4295048016"),Lt=new mt("79226673521066979257578248091"),mo=new mt("4295048017"),po=new mt("79226673521066979257578248090"),va=16,Ea="59543866431248",Fa="184467440737095516",Da="15793534762490258745",fo=new mt(10).pow(new mt(6));var Wa={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:[]},kh=new mt("18446744073700000000");var Cm=15,ae=class{static async getTickArrays(e,t,n,r,i,s,a){let u=[],c=Q.getTickArrayStartIndexByTick(r,i),l=Q.getInitializedTickArrayInRange(s,a,i,c,Math.floor(Cm/2));for(let p=0;p<l.length;p++){let{publicKey:y}=ye(t,n,l[p]);u.push(y)}let m=(await gt(e,u)).map(p=>p!==null?ur.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=E(C({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,i,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,i,s);for(;a==null||a.liquidityGross.lten(0);){if(c=Q.getNextTickArrayStartIndex(c,i,s),this.checkIsValidStartIndex(c,i))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,i){let s=Math.floor(e/ae.tickCount(t)),a=n?Q.searchLowBitFromStart(r,i,s-1,1,t):Q.searchHightBitFromStart(r,i,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let i;if(r){let a=Oe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){i=u;break}a=a-1}}else{let a=0;for(;a<Oe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){i=u;break}a=a+1}}let{publicKey:s}=ye(e,t,n.startTickIndex);return{nextTick:i,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,i,s){let a=Q.getTickArrayStartIndexByTick(r,i),u=Math.floor((r-a)/i),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Oe;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=ye(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(Q.checkIsOutOfBoundary(e)){if(e>Ze)return!1;let n=Q.getTickArrayStartIndexByTick(Xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Oe*e}};import oe from"bn.js";import{PublicKey as kt}from"@solana/web3.js";import xe from"bn.js";var vi=14,vt=class{static maxTickInTickarrayBitmap(e){return e*Oe*an}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let i=n*r;return e<0?{minValue:-i,maxValue:-i+n}:{minValue:i,maxValue:i+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!ae.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let i=this.maxTickInTickarrayBitmap(n),s=r?t-ae.tickCount(n):t+ae.tickCount(n);if(s<-i||s>=i)return{isInit:!1,tickIndex:t};let a=n*Oe,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=La(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-i}}else{let l=e.shrn(c),m=Oa(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:i-ae.tickCount(n)}}}},cr=class{static getBitmapOffset(e,t){if(!ae.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(Ze<=t)throw Error(`extensionTickBoundary check error: ${Ze}, ${t}`);if(n<=Xe)throw Error(`extensionTickBoundary check error: ${n}, ${Xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),i=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:Q.mergeTickArrayBitmap(r).testn(i),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let i=ae.tickCount(t),s=n?e-i:e+i,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:i,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=Q.mergeTickArrayBitmap(e).shln(an-1-a),c=ir(512,u)?null:Ni(512,u);if(c!==null){let l=t-c*ae.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i}}else{let u=Q.mergeTickArrayBitmap(e).shrn(a),c=ir(512,u)?null:Mi(512,u);if(c!==null){let l=t+c*ae.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ae.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),r=Math.floor(n/ae.tickCount(t));return e<0&&n!=0&&(r=an-r),r}};import Ot from"bn.js";var lr=class{static getfeeGrowthInside(e,t,n){let r=new Ot(0),i=new Ot(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),i=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ot(0),a=new Ot(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=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,st),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,st),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,st),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,st),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let i=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,st),d=c.rewardAmountOwed.add(m);i.push(d)}return i}static GetPositionRewards(e,t,n,r){let i=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,st),d=c.rewardAmountOwed.add(m);i.push(d)}return i}static getRewardGrowthInside(e,t,n,r){let i=[];for(let s=0;s<r.length;s++){let a=new Ot(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ot(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(te.wrappingSubU128(te.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return i}static getRewardGrowthInsideV2(e,t,n,r){let i=[];for(let s=0;s<r.length;s++){let a=new Ot(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ot(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(te.wrappingSubU128(te.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return i}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:i,epochInfo:s}){var b,g,h,A;let a=re.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),u=re.getSqrtPriceX64FromTick(t.tickLower),c=re.getSqrtPriceX64FromTick(t.tickUpper),l=i?1+r:1-r,m=ce.getAmountsFromLiquidity(a,u,c,n,i),[d,p]=[we(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),we(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[we(new Ot(new _(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),we(new Ot(new _(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as qa}from"@solana/spl-token";var Se=class{static getOutputAmountAndRemainAccounts(e,t,n,r,i,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:b}=un.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,i,s);return u.push(...y),{allTrade:d,expectedAmountOut:p.mul(Vt),remainingAccounts:u,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,i){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}=ye(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=un.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Vt),c,i);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Se.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?cr.checkTickArrayIsInit(ae.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):Q.checkTickArrayIsInitialized(Q.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ye(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:i,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ae.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(i){let{publicKey:a}=ye(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/ae.tickCount(e.tickSpacing)),r=t?Q.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):Q.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ae.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:i}=vt.nextInitializedTickArrayStartIndex(Q.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:i};t=i;let{isInit:s,tickIndex:a}=cr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Xe||t>Ze)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:i}){var a,u,c;let s=[];for(let l=0;l<i.length;l++){let m=i[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=E(C({},m),{perSecond:te.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new kt(d)});if(p.tokenMint.equals(kt.default))continue;if(n<=p.openTime.toNumber()||r.eq(Be)){s.push(p);continue}let y=new xe(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=te.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=te.mulDivFloor(f,p.emissionsPerSecondX64,st),A=p.rewardTotalEmissioned.add(h);s.push(E(C({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let i of t){let s=Q.getTickArrayStartIndexByTick(i,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>Ze&&(t=ae.getArrayStartIndex(Ze,e)+ae.tickCount(e)),n<Xe&&(n=ae.getArrayStartIndex(Xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ae.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ae.tickCount(t)*an}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Ne(e,t.map(s=>({pubkey:s})),{batchRequest:n}),i={};for(let s of r)s.accountInfo!==null&&(i[s.pubkey.toString()]=Ga.decode(s.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},i=[];for(let u of t){let c=Q.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=Q.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=ye(u.programId,u.id,m);i.push({pubkey:d}),r[d.toString()]=u.id}}let s=await Ne(e,i,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=ur.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=E(C({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:i=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(lt(p,d).publicKey);let l=await gt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=yo.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=Q._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=Q._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:k,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>E(C({},x),{pendingReward:new xe(0)})),leverage:B,tokenFeeAmountA:new xe(0),tokenFeeAmountB:new xe(0)}];let T=await Q.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await Q.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(i){let d=Object.values(m),p=await gt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=ur.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],B=y[m[A].toString()],T=k.ticks[Q.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=B.ticks[Q.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await lr.GetPositionFees(f,g,T,S),I=await lr.GetPositionRewards(f,g,T,S);g.tokenFeeAmountA=x.gte(new xe(0))?x:new xe(0),g.tokenFeeAmountB=R.gte(new xe(0))?R:new xe(0);for(let L=0;L<I.length;L++)g.rewardInfos[L].pendingReward=I[L].gte(new xe(0))?I[L]:new xe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:i,slippage:s,priceLimit:a=new _(0),catchLiquidityInsufficient:u=!1}){var U;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new _(0))?c=l?Rt.add(new xe(1)):Lt.sub(new xe(1)):c=re.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=we(i,m,r,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:h}=Se.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((U=p.fee)!=null?U:Be),c,u),A=we(f,d,r,!1),k=re.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),B=l?k:new _(1).div(k),T=f.mul(new xe(Math.floor((1-s)*1e10))).div(new xe(1e10)),S=we(T,d,r,!1),x=l?e.currentPrice:new _(1).div(e.currentPrice),R=new _(B).sub(x).abs(),I=x,L=new Qe(new _(R).mul(10**15).toFixed(0),new _(I).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:xt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:L,fee:h,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:i,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=r.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new he(E(C({},c),{mint:c.address,isToken2022:c.programId===qa.toBase58()})),new he(E(C({},l),{mint:l.address,isToken2022:l.programId===qa.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:h,executionPrice:A,priceImpact:k,fee:B,remainingAccounts:T,executionPriceX64:S}=Se.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new kt(c.address),amountIn:n,slippage:i,epochInfo:s,catchLiquidityInsufficient:a}),x=E(C({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),R=E(C({},f),{amount:new fe(d,f.amount),fee:f.fee===void 0?void 0:new fe(d,f.fee)}),I=E(C({},b),{amount:new fe(d,b.amount),fee:b.fee===void 0?void 0:new fe(d,b.fee)}),L=new Je({baseToken:m,denominator:new xe(10).pow(new xe(20+m.decimals)),quoteToken:d,numerator:h.mul(new _(10**(20+d.decimals))).toFixed(0)}),U=new Je({baseToken:m,denominator:new xe(10).pow(new xe(20+m.decimals)),quoteToken:d,numerator:A.mul(new _(10**(20+d.decimals))).toFixed(0)}),F=new fe(m,B);return{allTrade:p,realAmountIn:x,amountOut:R,minAmountOut:I,expirationTime:g,currentPrice:L,executionPrice:U,priceImpact:k,fee:F,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,b;let i=e[t],s=Q.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=Q.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,i.priceMin),l=Math.min(a,i.priceMax)-u,m=a-s,d=i.priceMax-i.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:i.feeApr*p,rewardsApr:[((y=i.rewardApr[0])!=null?y:0)*p,((f=i.rewardApr[1])!=null?f:0)*p,((b=i.rewardApr[2])!=null?b:0)*p],apr:i.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:i,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[nt(e.mintA.address).toString()],d=r[nt(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=re.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),b=re.getSqrtPriceX64FromTick(s),g=re.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:B}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,i,!1,!1,0),T=new _(h.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(A.toString()).div(new _(10).pow(y)).mul(d.value)),S=new _(k.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(B.toString()).div(new _(10).pow(y)).mul(d.value)),x=new _(1).div(T.add(S)),I=new _(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),L=3600*24*365,U=e.rewardDefaultInfos.map(F=>{var W,Ye;let J=F.mint.decimals,G=r[F.mint.address];return u<((W=F.startTime)!=null?W:0)||u>((Ye=F.endTime)!=null?Ye:0)||!F.perSecond||!G||J===void 0?0:new _(G.value).mul(new _(F.perSecond).mul(L)).div(new _(10).pow(J)).mul(x).mul(100).toNumber()});return{feeApr:I,rewardsApr:U,apr:I+U.reduce((F,J)=>F+J,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:i,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=re.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),m=re.getSqrtPriceX64FromTick(n),d=re.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=we(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new xe(new _(y.amount.sub((h=y.fee)!=null?h:Be).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new xe(0);else if(l.lte(d)){let A=ce.getLiquidityFromTokenAmountA(l,d,f,!a),k=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:k}else b=t?new xe(0):ce.getLiquidityFromTokenAmountB(m,d,f);return Se.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:i,slippage:s,add:a}){var b,g,h,A;let u=re.getSqrtPriceX64FromTick(n),c=re.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(re.priceToSqrtPriceX64(new _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,i,a),[d,p]=[we(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),we(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[we(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),we(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:i,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:xt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(u=>!n[u.id]).map(u=>new kt(u.id));(await gt(e,r)).forEach((u,c)=>{!u||(n[r[c].toBase58()]=cn.decode(u.data))});let s=t.map(u=>ot(new kt(u.programId),new kt(u.id)).publicKey),a=await Se.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>E(C({},u),{[c.id]:E(C({},n[c.id]),{id:new kt(c.id),version:6,programId:new kt(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:E(C({},c.config),{id:new kt(c.config.id),fundOwner:""}),currentPrice:new _(c.price),exBitmapInfo:a[ot(new kt(c.programId),new kt(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var Ei={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Ua(o){return E(C({},o),{type:"Concentrated",programId:o.programId.toString(),id:o.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:o.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:o.ammConfig.tradeFeeRate,openTime:o.startTime.toString(),tvl:0,day:Ei,week:Ei,month:Ei,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,config:E(C({},o.ammConfig),{id:o.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var te=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),i=r.div(n);return r.mod(n).eq(Be)||(i=i.add(it)),i}static mulDivFloor(e,t,n){if(n.eq(Be))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(Be))throw new Error("division by 0");return e.mul(t).add(n.sub(it)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new oe(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(lo).sub(t).mod(lo)}};function Me(o,e){return Fi(o.mul(e),64,256)}function Rm(o,e,t){let n=o.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Fi(o,e,t){let n=o.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var re=class{static sqrtPriceX64ToPrice(e,t,n){return te.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return te.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(Be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Be))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(Be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Be))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(Be))return e;let i=t.shln(ar);if(r){let s=i,a=i.add(n.mul(e));return a.gte(s)?te.mulDivCeil(s,e,a):te.mulDivRoundingUp(s,it,s.div(e).add(n))}else{let s=n.mul(e);if(!i.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=i.sub(s);return te.mulDivCeil(i,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let i=n.shln(ar);if(r)return e.add(i.div(t));{let s=te.mulDivRoundingUp(i,it,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<Xe||e>Ze)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new oe("18445821805675395072"):new oe("18446744073709551616");return(t&2)!=0&&(n=Me(n,new oe("18444899583751176192"))),(t&4)!=0&&(n=Me(n,new oe("18443055278223355904"))),(t&8)!=0&&(n=Me(n,new oe("18439367220385607680"))),(t&16)!=0&&(n=Me(n,new oe("18431993317065453568"))),(t&32)!=0&&(n=Me(n,new oe("18417254355718170624"))),(t&64)!=0&&(n=Me(n,new oe("18387811781193609216"))),(t&128)!=0&&(n=Me(n,new oe("18329067761203558400"))),(t&256)!=0&&(n=Me(n,new oe("18212142134806163456"))),(t&512)!=0&&(n=Me(n,new oe("17980523815641700352"))),(t&1024)!=0&&(n=Me(n,new oe("17526086738831433728"))),(t&2048)!=0&&(n=Me(n,new oe("16651378430235570176"))),(t&4096)!=0&&(n=Me(n,new oe("15030750278694412288"))),(t&8192)!=0&&(n=Me(n,new oe("12247334978884435968"))),(t&16384)!=0&&(n=Me(n,new oe("8131365268886854656"))),(t&32768)!=0&&(n=Me(n,new oe("3584323654725218816"))),(t&65536)!=0&&(n=Me(n,new oe("696457651848324352"))),(t&131072)!=0&&(n=Me(n,new oe("26294789957507116"))),(t&262144)!=0&&(n=Me(n,new oe("37481735321082"))),e>0&&(n=Va.div(n)),n}static getTickFromPrice(e,t,n){return re.getTickFromSqrtPriceX64(re.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Lt)||e.lt(Rt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new oe(t-64),r=Rm(n,32,128),i=new oe("8000000000000000","hex"),s=0,a=new oe(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new oe(0))&&s<va;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(i.mul(y)),i=i.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new oe(Ea)),d=Fi(m.sub(new oe(Fa)),64,128).toNumber(),p=Fi(m.add(new oe(Da)),64,128).toNumber();return d==p?d:re.getSqrtPriceX64FromTick(p).lte(e)?p:d}},ln=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=re.getTickFromSqrtPriceX64(re.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let i=ln.getTickWithPriceAndTickspacing(e,t,n,r),s=re.getSqrtPriceX64FromTick(i);return re.sqrtPriceX64ToPrice(s,n,r)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(Be))throw new Error("sqrtPriceX64A must greater than 0");let i=n.ushln(ar),s=t.sub(e);return r?te.mulDivRoundingUp(te.mulDivCeil(i,s,t),it,e):te.mulDivFloor(i,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(Be))throw new Error("sqrtPriceX64A must greater than 0");return r?te.mulDivCeil(n,t.sub(e),st):te.mulDivFloor(n,t.sub(e),st)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let i=n.mul(e).mul(t),s=t.sub(e),a=i.div(s);return r?te.mulDivRoundingUp(a,it,Vi):a.shrn(ar)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),te.mulDivFloor(n,Vi,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,r,!1),a=ce.getLiquidityFromTokenAmountB(t,e,i);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,i)}static getAmountsFromLiquidity(e,t,n,r,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,r,i),amountB:new oe(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,r,i),a=ce.getTokenAmountBFromLiquidity(t,e,r,i);return{amountA:s,amountB:a}}else return{amountA:new oe(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,r,i)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,i,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,r,s),l=i?1+a:1-a,m=new oe(new _(u.toString()).mul(l).toFixed(0)),d=new oe(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:i,add:s,epochInfo:a,amountAddFee:u}){var h,A,k,B;let c=re.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=re.getSqrtPriceX64FromTick(t),m=re.getSqrtPriceX64FromTick(n),d=s?1+i:1-i,p=ce.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[we(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),we(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[we(new oe(new _(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),we(new oe(new _(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:xt(y.expirationTime,f.expirationTime)}}},un=class{static swapCompute(e,t,n,r,i,s,a,u,c,l,m,d,p,y,f=!1){if(d.eq(Be))throw new Error("amountSpecified must not be 0");if(y||(y=s?Rt.add(it):Lt.sub(it)),s){if(y.lt(Rt))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(Lt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let b=d.gt(Be),g={amountSpecifiedRemaining:d,amountCalculated:Be,sqrtPriceX64:m,tick:c>p?Math.min(p+ae.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new oe(0)},h=p,A=n[p],k=0,B=!s&&A.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(Be)&&!g.sqrtPriceX64.eq(y);){k>10;let T={};T.sqrtPriceStartX64=g.sqrtPriceX64;let S=Q.nextInitTick(A,g.tick,l,s,B),x=S||null,R=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let L=Se.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:i},h,s);if(!L.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}h=L.nextStartIndex;let{publicKey:U}=ye(e,t,h);R=U,A=n[h];try{x=Q.firstInitializedTick(A,s)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==h&&R&&(g.accounts.push(R),p=h),T.tickNext<Xe?T.tickNext=Xe:T.tickNext>Ze&&(T.tickNext=Ze),T.sqrtPriceNextX64=re.getSqrtPriceX64FromTick(T.tickNext);let I;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?I=y:I=T.sqrtPriceNextX64,[g.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=un.swapStepCompute(g.sqrtPriceX64,I,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(T.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),g.amountCalculated=g.amountCalculated.sub(T.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(T.amountOut),g.amountCalculated=g.amountCalculated.add(T.amountIn.add(T.feeAmount))),g.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let L=x.liquidityNet;s&&(L=L.mul(Vt)),g.liquidity=ce.addDelta(g.liquidity,L)}B=T.tickNext!=g.tick&&!s&&A.startTickIndex===T.tickNext,g.tick=s?T.tickNext-1:T.tickNext}else if(g.sqrtPriceX64!=T.sqrtPriceStartX64){let L=re.getTickFromSqrtPriceX64(g.sqrtPriceX64);B=L!=g.tick&&!s&&A.startTickIndex===L,g.tick=L}++k}try{let{nextStartIndex:T,isExist:S}=ae.nextInitializedTickArray(g.tick,l,s,r,i);S&&p!==T&&(g.accounts.push(ye(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:Be,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,i){let s={sqrtPriceX64Next:new oe(0),amountIn:new oe(0),amountOut:new oe(0),feeAmount:new oe(0)},a=e.gte(t),u=r.gte(Be);if(u){let l=te.mulDivFloor(r,fo.sub(new oe(i.toString())),fo);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=re.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Vt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=re.getNextSqrtPriceX64FromOutput(e,n,r.mul(Vt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Vt))&&(s.amountOut=r.mul(Vt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=te.mulDivCeil(s.amountIn,new oe(i),fo.sub(new oe(i))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Oe=60,an=512,Q=class{static getTickArrayAddressByTick(e,t,n,r){let i=Q.getTickArrayStartIndexByTick(n,r),{publicKey:s}=ye(e,t,i);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=Q.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Oe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=ae.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ae.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Oe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Oe,i=Math.floor(t/r)+512,s=Math.abs(i);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Oe:e+t*Oe}static mergeTickArrayBitmap(e){let t=new Lm(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,i){let s=Math.floor(r/(n*Oe));return[...Q.searchLowBitFromStart(e,t,s-1,i,n),...Q.searchHightBitFromStart(e,t,s,i,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return Q.searchHightBitFromStart(e,t,0,an,n)}static getAllInitializedTickArrayInfo(e,t,n,r,i){let s=[],a=Q.getAllInitializedTickArrayStartIndex(n,r,i);for(let u of a){let{publicKey:c}=ye(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Q.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=ae.tickCount(i);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Q.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=ae.tickCount(i);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Xe||e>Ze}static nextInitTick(e,t,n,r,i){if(ae.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(i||(a=a+1);a<Oe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Oe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Oe;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=re.getSqrtPriceX64FromTick(t),i=re.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(i),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),i=ln.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=re.getSqrtPriceX64FromTick(i),a=re.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new _(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=re.getSqrtPriceX64FromTick(t),i=re.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(i),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),i=ln.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=re.getSqrtPriceX64FromTick(i),a=re.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new _(1).div(a)}}};var Xa=V([pe(8),D("bump"),St("index"),K(""),je("protocolFeeRate"),je("tradeFeeRate"),St("tickSpacing"),X(w(),8,"")]),Om=V([je("blockTimestamp"),Y("sqrtPriceX64"),Y("cumulativeTimePriceX64"),X(Y(),1,"")]),Di=V([pe(8),Ue("initialized"),K("poolId"),X(Om,1e3,"observations"),X(Y(),5,"")]),Nm=V([D("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Y("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),Y("rewardGrowthGlobalX64")]),cn=V([pe(8),D("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),D("mintDecimalsA"),D("mintDecimalsB"),St("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),De("tickCurrent"),St("observationIndex"),St("observationUpdateDuration"),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Y("swapInAmountTokenA"),Y("swapOutAmountTokenB"),Y("swapInAmountTokenB"),Y("swapOutAmountTokenA"),D("status"),X(D(),7,""),X(Nm,3,"rewardInfos"),X(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),X(w(),15*4-3,"padding")]),Mm=V([Y("growthInsideLastX64"),w("rewardAmountOwed")]),yo=V([pe(8),D("bump"),K("nftMint"),K("poolId"),De("tickLower"),De("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(Mm,3,"rewardInfos"),X(w(),8,"")]),RP=V([pe(8),D("bump"),K("poolId"),De("tickLowerIndex"),De("tickUpperIndex"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(Y(),3,"rewardGrowthInside"),X(w(),8,"")]),_m=V([De("tick"),Js("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),X(Y(),3,"rewardGrowthsOutsideX64"),X(je(),13,"")]),ur=V([pe(8),K("poolId"),De("startTickIndex"),X(_m,Oe,"ticks"),D("initializedTickCount"),X(D(),115,"")]),za=V([pe(329),X(K(),100,"whitelistMints")]),Ga=V([pe(8),K("poolId"),X(X(w(),8),vi,"positiveTickArrayBitmap"),X(X(w(),8),vi,"negativeTickArrayBitmap")]);var ja=se("Raydium_Clmm"),It={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,r,i,s,a,u,c,l,m,d,p,y){let f=V([Y("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...It.createPool,...g]);return new Tt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:i,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ge({fromPublicKey:r,programId:n}),[d,p]=[new q(i.address),new q(s.address)],y=[Kn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Di.span),space:Di.span,programId:n})],{publicKey:f}=Ma(n,a,d,p),{publicKey:b}=_i(n,f,d),{publicKey:g}=_i(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new q(i.programId||We),p,g,new q(s.programId||We),ot(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,r,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,B,T,S,x,R,I){let L=V([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),Ue("withMetadata"),D("optionBaseFlag"),Ue("baseFlag")]),U=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Ya,isSigner:!1,isWritable:!1},{pubkey:hn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...U],J=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},J);let G=Buffer.from([...It.openPosition,...J]);return new Tt({keys:F,programId:e,data:G})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=Wi.generate();m.push(x),y=x.publicKey}let f=Q.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=Q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=ye(d,p,f),{publicKey:h}=ye(d,p,b),{publicKey:A}=Pe(n.wallet,y,We),{publicKey:k}=co(y),{publicKey:B}=lt(d,y),{publicKey:T}=sn(d,p,r,i),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),r,i,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:B,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=Wi.generate();m.push(x),y=x.publicKey}let f=Q.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=Q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=ye(d,p,f),{publicKey:h}=ye(d,p,b),{publicKey:A}=Pe(n.wallet,y,We),{publicKey:k}=co(y),{publicKey:B}=lt(d,y),{publicKey:T}=sn(d,p,r,i),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),r,i,f,b,c,s,a,u,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ot(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,B,T,S,x,R,I){let L=V([De("tickLowerIndex"),De("tickUpperIndex"),De("tickArrayLowerStartIndex"),De("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),Ue("withMetadata"),D("optionBaseFlag"),Ue("baseFlag")]),U=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Ya,isSigner:!1,isWritable:!1},{pubkey:hn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...U],J=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:new Qa(0),amountMaxA:S==="MintA"?x:R,amountMaxB:S==="MintA"?R:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},J);let G=Buffer.from([...It.openPosition,...J]);return new Tt({keys:F,programId:e,data:G})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new q((await l(1))[0]);else{let x=Wi.generate();d.push(x),m=x.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=Q.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=Q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=ye(p,y,f),{publicKey:h}=ye(p,y,b),{publicKey:A}=Pe(n.wallet,m,We),{publicKey:k}=co(m),{publicKey:B}=lt(p,m),{publicKey:T}=sn(p,y,r,i),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(t.mintA.address),new q(t.mintB.address),r,i,f,b,s,a,u,c,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ot(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,i){let s=V([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:We,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...It.closePosition,...u]);return new Tt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let i=new q(e.programId),{publicKey:s}=Pe(n.wallet,r.nftMint,We),{publicKey:a}=lt(i,r.nftMint),u=[];return u.push(this.closePositionInstruction(i,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[v.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,i,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=V([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),D("optionBaseFlag"),Ue("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...It.increaseLiquidity,...T]);return new Tt({keys:B,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:i,amountMaxA:s,amountMaxB:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ye(u,c,l),{publicKey:p}=ye(u,c,m),{publicKey:y}=Pe(r.wallet,n.nftMint,We),{publicKey:f}=lt(u,n.nftMint),{publicKey:b}=sn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ot(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,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:r,base:i,baseAmount:s,otherAmountMax:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ye(u,c,l),{publicKey:p}=ye(u,c,m),{publicKey:y}=Pe(r.wallet,n.nftMint,We),{publicKey:f}=lt(u,n.nftMint),{publicKey:b}=sn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ot(u,c).publicKey:void 0)],signers:[],instructionTypes:[v.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,i,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=V([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),D("optionBaseFlag"),Ue("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=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},T);let S=Buffer.from([...It.increaseLiquidity,...T]);return new Tt({keys:B,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,r,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=V([Y("liquidity"),w("amountMinA"),w("amountMinB")]),B=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:Or,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...B],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let x=Buffer.from([...It.decreaseLiquidity,...S]);return new Tt({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:i,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new q(e.programId),new q(e.id)],m=Q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=Q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ye(c,l,m),{publicKey:y}=ye(c,l,d),{publicKey:f}=Pe(r.wallet,n.nftMint,u),{publicKey:b}=lt(c,n.nftMint),{publicKey:g}=sn(c,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new q(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new q(e.rewardDefaultInfos[k].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),h,i,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ot(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[v.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,i,s,a,u,c,l,m,d,p,y,f,b,g){let h=V([w("amount"),w("otherAmountThreshold"),Y("sqrtPriceLimitX64"),Ue("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:Or,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],B=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},B);let T=Buffer.from([...It.swap,...B]);return new Tt({keys:k,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:i,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new q(e.programId),new q(e.id)],[d,p]=[new q(t.vault.A),new q(t.vault.B)],[y,f]=[new q(e.mintA.address),new q(e.mintB.address)],b=e.mintA.address===i.toString(),g=[this.swapInstruction(l,r.wallet,m,new q(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,ot(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[v.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,i,s,a,u,c,l,m,d){let p=V([w("openTime"),w("endTime"),Y("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:H(l),endTime:H(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...It.initReward,...f]);return new Tt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[i,s]=[new q(e.programId),new q(e.id)],a=_a(i,s,r.mint).publicKey,u=sr(i).publicKey,c=[this.initRewardInstruction(i,n.wallet,s,u,new q(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[v.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,i,s,a,u,c,l,m,d){let p=V([D("rewardIndex"),Y("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:H(l),endTime:H(m)},f);let b=Buffer.from([...It.setRewardEmissions,...f]);return new Tt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[i,s]=[new q(e.programId),new q(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new q(t.rewardInfos[d].vault),c=new q(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=sr(i).publicKey,m=[this.setRewardInstruction(i,n.wallet,s,l,new q(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[v.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,i,s,a){let u=V([D("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:We,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:Or,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...It.collectReward,...l]);return new Tt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[i,s]=[new q(e.programId),new q(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new q(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(i,n.wallet,s,n.tokenAccount,u,r,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:r,amountOut:i,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new q(e.programId),new q(e.id)],[m,d]=[new q(t.vault.A),new q(t.vault.B)],[p,y]=[new q(e.mintA.address),new q(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new q(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,i,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[v.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Em}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";import{PublicKey as Vm}from"@solana/web3.js";import Ha from"bn.js";var Za=new Ha(25),$a=new Ha(1e4);var vm=se("Raydium_liquidity_serum");function Ja({programId:o,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let i=t.concat(Buffer.from([n]),Buffer.alloc(7));r=Vm.createProgramAddressSync(i,o)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:r,nonce:n}}throw vm.logWithError("unable to find a viable program address nonce","params",{programId:o,marketId:e}),new Error("unable to find a viable program address nonce")}import dk from"bn.js";function bo({programId:o}){let{publicKey:e}=le([Buffer.from("amm_config_account_seed","utf-8")],o);return e}function mn({name:o,programId:e,marketId:t}){let{publicKey:n}=le([e.toBuffer(),t.toBuffer(),Buffer.from(o,"utf-8")],e);return n}function Dm({programId:o,marketId:e}){let{publicKey:t}=le([o.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],o);return t}function Ui({programId:o}){return le([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],o)}function eu({version:o,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:i,quoteDecimals:s,programId:a,marketProgramId:u}){let c=mn({name:"amm_associated_seed",programId:a,marketId:t}),l=mn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ui({programId:a}),p=mn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=mn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=mn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Dm({programId:a,marketId:t}),g=mn({name:"target_associated_seed",programId:a,marketId:t}),h=mn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=Ja({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:i,quoteDecimals:s,lpDecimals:i,version:o,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Em.default,configId:bo({programId:a})}}var qi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},go=o=>{let e={},t=Fm.toBase58();return Object.keys(o).map(n=>{let r=o[n],[i,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:He({address:i,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:He({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new _(r.mintAAmount.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new _(r.mintBAmount.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new _(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:qi,week:qi,month:qi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:bo({programId:r.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:He({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import tt from"bn.js";var mr=class extends Te{constructor(t){super(t);this.stableLayout=new rr({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:i}){let s=new tt(new _(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=io(t[i?"mintB":"mintA"]),[u,c]=[new tt(new _(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new tt(new _(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new tt(new _(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",i?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",i?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=i?"base":"quote";this.logDebug("input side:",m);let d=at;s.isZero()||(d=m==="base"?vr(s.mul(c),u):vr(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=vr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Qe(new tt(1)).add(r).mul(d).quotient,b=new fe(a,d),g=new fe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:r,amountInA:i,amountInB:s,fixedSide:a,config:u,txVersion:c,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",s),(i.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[y,f]=[i.token,s.token],b=await m.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1}),g=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let h=await m.getCreatedTokenAccount({mint:new Ce(n.lpMint.address)}),A=[y,f],k=[b,g],B=[i.raw,s.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",S="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",a),T==="quote"?(A.reverse(),k.reverse(),B.reverse(),S=a==="a"?"quote":"base"):T==="base"&&(S=a==="a"?"base":"quote");let[x,R]=A,[I,L]=k,[U,F]=B,J=r!=null?r:await this.getAmmPoolKeys(n.id),G=this.createTxBuilder(),Nt=await m.handleTokenAccount({side:"in",amount:U,mint:x.mint,tokenAccount:I,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:W}=Nt,Ye=ke(Nt,["tokenAccount"]);G.addInstruction(Ye);let gn=await m.handleTokenAccount({side:"in",amount:F,mint:R.mint,tokenAccount:L,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:yn}=gn,en=ke(gn,["tokenAccount"]);G.addInstruction(en);let Tr=await m.handleTokenAccount({side:"out",amount:0,mint:new Ce(n.lpMint.address),tokenAccount:h,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:Dt}=Tr,bn=ke(Tr,["tokenAccount"]);return G.addInstruction(bn),G.addInstruction({instructions:[Ca({poolInfo:n,poolKeys:J,userKeys:{baseTokenAccount:W,quoteTokenAccount:yn,lpTokenAccount:Dt,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:F,fixedSide:S})],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5AddLiquidity:v.AmmV4AddLiquidity],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),G.addCustomComputeBudget(l),c===0&&await G.buildV0(),G.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:r,amountIn:i,config:s,txVersion:a,computeBudgetConfig:u}=t,c=r!=null?r:await this.getAmmPoolKeys(n.id),[l,m,d]=[new Ce(n.mintA.address),new Ce(n.mintB.address),new Ce(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,y=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});y||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),b=await p.getCreatedTokenAccount({mint:m}),g=this.createTxBuilder(),{bypassAssociatedCheck:h,checkCreateATAOwner:A}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:h,checkCreateATAOwner:A}),{tokenAccount:k}=x,B=ke(x,["tokenAccount"]);g.addInstruction(B);let R=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:b,bypassAssociatedCheck:h,checkCreateATAOwner:A}),{tokenAccount:T}=R,S=ke(R,["tokenAccount"]);return g.addInstruction(S),g.addInstruction({instructions:[Oi({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:y,baseTokenAccount:k,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(u),a===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:r,createPositionInfo:i,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=wo,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let b=this.createTxBuilder();b.addCustomComputeBudget(c);let g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||Pe(this.scope.ownerPubKey,W.accountInfo.mint,wo).publicKey.equals(W.pubkey))&&(g[W.accountInfo.mint.toString()]=W.pubkey);let h=g[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let A=r.add(a!=null?a:new tt(0)),k=t.mintA.address===he.WSOL.mint.toString(),B=t.mintB.address===he.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:wo,mint:new Ce(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:wo,mint:new Ce(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(R||{}),x===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=T,g[t.mintB.address]=x,s!==void 0&&!(a!=null&&a.isZero())){let W=ut[s.programId],Ye=ct({programId:new Ce(s.programId),poolId:new Ce(s.id),owner:this.scope.ownerPubKey,version:W}),yn,en=await this.scope.connection.getAccountInfo(Ye);if(en&&(yn=Zn(W).decode(en.data)),W!==6&&!yn){let{instruction:Wt,instructionType:No}=oo({id:new Ce(s.id),programId:new Ce(s.programId),version:W,ledger:Ye,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[Wt],instructionTypes:[No]})}let Dt=[];for(let Wt of s.rewardInfos){let No=Wt.mint.address===he.WSOL.mint.toString();if(g[Wt.mint.address])Dt.push(g[Wt.mint.address]);else{let{account:Ji,instructionParams:es}=await this.scope.account.getOrCreateTokenAccount({mint:new Ce(Wt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!No,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Ji||this.logAndCreateError("farm reward account not found:",Wt.mint.address),es&&b.addInstruction(es),Dt.push(Ji)}}let bn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],Nt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:bn,lpAccount:h,rewardAccounts:Dt},gn=ut[s.programId],Tr=gn===6?$n(Nt):gn===5?Jn(Nt):er(Nt),Ku={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};b.addInstruction({instructions:[Tr],instructionTypes:[Ku[gn]]})}let I=await this.getAmmPoolKeys(t.id),L=Oi({poolInfo:t,poolKeys:I,userKeys:{lpTokenAccount:h,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:A});b.addInstruction({instructions:[L],instructionTypes:[t.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]});let[U,F]=t.mintA.address===n.mintA.address?[T,x]:[x,T],J=await this.scope.clmm.getClmmPoolKeys(t.id),G=await Ie.openPositionFromBaseInstructions(E(C({poolInfo:n,poolKeys:J,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:F},withMetadata:"create"},i),{base:u,getEphemeralSigners:y}));return b.addInstruction({instructions:[...G.instructions],signers:G.signers,instructionTypes:[...G.instructionTypes],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,quoteMintInfo:i,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var U;let b=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),g=c.useSOLBalance&&r.mint.equals(tu),h=c.useSOLBalance&&i.mint.equals(tu),A=this.createTxBuilder(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(B||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),k===void 0||T===void 0)throw Error("you don't has some token account");let x=eu({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:i.mint,baseDecimals:r.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),R={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:I,instructionType:L}=Ra(E(C({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:T,userLpVault:Pe(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[I],instructionTypes:[L]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:R}})}async getCreatePoolFee({programId:t}){let n=bo({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return ka.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:i,slippage:s}){let[a,u]=[r.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.version===4,b;if(f)b=new _(y.toString()).div(p.toString());else{let I=Sa(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?b=new _(1e6).div(I*1e6):b=new _(I*1e6).div(1e6)}let g=n,h=new tt(0),A=new tt(0);if(!g.isZero())if(f){A=Yn(g.mul(Za),$a);let I=g.sub(A),L=p.add(I);h=y.mul(I).div(L)}else{A=g.mul(new tt(2)).div(new tt(1e4));let I=g.sub(A);d==="quote"?h=new tt(Ba(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),I.toNumber())):h=new tt(xa(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),I.toNumber()))}let k=new tt(new _(h.toString()).mul(1-s).toFixed(0)),B=h,T=k,S=new _(h.toString()).div(new _(g.sub(A).toString()).toFixed(0));!g.isZero()&&!h.isZero()&&(S=new _(h.toString()).div(g.sub(A).toString()));let x=b.sub(S).div(b).mul(100);return{amountOut:B,minAmountOut:T,currentPrice:b,executionPrice:S,priceImpact:x,fee:A}}async swap({poolInfo:t,poolKeys:n,amountIn:r,amountOut:i,inputMint:s,fixedSide:a,txVersion:u,computeBudgetConfig:c}){let l=this.createTxBuilder(),[m,d]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new Ce(m.address),programId:new Ce(m.programId),associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({mint:new Ce(d.address),programId:new Ce(d.programId),associatedOnly:!1}),B=await this.scope.account.handleTokenAccount({side:"in",amount:r,mint:new Ce(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:f}=B,b=ke(B,["tokenAccount"]);l.addInstruction(b);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Ce(d.address),tokenAccount:y,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=T,h=ke(T,["tokenAccount"]);l.addInstruction(h);let A=n||await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),l.addInstruction({instructions:[ao({version:k,poolKeys:A,userKeys:{tokenAccountIn:f,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:r,amountOut:i,fixedSide:a})],instructionTypes:[k===4?v.AmmV4SwapBaseIn:v.AmmV5SwapBaseIn]}),l.addCustomComputeBudget(c),l.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let r=await Ne(this.scope.connection,t.map(l=>({pubkey:new Ce(l)})),n),i={},s=[];for(let l=0;l<t.length;l++){let m=r[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=so.decode(m.accountInfo.data);i[String(t[l])]=E(C({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},u=await Ne(this.scope.connection,s.map(l=>({pubkey:new Ce(l)})),n);for(let l=0;l<s.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new tt(Wm.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(i)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=E(C({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new _(p.toString()).div(new _(10).pow(m.quoteDecimal.toString())).div(new _(d.toString()).div(new _(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),r=go({[t]:n}),i=r[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[r[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:i,poolKeys:s[0]}}};import{PublicKey as ie}from"@solana/web3.js";import dt from"bn.js";import{AccountLayout as nu,TOKEN_PROGRAM_ID as ru}from"@solana/spl-token";var dr=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:i,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new dt(new ie(r.address).toBuffer()).gt(new dt(new ie(i.address).toBuffer()))?[i,r,new _(1).div(a)]:[r,i,a],b=re.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ie.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:E(C({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},Wa),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,h=n.useSOLBalance&&e.mintA.address===$.toString(),A=n.useSOLBalance&&e.mintB.address===$.toString(),[k,B]=s==="MintA"?[a,u]:[u,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});T&&(b=T),f.addInstruction(S||{});let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||B.isZero()?{payer:this.scope.ownerPubKey,amount:B}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(R||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:b==null?void 0:b.toBase58(),ownerTokenAccountB:g==null?void 0:g.toBase58()});let I=t||await this.getClmmPoolKeys(e.id),L=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:I,ownerInfo:E(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(L),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:L.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:i,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===$.toBase58(),h=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});B&&(b=B),y.addInstruction(T||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:i,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,amountMaxA:i,amountMaxB:s,liquidity:a,ownerInfo:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e,p=this.createTxBuilder(),y,f,b=u.useSOLBalance&&t.mintA.address===$.toString(),g=u.useSOLBalance&&t.mintB.address===$.toString(),{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:l});h&&(y=h),p.addInstruction(A||{});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:l});k&&(f=k),p.addInstruction(B||{}),!y&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getClmmPoolKeys(t.id),S=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:f},liquidity:a,amountMaxA:i,amountMaxB:s});return p.addInstruction(S),p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:S.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:i,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?i:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?i:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:i).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),T=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:i,otherAmountMax:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:i,amountMinA:s,amountMinB:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),y=i.useSOLBalance&&t.mintA.address===$.toString(),f=i.useSOLBalance&&t.mintB.address===$.toString(),b,g,{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:l});b=h,A&&p.addInstruction(A);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:l});g=k,B&&p.addInstruction(B);let T=[];for(let I of t.rewardDefaultInfos){let L=i.useSOLBalance&&I.mint.address===$.toString(),U;if(I.mint.address===t.mintA.address)U=b;else if(I.mint.address===t.mintB.address)U=g;else{let{account:F,instructionParams:J}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(I.mint.programId),mint:new ie(I.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:c,checkCreateATAOwner:l});U=F,J&&p.addInstruction(J)}T.push(U)}!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g,rewardAccounts:T},liquidity:u,amountMinA:s,amountMinB:a});p.addInstruction({instructions:x.instructions,instructionTypes:[v.ClmmDecreasePosition]});let R=C({},x.address);if(i.closePosition){let I=await Ie.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:r});p.addInstruction({endInstructions:I.instructions,endInstructionTypes:I.instructionTypes}),R=C(C({},R),I.address)}return p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:R}})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:r}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=Ie.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return i.addInstruction(a).versionBuild({txVersion:r,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!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()===$.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new dt(new _(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:i});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ie(n.mint.programId),mint:new ie(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){for(let m of r)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let c=this.createTxBuilder(),l={};for(let m of r){let d=n.useSOLBalance&&m.mint.address===$.toString(),p=m.perSecond.mul(m.endTime-m.openTime),{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(m.mint.programId),mint:new ie(m.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new dt(new _(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});f&&c.addInstruction(f),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let b=t!=null?t:await this.getClmmPoolKeys(e.id),g=Ie.initRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{programId:new ie(m.mint.programId),mint:new ie(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:te.decimalToX64(m.perSecond)}});l=C(C({},l),g.address),c.addInstruction(g)}return c.addCustomComputeBudget(a),c.versionBuild({txVersion:u,extInfo:{address:l}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!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($),{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 dt(new _(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:i});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Ie.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){let c=this.createTxBuilder(),l={};for(let m of r){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=n.useSOLBalance&&m.mint.address===$.toString(),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(m.mint.programId),mint:new ie(m.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new dt(new _(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});y&&c.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=t!=null?t:await this.getClmmPoolKeys(e.id),b=Ie.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ie(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:te.decimalToX64(m.perSecond)}});c.addInstruction(b),l=C(C({},l),b.address)}return c.addCustomComputeBudget(a),c.versionBuild({txVersion:u,extInfo:{address:l}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals($),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:r,checkCreateATAOwner:i});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Ie.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:i=!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($),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:r,checkCreateATAOwner:i});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=C(C({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:r,amountOutMin:i,priceLimit:s,observationId:a,ownerInfo:u,remainingAccounts:c,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d}){let p=this.createTxBuilder(),y=n.toString()===e.mintA.address,f=u.useSOLBalance&&e.mintA.address===$.toBase58(),b=u.useSOLBalance&&e.mintB.address===$.toBase58(),g;!s||s.equals(new _(0))?g=y?Rt.add(new dt(1)):Lt.sub(new dt(1)):g=re.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let h;if(!h){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||!y?{payer:u.feePayer||this.scope.ownerPubKey,amount:f?r:0}:void 0,associatedOnly:f?!1:l,checkCreateATAOwner:m});h=B,T&&p.addInstruction(T)}let A;if(!A){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||y?{payer:u.feePayer||this.scope.ownerPubKey,amount:y?0:r}:void 0,associatedOnly:b?!1:l,checkCreateATAOwner:m});A=B,T&&p.addInstruction(T)}(!h||!A)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let k=t!=null?t:await this.getClmmPoolKeys(e.id);return p.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:k,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:A},inputMint:new ie(n),amountIn:r,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:c})),p.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?Pe(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(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===$.toString(),y=n.useSOLBalance&&d.mintB.address===$.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:i});f=A,k&&l.addInstruction(k)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:i});b=A,k&&l.addInstruction(k)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===$.toString(),B=c[A.mint.address];if(!B){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});B=T,S&&l.addInstruction(S)}c[A.mint.address]=B,g.push(B)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let k=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new dt(0),amountMinA:new dt(0),amountMinB:new dt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(sr(e).publicKey);return t?za.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new dt(1))).map(s=>lt(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return r.forEach(s=>{if(!s)return;let a=yo.decode(s.data);i.push(a)}),i}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await Ne(this.scope.connection,e.map(i=>({pubkey:new ie(i)})),t),r={};for(let i=0;i<e.length;i++){let s=n[i];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[i]));let a=cn.decode(s.accountInfo.data),u=re.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();r[String(e[i])]=E(C({},a),{currentPrice:u,programId:s.accountInfo.owner})}return r}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(u=>e[u].ammConfig.toBase58())),r=await Ne(this.scope.connection,Array.from(n).map(u=>({pubkey:new ie(u)}))),i={};r.forEach(u=>{!u.accountInfo||(i[u.pubkey.toBase58()]=Xa.decode(u.accountInfo.data))});let s=await Se.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(u=>{var m,d,p,y;let[c,l]=[e[u].mintA.toBase58(),e[u].mintB.toBase58()];return{id:u,programId:e[u].programId.toBase58(),mintA:He({address:c,decimals:e[u].mintDecimalsA,programId:t[c].programId.toBase58()||ru.toBase58(),extensions:{feeConfig:(m=t[c])!=null&&m.feeConfig?$t((d=t[c])==null?void 0:d.feeConfig):void 0}}),mintB:He({address:l,decimals:e[u].mintDecimalsB,programId:t[l].programId.toBase58()||ru.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?$t((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[u].currentPrice,config:E(C({},i[e[u].ammConfig.toBase58()]),{id:e[u].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Se.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var l;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),r=await kn({connection:this.scope.connection,mints:Array.from(n).map(m=>new ie(m))}),{computeClmmPoolInfo:i,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:r}),a=await Ne(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),u=Ua(i[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");u.mintAmountA=Number(nu.decode(a[0].accountInfo.data).amount.toString()),u.mintAmountB=Number(nu.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let c=E(C({},i[e]),{id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},rewardInfos:[],config:u.config});return{poolInfo:u,poolKeys:c,computePoolInfo:i[e],tickData:s}}};import{PublicKey as z}from"@solana/web3.js";import{NATIVE_MINT as So,TOKEN_PROGRAM_ID as Et,AccountLayout as nd}from"@solana/spl-token";import iu from"bn.js";var Gi=new iu(1e6);function qm(o,e,t){return o.mul(e).add(t).sub(new iu(1)).div(t)}function ou(o,e,t){return o.mul(e).div(t)}var Ao=class{static tradingFee(e,t){return qm(e,t,Gi)}static protocolFee(e,t){return ou(e,t,Gi)}static fundFee(e,t){return ou(e,t,Gi)}};import pr from"bn.js";function ho(o,e){if(e.isZero())throw Error("divisor is zero");return o.mod(e)}function Um(o,e){if(e.isZero())throw Error("rhs is zero");let t=o.div(e);if(t.isZero())throw Error("quotient is zero");let n=ho(o,e);return n.gt(Cn)&&(t=t.add(new pr(1)),e=o.div(t),n=ho(o,t),n.gt(Cn)&&(e=e.add(new pr(1)))),[t,e]}var Cn=new pr(0),Po=class{static swapWithoutFees(e,t,n){let r=t.mul(n),i=t.add(e),[s,a]=Um(r,i),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,r,i){let s=e.mul(n).div(t),a=e.mul(r).div(t);if(i===0)return{tokenAmount0:s,tokenAmount1:a};if(i===1)return ho(e.mul(n),t).gt(Cn)&&s.gt(Cn)&&(s=s.add(new pr(1))),ho(e.mul(r),t).gt(Cn)&&a.gt(Cn)&&(a=a.add(new pr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var ko=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,r){let i=Ao.tradingFee(e,r),s=e.sub(i),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Po.swapWithoutFees(s,t,n),c=a.add(i);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:i}}};var Gm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Xm=Buffer.from("amm_config","utf8"),zm=Buffer.from("pool","utf8"),Ym=Buffer.from("pool_lp_mint","utf8"),Qm=Buffer.from("pool_vault","utf8"),jm=Buffer.from("observation","utf8");function Rn(o){return le([Gm],o)}function Hm(o,e){return le([Xm,Jm(e)],o)}function Zm(o,e,t,n){return le([zm,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function $m(o,e){return le([Ym,e.toBuffer()],o)}function su(o,e,t){return le([Qm,e.toBuffer(),t.toBuffer()],o)}function To(o,e){return le([jm,e.toBuffer()],o)}function Jm(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function au({programId:o,mintA:e,mintB:t}){let n=Hm(o,0).publicKey,r=Rn(o).publicKey,i=Zm(o,n,e,t).publicKey,s=$m(o,i).publicKey,a=su(o,i,e).publicKey,u=su(o,i,t).publicKey,c=To(o,i).publicKey;return{poolId:i,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as fr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xi,TOKEN_2022_PROGRAM_ID as uu,ASSOCIATED_TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";var td=se("Raydium_cpmm"),yr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function cu(o,e,t,n,r,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=V([w("amountMaxA"),w("amountMaxB"),w("openTime")]),B=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Xi,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:ed,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],T=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},T),new fr({keys:B,programId:o,data:Buffer.from([...yr.initialize,...T])})}function lu(o,e,t,n,r,i,s,a,u,c,l,m,d,p,y){let f=V([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Xi,isSigner:!1,isWritable:!1},{pubkey:uu,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 td.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new fr({keys:b,programId:o,data:Buffer.from([...yr.deposit,...g])})}function mu(o,e,t,n,r,i,s,a,u,c,l,m,d,p,y){let f=V([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Xi,isSigner:!1,isWritable:!1},{pubkey:uu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Nr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new fr({keys:b,programId:o,data:Buffer.from([...yr.withdraw,...g])})}function Io(o,e,t,n,r,i,s,a,u,c,l,m,d,p,y,f){let b=V([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new fr({keys:g,programId:o,data:Buffer.from([...yr.swapBaseInput,...h])})}function Bo(o,e,t,n,r,i,s,a,u,c,l,m,d,p,y,f){let b=V([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new fr({keys:g,programId:o,data:Buffer.from([...yr.swapBaseOutput,...h])})}import _e from"bn.js";var du=V([pe(8),D("bump"),Ue("disableCreatePool"),St("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),X(w(),16)]),xo=V([pe(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),D("bump"),D("status"),D("lpDecimals"),D("mintDecimalA"),D("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),X(w(),32)]);var br=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await Ne(this.scope.connection,e.map(m=>({pubkey:new z(m)}))),r={},i=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=xo.decode(d.accountInfo.data);r[String(e[m])]=E(C({},p),{programId:d.accountInfo.owner}),i.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...i],d=await Ne(this.scope.connection,m.map(p=>({pubkey:new z(p)})));for(let p=0;p<m.length;p++){let y=d[p].accountInfo;if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=du.decode(y.data)}}let u={},c=await Ne(this.scope.connection,s.map(m=>({pubkey:new z(m)})));for(let m=0;m<s.length;m++){let d=c[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);u[String(s[m])]=new _e(nd.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=E(C({},d),{baseReserve:p,quoteReserve:y,vaultAAmount:u[d.vaultA.toString()],vaultBAmount:u[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new _(y.toString()).div(new _(10).pow(d.mintDecimalB)).div(new _(p.toString()).div(new _(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,r)=>{var u,c,l,m;let i=e[r],[s,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return E(C({},n),{[r]:E(C({},i),{id:new z(r),configInfo:i.configInfo,version:7,authority:Rn(i.programId).publicKey,mintA:He({address:s,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(u=t[s])!=null&&u.feeConfig?$t((c=t[s])==null?void 0:c.feeConfig):void 0}}),mintB:He({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?$t((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await kn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),r=He({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?$t(n[t.mintA.toBase58()].feeConfig):void 0}}),i=He({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?$t(n[t.mintB.toBase58()].feeConfig):void 0}}),s=He({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Et.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},u={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:r,mintB:i,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new _(t.vaultAAmount.toString()).div(10**r.decimals).toNumber(),mintAmountB:new _(t.vaultBAmount.toString()).div(10**i.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,day:u,week:u,month:u,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:r,mintB:i,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Rn(t.programId).publicKey.toBase58(),mintLp:s,config:a},rpcData:t}}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:i=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var U,F,J;let d=r.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new _e(new z(c.mintA.address).toBuffer()).lte(new _e(new z(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],h=r.useSOLBalance&&y.address===So.toBase58(),A=r.useSOLBalance&&f.address===So.toBase58(),[k,B]=[new z(y.address),new z(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:i,checkCreateATAOwner:s});T.addInstruction(x||{});let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:new z(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:i,checkCreateATAOwner:s});if(T.addInstruction(I||{}),S===void 0||R===void 0)throw Error("you don't has some token account");let L=au({programId:e,mintA:k,mintB:B});return T.addInstruction({instructions:[cu(e,this.scope.ownerPubKey,L.configId,L.authority,L.poolId,k,B,L.lpMint,S,R,Pe(this.scope.ownerPubKey,L.lpMint).publicKey,L.vaultA,L.vaultB,t,new z((F=y.programId)!=null?F:Et),new z((J=f.programId)!=null?J:Et),L.observationId,b,g,n)],instructionTypes:[v.CpmmCreatePool]}),T.addCustomComputeBudget(u),T.versionBuild({txVersion:a,extInfo:{address:E(C({},L),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:r,baseIn:i,slippage:s,computeResult:a,computeBudgetConfig:u,config:c,txVersion:l}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),y=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:f,inputAmountFee:b,anotherAmount:g}=a||this.computePairAmount({poolInfo:E(C({},t),{lpAmount:new _(y.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:y.baseReserve,quoteReserve:y.quoteReserve,slippage:new Qe(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new _(r.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),h=g.amount,A=t.mintA.address===So.toString(),k=t.mintB.address===So.toString(),B=this.createTxBuilder(),[T,S]=[new z(t.mintA.address),new z(t.mintB.address)],{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A||(i?r:h).isZero()?{payer:this.scope.ownerPubKey,amount:i?r:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(R||{});let{account:I,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||(i?h:r).isZero()?{payer:this.scope.ownerPubKey,amount:i?h:r}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(L||{}),!x&&!I&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let U=await m.getCreatedTokenAccount({mint:new z(t.lpMint.address)}),Ye=await m.handleTokenAccount({side:"out",amount:0,mint:new z(t.lpMint.address),tokenAccount:U,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:F}=Ye,J=ke(Ye,["tokenAccount"]);B.addInstruction(J);let G=n!=null?n:await this.getCpmmPoolKeys(t.id),W=new Qe(new _e(1)).sub(s);return B.addInstruction({instructions:[lu(new z(t.programId),this.scope.ownerPubKey,new z(G.authority),new z(t.id),F,x,I,new z(G.vault.A),new z(G.vault.B),T,S,new z(t.lpMint.address),a?a==null?void 0:a.liquidity:W.mul(f).quotient,i?b.amount:h,i?h:b.amount)],instructionTypes:[v.CpmmAddLiquidity],lookupTableAddress:G.lookupTableAccount?[G.lookupTableAccount]:[]}),B.addCustomComputeBudget(u),B.versionBuild({txVersion:l})}async withdrawLiquidity(e){var F,J;let{poolInfo:t,poolKeys:n,lpAmount:r,slippage:i,computeBudgetConfig:s,txVersion:a}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let u=new Qe(new _e(1)).sub(i),c=await this.getRpcPoolInfo(t.id),[l,m]=[u.mul(r.mul(c.baseReserve).div(c.lpAmount)).quotient,u.mul(r.mul(c.quoteReserve).div(c.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[p,y]=[we(l,t.mintA.extensions.feeConfig,d,!0),we(m,t.mintB.extensions.feeConfig,d,!0)],{account:f}=this.scope,b=this.createTxBuilder(),[g,h]=[new z(t.mintA.address),new z(t.mintB.address)],A=g.equals($),k=h.equals($),B,T,{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});B=S,x&&b.addInstruction(x);let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:!k,checkCreateATAOwner:!1});T=R,I&&b.addInstruction(I),(!B||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let L=await f.getCreatedTokenAccount({mint:new z(t.lpMint.address)});L||this.logAndCreateError("cannot found lp token account","tokenAccounts",f.tokenAccounts);let U=n!=null?n:await this.getCpmmPoolKeys(t.id);return b.addInstruction({instructions:[mu(new z(t.programId),this.scope.ownerPubKey,new z(U.authority),new z(t.id),L,B,T,new z(U.vault.A),new z(U.vault.B),g,h,new z(t.lpMint.address),r,l.sub((F=p.fee)!=null?F:new _e(0)),m.sub((J=y.fee)!=null?J:new _e(0)))],instructionTypes:[v.CpmmWithdrawLiquidity],lookupTableAddress:U.lookupTableAccount?[U.lookupTableAccount]:[]}),b.addCustomComputeBudget(s),b.versionBuild({txVersion:a})}async swap(e){var S,x,R,I,L,U;let{poolInfo:t,poolKeys:n,baseIn:r,swapResult:i,slippage:s=0,config:a,computeBudgetConfig:u,txVersion:c}=e,{bypassAssociatedCheck:l,checkCreateATAOwner:m,associatedOnly:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},a),p=this.createTxBuilder(),[y,f]=[new z(t.mintA.address),new z(t.mintB.address)];i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new _e((1-s)*1e4)).div(new _e(1e4));let b=t.mintA.address===$.toBase58(),g=t.mintB.address===$.toBase58(),{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:y,tokenProgram:new z((S=t.mintA.programId)!=null?S:Et),owner:this.scope.ownerPubKey,createInfo:b||!r?{payer:this.scope.ownerPubKey,amount:r?i.sourceAmountSwapped:0}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:d,checkCreateATAOwner:m});A&&p.addInstruction(A);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:f,tokenProgram:new z((x=t.mintB.programId)!=null?x:Et),owner:this.scope.ownerPubKey,createInfo:g||r?{payer:this.scope.ownerPubKey,amount:r?0:i.sourceAmountSwapped}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:d,checkCreateATAOwner:m});B&&p.addInstruction(B),!h&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getCpmmPoolKeys(t.id);return p.addInstruction({instructions:[r?Io(new z(t.programId),this.scope.ownerPubKey,new z(T.authority),new z(T.config.id),new z(t.id),h,k,new z(T.vault.A),new z(T.vault.B),new z((R=t.mintA.programId)!=null?R:Et),new z((I=t.mintB.programId)!=null?I:Et),y,f,To(new z(t.programId),new z(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Bo(new z(t.programId),this.scope.ownerPubKey,new z(T.authority),new z(T.config.id),new z(t.id),k,h,new z(T.vault.B),new z(T.vault.A),new z((L=t.mintB.programId)!=null?L:Et),new z((U=t.mintA.programId)!=null?U:Et),f,y,To(new z(t.programId),new z(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[r?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut]}),p.addCustomComputeBudget(u),p.versionBuild({txVersion:c})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:r}){let i=n.toString()===e.mintB.address,s=ko.swap(t,i?e.baseReserve:e.quoteReserve,i?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new _(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),u=s.destinationAmountSwapped.mul(new _e((1-r)*1e4)).div(new _e(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:u,executionPrice:a,fee:s.tradeFee,priceImpact:e.poolPrice.sub(a).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:r,slippage:i,epochInfo:s,baseIn:a}){var h,A,k,B,T,S,x,R;let u=1-Number(i.toSignificant())/100,c=new _e(new _(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=we(c,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=c.sub((h=l.fee)!=null?h:new _e(0)),d=new _e(new _(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(k=(A=l.fee)==null?void 0:A.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:at,fee:void 0,expirationTime:void 0};if(!m.isZero()){let I=rd(y,t,n,d);this.logDebug("lpAmountData:",{amountA:I.amountA.toString(),amountB:I.amountB.toString()}),f=we(I[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Qe(new _e(1)).add(i),g=we(b.mul(f.amount.sub((B=f.fee)!=null?B:new _e(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(R=(x=g.fee)==null?void 0:x.toString())!=null?R:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function rd(o,e,t,n){let r=o.mul(e).div(n);!r.isZero()&&!o.mul(e).mod(n).isZero()&&(r=r.add(new _e(1)));let i=o.mul(t).div(n);return!i.isZero()&&!o.mul(t).mod(n).isZero()&&(i=i.add(new _e(1))),{amountA:r,amountB:i}}import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ke,TOKEN_2022_PROGRAM_ID as Yi,createTransferInstruction as wu}from"@solana/spl-token";import Ro from"bn.js";import{TOKEN_PROGRAM_ID as od,TOKEN_2022_PROGRAM_ID as id,ASSOCIATED_TOKEN_PROGRAM_ID as sd}from"@solana/spl-token";import{PublicKey as Z,TransactionInstruction as ad,SystemProgram as ud}from"@solana/web3.js";import dn from"bn.js";function cd(o,e,t,n,r,i,s,a,u,c,l,m,d,p,y){var T;let f=[],b=[P({pubkey:od,isWritable:!1}),P({pubkey:id,isWritable:!1}),P({pubkey:sd,isWritable:!1}),P({pubkey:ud.programId,isWritable:!1}),P({pubkey:e,isSigner:!0})];b.push(P({pubkey:t})),b.push(P({pubkey:r}));let g=[u,c],h=[l,m],A=[i,s,a];for(let S=0;S<g.length;S++){let x=g[S],R=A[S]===x.mintA.address;if(b.push(P({pubkey:new Z(x.programId),isWritable:!1})),S===g.length-1?b.push(P({pubkey:r})):b.push(P({pubkey:n})),b.push(P({pubkey:new Z(A[S])})),b.push(P({pubkey:new Z(A[S+1])})),x.version===6){let I=h[S];b.push(P({pubkey:new Z(I.config.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(R?I.vault.A:I.vault.B)})),b.push(P({pubkey:new Z(R?I.vault.B:I.vault.A)})),b.push(P({pubkey:new Z(x.observationId)})),b.push(P({pubkey:Nr})),b.push(P({pubkey:ot(new Z(x.programId),new Z(x.id)).publicKey})),f.push(ld(x.sqrtPriceX64.toString(),R));for(let L of(T=y[S])!=null?T:[])b.push(P({pubkey:new Z(L)}))}else if(x.version===5){let I=h[S];b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.authority),isWritable:!1})),b.push(P({pubkey:new Z(I.marketProgramId)})),b.push(P({pubkey:new Z(I.marketAuthority)})),b.push(P({pubkey:Ds,isWritable:!1})),b.push(P({pubkey:new Z(I.openOrders)})),b.push(P({pubkey:new Z(I.vault.A)})),b.push(P({pubkey:new Z(I.vault.B)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.marketId)})),b.push(P({pubkey:new Z(I.marketBids)})),b.push(P({pubkey:new Z(I.marketAsks)})),b.push(P({pubkey:new Z(I.marketEventQueue)})),b.push(P({pubkey:new Z(I.marketBaseVault)})),b.push(P({pubkey:new Z(I.marketQuoteVault)}))}else if(x.version===4){let I=h[S],L=x.status!==1;b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(I.authority),isWritable:!1})),b.push(P({pubkey:new Z(L?I.id:I.marketProgramId)})),b.push(P({pubkey:new Z(L?I.id:I.marketAuthority)})),b.push(P({pubkey:new Z(L?I.id:I.openOrders)})),b.push(P({pubkey:new Z(I.vault.A)})),b.push(P({pubkey:new Z(I.vault.B)})),b.push(P({pubkey:new Z(L?I.id:I.marketId)})),b.push(P({pubkey:new Z(L?I.id:I.marketBids)})),b.push(P({pubkey:new Z(L?I.id:I.marketAsks)})),b.push(P({pubkey:new Z(L?I.id:I.marketEventQueue)})),b.push(P({pubkey:new Z(L?I.id:I.marketBaseVault)})),b.push(P({pubkey:new Z(L?I.id:I.marketQuoteVault)}))}else if(x.version===7){let I=h[S];b.push(P({pubkey:new Z(I.authority)})),b.push(P({pubkey:new Z(I.config.id)})),b.push(P({pubkey:new Z(I.id)})),b.push(P({pubkey:new Z(R?I.vault.A:I.vault.B)})),b.push(P({pubkey:new Z(R?I.vault.B:I.vault.A)})),b.push(P({pubkey:new Z(x.observationId)}))}else throw Error("pool type error")}let k=V([D("insId"),w("amountIn"),w("amountOut"),X(Y(),f.length,"clmmPriceLimit")]),B=Buffer.alloc(k.span);return k.encode({insId:0,amountIn:d,amountOut:p,clmmPriceLimit:f},B),new ad({keys:b,programId:o,data:B})}function ld(o,e){if(o)if(e){let t=new dn(o).div(new dn(25));return t.gt(mo)?t:mo}else{let t=new dn(o).mul(new dn(25));return t.lt(po)?t:po}else return e?mo:po}function pu({routeProgram:o,ownerInfo:e,inputMint:t,swapInfo:n}){var r,i,s,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=Ee(m),p=t.equals(d.mintA.address)?Rt.add(it):Lt.sub(it);return Ie.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((i=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?i:new dn(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],d=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[d?Io(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,m.vaultA,m.vaultB,m.mintProgramA,m.mintProgramA,new Z(m.mintA.address),new Z(m.mintB.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):Bo(m.programId,e.wallet,m.authority,m.configId,m.id,e.destinationToken,e.sourceToken,m.vaultB,m.vaultA,m.mintProgramB,m.mintProgramA,new Z(m.mintB.address),new Z(m.mintA.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[d?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[ao({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((u=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?u:new dn(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?v.AmmV5SwapBaseIn:v.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[cd(o,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new dn(0)),n.remainingAccounts)],instructionTypes:[v.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var fu={[ni.toBase58()]:3},yu={3:ni};var zi=V([pe(5),pe(8),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),bu={3:zi};import{PublicKey as gu}from"@solana/web3.js";var Ko=se("Serum"),Co=class{static getProgramId(e){let t=yu[e];return t||Ko.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=fu[t];return n||Ko.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=bu[e];return t||Ko.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()],r=0,i;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));i=gu.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:i,nonce:r}}return Ko.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:gu.default,nonce:r}}};var Ft=new Ro(0),gr=class extends Te{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals($));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,i=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let u=H(t);for(let c=0;c<i.length;c++)u.gte(i[c].amount)?(s.addInstruction({instructions:[Kt({tokenAccount:i[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(i[c].amount)):(s.addInstruction({instructions:[Kt({tokenAccount:i[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Qn({destination:a.addresses.newAccount,source:i[c].publicKey,amount:u,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),i=this.createTxBuilder(),s=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(s),r.length&&i.addInstruction({instructions:[Qn({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Kt({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:i,txVersion:s}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals($),m=c.amount.token.mint.equals($),d=u.amount.token.mint,p=c.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Yi:Ke,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),y===void 0)throw Error("input account check error");let b=this.scope.account.getAssociatedTokenAccount(p,c.amount.token.isToken2022?Yi:Ke);m&&a.addInstruction({endInstructions:[Kt({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Ke})],endInstructionTypes:[v.CloseAccount]});let g;if(e.routeType==="route"){let k=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(k.mint,k.isToken2022?Yi:Ke)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),A=pu({routeProgram:i,inputMint:d,swapInfo:E(C({},e),{poolInfo:[...e.poolInfoList],poolKey:h,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:g,destinationToken:b}});if(e.feeConfig!==void 0){let k=this.createTxBuilder();k.addInstruction({instructions:[wu(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]}),k.addInstruction(A);let{transactions:B}=s===0?await k.sizeCheckBuildV0():await k.sizeCheckBuild();B.length<2&&a.addInstruction({instructions:[wu(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]})}return a.addInstruction(A),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:A.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:A.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Fs,clmm:n=Ws,cpmm:r=qs}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:so.offsetOf("baseMint"),length:64}}),s=V([K("baseMint"),K("quoteMint")]),a=i.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),u=V([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:cn.span}],dataSlice:{offset:cn.offsetOf("mintA"),length:64}})).map(p=>{let y=u.decode(p.account.data);return{id:p.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),d=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:xo.offsetOf("mintA"),length:64}})).map(p=>{let y=u.decode(p.account.data);return{id:p.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:d}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:i}){e=e.toString()===pn.default.toString()?$:e,t=t.toString()===pn.default.toString()?$:t;let s={},a={},u={},c=[],l={};for(let d of n!=null?n:[]){if((d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(c.push(d),a[d.id.toString()]=d),d.mintA.equals(e)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintB.equals(e)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintA.equals(t)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].out.push(d)}if(d.mintB.equals(t)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].out.push(d)}}let m=[];for(let d of r)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(c.push(d),s[d.id.toBase58()]=d,m.push(d)),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of i)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(c.push(d),u[d.id.toBase58()]=d),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of Object.keys(l)){if(l[d].in.length===1&&l[d].out.length===1&&l[d].in[0].id.equals(l[d].out[0].id)){delete l[d];continue}if(l[d].in.length===0||l[d].out.length===0){delete l[d];continue}let p=l[d];for(let y of p.in)for(let f of p.out)y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&i[y.id.toString()]===void 0?u[y.id.toString()]=y:(y.version===4||y.version===5)&&s[y.id.toString()]===void 0&&(s[y.id.toString()]=y),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&i[f.id.toString()]===void 0?u[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:c,addLiquidityPools:m,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(u)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let i=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=go(i),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new pn(f.mintA.address),programId:Ke,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new pn(f.mintB.address),programId:Ke,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let u=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(u).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Ke)?(r.delete(b),a[b]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(b),f.mintProgramB.equals(Ke)?(r.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(g)}),console.log("fetching mints info, total: ",r.size);let c=await kn({connection:this.scope.connection,mints:Array.from(r).map(f=>new pn(f))});a=C(C({},a),c);let l=this.scope.cpmm.toComputePoolInfos({pools:u,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let m=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:d,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:m,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>E(C({},f),{[b]:E(C({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:s,clmmPoolsRpcInfo:m,computeClmmPoolInfo:d,computePoolTickData:p,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:i,tickCache:s,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var g,h,A,k,B,T,S,x,R;let m=l===void 0?new Ro(0):e.raw.mul(new Ro(l.feeBps.toNumber())).div(new Ro(1e4)),d=e.raw.sub(m),p=new fe(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=E(C({},t),{address:nt(t.address).toString()}),b=[];for(let I of n)try{b.push(E(C({},this.computeAmountOut({itemPool:I,tickCache:s,simulateCache:i,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(L){this.logDebug("direct error",I.version,I.id.toString(),L.message)}this.logDebug("direct done");for(let[I,L]of Object.entries(r)){let U={chainId:101,address:I,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},F=L.in.map(G=>{try{return{pool:G,data:this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:u,epochInfo:c,slippage:a,outputToken:U,amountIn:p})}}catch(W){this.logDebug("route in error",G.version,G.id.toString(),W.message);return}}).sort((G,W)=>{var en,Dt,bn,Nt;let Ye=G===void 0?Ft:G.data.amountOut.amount.raw.sub((Dt=(en=G.data.amountOut.fee)==null?void 0:en.raw)!=null?Dt:Ft),yn=W===void 0?Ft:W.data.amountOut.amount.raw.sub((Nt=(bn=W.data.amountOut.fee)==null?void 0:bn.raw)!=null?Nt:Ft);return Ye.lt(yn)?1:-1})[0];if(F===void 0)continue;let J=new fe(io(U),F.data.amountOut.amount.raw.sub((h=(g=F.data.amountOut.fee)==null?void 0:g.raw)!=null?h:Ft));for(let G of L.out)try{let W=this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:J});b.push(E(C({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new _(new Je({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((k=(A=W.amountOut.fee)==null?void 0:A.raw)!=null?k:Ft)}).toFixed()),priceImpact:new _(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,G],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(B=W.amountOut.fee)!=null&&B.raw?new fe(F.data.amountOut.amount.token,((S=(T=F.data.amountOut.fee)==null?void 0:T.raw)!=null?S:Ft).add((R=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?R:Ft)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:xt(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",G.version,G.id.toString(),W.message)}}return b.filter(I=>I.allTrade).sort((I,L)=>I.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(Ft)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:i,slippage:s,outputToken:a,amountIn:u}){if(e.version===6){let{allTrade:c,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:h,executionPriceX64:A}=Se.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:s,epochInfo:i,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new _(y.toFixed()),executionPrice:new _(f.toFixed()),priceImpact:new _(b.toFixed()),fee:[g],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[A],expirationTime:xt(l.expirationTime,p)}}else if(e.version===7){let{allTrade:c,executionPrice:l,amountOut:m,minAmountOut:d,priceImpact:p,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:u.raw,slippage:s});return{allTrade:c,amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:nr(E(C({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:nr(E(C({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new fe(u.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:c,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:u.raw,mintIn:u.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:nr(E(C({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:nr(E(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new fe(u.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(r.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(c).forEach(l=>{t[l]=c[l]})}if(new Set(e.filter(c=>c.version===4&&!n[c.id.toString()]).map(c=>c.id.toString())).size>0){let c=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(c).forEach(l=>{n[l]=c[l]})}let s=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};s.size>0&&(await Ne(this.scope.connection,Array.from(s).map(l=>({pubkey:new pn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=zi.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Co.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let u=[];return e.forEach(c=>{if(c.version===6){let l=t[c.id.toString()],m={programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:E(C({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else if(c.version===4){let l=n[c.id.toString()],m=C({programId:c.programId,id:c.id,mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Ui({programId:new pn(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}else c.version===7&&u.push({programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),authority:Rn(c.programId).publicKey.toBase58(),vault:{A:c.vaultA.toBase58(),B:c.vaultB.toBase58()},mintLp:He({address:c.mintLp.toBase58(),programId:Ke.toBase58(),decimals:c.lpDecimals}),config:E(C({id:c.configId.toBase58()},c.configInfo),{protocolFeeRate:c.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:c.configInfo.tradeFeeRate.toNumber(),fundFeeRate:c.configInfo.fundFeeRate.toNumber(),createPoolFee:c.configInfo.createPoolFee.toString()})})}),u}};import{TOKEN_PROGRAM_ID as md}from"@solana/spl-token";import{PublicKey as dd,Transaction as Qi,TransactionInstruction as pd}from"@solana/web3.js";import Au from"bn.js";var ze=class extends Te{static getPdaPoolId(e,t){return le([ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return le([ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Au(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:i}){if(n.length===0)return[];let s=n.map(l=>ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>ze.getPdaOwnerId(t,m,r,l).publicKey));let u=await gt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==ze.POOL_LAYOUT.span||b.data.length!==ze.OWNER_LAYOUT.span)continue;let g=ze.POOL_LAYOUT.decode(f.data),h=ze.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),B=h.tokenInfo.map(x=>x.debtAmount.gt(new Au(0))).filter(x=>!x).length!==3,T=i>A&&i<k&&g.status===1,S=B&&T;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:ze.VERSION_PROJECT[m],openTime:A,endTime:k,canClaim:S,canClaimErrorType:B?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,R)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:h.tokenInfo[R].debtAmount.add(h.tokenInfo[R].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,i=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),i.push(c)}n.addInstruction({instructions:[ze.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:i}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,i={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(i[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[ze.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Zo(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Qi().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Qi().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Qi().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=V([]),i=[{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(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new pd({keys:i,programId:e,data:a})}},pt=ze;pt.CLAIMED_NUM=3,pt.POOL_LAYOUT=V([pe(8),D("bump"),D("status"),w("openTime"),w("endTime"),K("ammId"),X(V([D("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),ze.CLAIMED_NUM,"tokenInfo"),X(w(),10,"padding")]),pt.OWNER_LAYOUT=V([pe(8),D("bump"),D("version"),K("poolId"),K("owner"),w("lpAmount"),X(V([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),ze.CLAIMED_NUM,"tokenInfo"),X(w(),4,"padding")]),pt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new dd(e)),pt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},pt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Iu}from"@solana/spl-token";import Ar from"bn.js";import{TransactionInstruction as yd,SYSVAR_RENT_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hu}from"@solana/spl-token";import{createInitializeAccountInstruction as Pu}from"@solana/spl-token";import{SystemProgram as fn,Transaction as ku}from"@solana/web3.js";function fd(o="accountFlags"){let e=new jr(o);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ji=V([pe(5),fd("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]);function gd({programId:o,marketInfo:e}){let t=V([D("version"),je("instruction"),w("baseLotSize"),w("quoteLotSize"),St("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}:[]),r=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},r),new yd({keys:n,programId:o,data:r})}async function Tu({connection:o,wallet:e,marketInfo:t}){let n=new ku,r=await o.getMinimumBalanceForRentExemption(165);n.add(fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:hu}),fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:hu}),Pu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Pu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let i=new ku;return i.add(fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await o.getMinimumBalanceForRentExemption(ji.span),space:ji.span,programId:t.programId}),fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await o.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await o.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await o.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await o.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:i,signer:[],instructionTypes:[v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.InitMarket]}]}var Ln=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:i,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ge({fromPublicKey:u,programId:i}),l=Ge({fromPublicKey:u,programId:i}),m=Ge({fromPublicKey:u,programId:i}),d=Ge({fromPublicKey:u,programId:i}),p=Ge({fromPublicKey:u,programId:i}),y=Ge({fromPublicKey:u,programId:Iu}),f=Ge({fromPublicKey:u,programId:Iu}),b=0,g=new Ar(100);function h(){let R=new Ar(0);for(;;)try{return{vaultOwner:wr.createProgramAddressSync([c.publicKey.toBuffer(),R.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:R}}catch{if(R.iaddn(1),R.gt(new Ar(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),B=new Ar(Math.round(10**e.decimals*n)),T=new Ar(Math.round(n*10**t.decimals*r));if(B.eq(at))throw Error("lot size is too small");if(T.eq(at))throw Error("tick size or lot size is too small");let S=await Tu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:B,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let R of S.slice(1,S.length))x.addInstruction({instructions:R.transaction.instructions,signers:R.signer,instructionTypes:R.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new wr(e.mint),quoteMin:new wr(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new wr(e.mint),quoteMin:new wr(t.mint)}})}};import{PublicKey as Pr}from"@solana/web3.js";import{TransactionInstruction as Bu,SYSVAR_CLOCK_PUBKEY as Ad}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xu}from"@solana/spl-token";var wd=V([D("instruction"),Qs("amount")]),hr=V([D("instruction")]);function Lo({programId:o},e){let t=[{pubkey:xu,isSigner:!1,isWritable:!1},{pubkey:ks,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,i])=>({pubkey:i,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(hr.span);return hr.encode({instruction:2},n),new Bu({keys:t,programId:o,data:n})}function Hi(o){let{poolConfig:e,userKeys:t,side:n}=o,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,i=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(hr.span);hr.encode({instruction:2},s);let a=[{pubkey:xu,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:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Bu({programId:e.programId,keys:a,data:s})}import Su from"bn.js";var hd={[Xn.IDO_PROGRAM_ID_V1.toString()]:1,[Xn.IDO_PROGRAM_ID_V2.toString()]:2,[Xn.IDO_PROGRAM_ID_V3.toString()]:3,[Xn.IDO_PROGRAM_ID_V4.toString()]:4},On=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:i}){let s=this.createTxBuilder(),a=hd[t.programId];a||this.logAndCreateError("invalid version",a);let u=Ee(t),[c,l]=[!new Su(e.coin).isZero(),!new Su(e.pc).isZero()],m=u.projectInfo.mint.address.equals($),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:r});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals($),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[Lo({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Lo({programId:new Pr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:i});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Lo({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Pr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:i});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new Pr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Hi(E(C({},g),{side:"base"}))]:[],...l?[Hi(E(C({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:i})}};import{PublicKey as Pd}from"@solana/web3.js";import{MintLayout as kd,TOKEN_2022_PROGRAM_ID as Zi,TOKEN_PROGRAM_ID as $i}from"@solana/spl-token";var kr=class extends Te{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:i,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(zt.address,zt),this._mintGroup.official.add(zt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,E(C({},c),{priority:-1}))}),i.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,E(C({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Zi.toBase58():$i.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,E(C({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Zi.toBase58():$i.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,E(C({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?Zi.toBase58():$i.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return zt;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,E(C({},i),{priority:2})),i;let s=await this.scope.connection.getAccountInfo(new Pd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=kd.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 Oo=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:i,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u,blockhashCommitment:c="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new wt(r):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=c,this.api=i,this._apiCacheTime=u||5*60*1e3,this.logger=se("Raydium"),this.farm=new tr({scope:this,moduleName:"Raydium_Farm"}),this.account=new jn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new mr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new kr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new gr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new dr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new br({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new pt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Ln({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new On({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,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:r,logCount:i,logRequests:s,urlConfigs:a}=t,u=new zr({cluster:n,timeout:r,urlConfigs:a,logCount:i,logRequests:s}),c=new Oo(E(C({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Yr);return this._owner.publicKey}setOwner(e){return this._owner=e?new wt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Xs);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(Yr),new Error(Yr)}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 i;let n=(i=this.apiData.jupTokenList)==null?void 0:i[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=E(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};export{Oo as Raydium};
1
+ var Cu=Object.defineProperty,Ru=Object.defineProperties;var Lu=Object.getOwnPropertyDescriptors;var xo=Object.getOwnPropertySymbols;var ns=Object.prototype.hasOwnProperty,os=Object.prototype.propertyIsEnumerable;var ts=(r,e,t)=>e in r?Cu(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e)=>{for(var t in e||(e={}))ns.call(e,t)&&ts(r,t,e[t]);if(xo)for(var t of xo(e))os.call(e,t)&&ts(r,t,e[t]);return r},E=(r,e)=>Ru(r,Lu(e));var Ie=(r,e)=>{var t={};for(var n in r)ns.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&xo)for(var n of xo(r))e.indexOf(n)<0&&os.call(r,n)&&(t[n]=r[n]);return t};import{merge as Td}from"lodash";import Gs from"axios";import{get as rs,set as Ou}from"lodash";import ss from"dayjs";import Nu from"dayjs/plugin/utc";ss.extend(Nu);var Mr=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 ss().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}},is={},Mu={};function se(r){let e=rs(is,r);if(!e){let t=rs(Mu,r);e=new Mr({name:r,logLevel:t}),Ou(is,r,e)}return e}import{PublicKey as Gc}from"@solana/web3.js";import Xc from"bn.js";import Wc from"big.js";import Do from"bn.js";import et from"bn.js";var wn=9e15,Xt=1e9,_r="0123456789abcdef",Ko="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Co="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-wn,maxE:wn,crypto:!1},ls,Mt,ne=!0,Lo="[DecimalError] ",Gt=Lo+"Invalid argument: ",ms=Lo+"Precision limit exceeded",ds=Lo+"crypto unavailable",ps="[object Decimal]",We=Math.floor,Ce=Math.pow,_u=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,vu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,fs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,yt=1e7,ee=7,Eu=9007199254740991,Fu=Ko.length-1,vr=Co.length-1,M={toStringTag:ps};M.absoluteValue=M.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),j(r)};M.ceil=function(){return j(new this.constructor(this),this.e+1,2)};M.clampedTo=M.clamp=function(r,e){var t,n=this,o=n.constructor;if(r=new o(r),e=new o(e),!r.s||!e.s)return new o(NaN);if(r.gt(e))throw Error(Gt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new o(n)};M.comparedTo=M.cmp=function(r){var e,t,n,o,i=this,s=i.d,a=(r=new i.constructor(r)).d,u=i.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(i.e!==r.e)return i.e>r.e^u<0?1:-1;for(n=s.length,o=a.length,e=0,t=n<o?n:o;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===o?0:n>o^u<0?1:-1};M.cosine=M.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+ee,n.rounding=1,t=Du(n,As(n,t)),n.precision=r,n.rounding=e,j(Mt==2||Mt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};M.cubeRoot=M.cbrt=function(){var r,e,t,n,o,i,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(ne=!1,i=l.s*Ce(l.s*l,1/3),!i||Math.abs(i)==1/0?(t=_e(l.d),r=l.e,(i=(r-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=Ce(t,1/3),r=We((r+1)/3)-(r%3==(r<0?-1:2)),i==1/0?t="5e"+r:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(i.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=be(c.plus(l).times(a),c.plus(u),s+2,1),_e(a.d).slice(0,s)===(t=_e(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!o&&t=="4999"){if(!o&&(j(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(j(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return ne=!0,j(n,r,m.rounding,e)};M.decimalPlaces=M.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-We(this.e/ee))*ee,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};M.dividedBy=M.div=function(r){return be(this,new this.constructor(r))};M.dividedToIntegerBy=M.divToInt=function(r){var e=this,t=e.constructor;return j(be(e,new t(r),0,1,1),t.precision,t.rounding)};M.equals=M.eq=function(r){return this.cmp(r)===0};M.floor=function(){return j(new this.constructor(this),this.e+1,3)};M.greaterThan=M.gt=function(r){return this.cmp(r)>0};M.greaterThanOrEqualTo=M.gte=function(r){var e=this.cmp(r);return e==1||e===0};M.hyperbolicCosine=M.cosh=function(){var r,e,t,n,o,i=this,s=i.constructor,a=new s(1);if(!i.isFinite())return new s(i.s?1/0:NaN);if(i.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(i.e,i.sd())+4,s.rounding=1,o=i.d.length,o<32?(r=Math.ceil(o/3),e=(1/No(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),i=An(s,1,i.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=i.times(i),i=a.minus(u.times(l.minus(u.times(l))));return j(i,s.precision=t,s.rounding=n,!0)};M.hyperbolicSine=M.sinh=function(){var r,e,t,n,o=this,i=o.constructor;if(!o.isFinite()||o.isZero())return new i(o);if(e=i.precision,t=i.rounding,i.precision=e+Math.max(o.e,o.sd())+4,i.rounding=1,n=o.d.length,n<3)o=An(i,2,o,o,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,o=o.times(1/No(5,r)),o=An(i,2,o,o,!0);for(var s,a=new i(5),u=new i(16),c=new i(20);r--;)s=o.times(o),o=o.times(a.plus(s.times(u.times(s).plus(c))))}return i.precision=e,i.rounding=t,j(o,e,t,!0)};M.hyperbolicTangent=M.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,be(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};M.inverseCosine=M.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),o=t.precision,i=t.rounding;return n!==-1?n===0?e.isNeg()?ft(t,o,i):new t(0):new t(NaN):e.isZero()?ft(t,o+4,i).times(.5):(t.precision=o+6,t.rounding=1,e=e.asin(),r=ft(t,o+4,i).times(.5),t.precision=o,t.rounding=i,r.minus(e))};M.inverseHyperbolicCosine=M.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,ne=!1,t=t.times(t).minus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};M.inverseHyperbolicSine=M.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,ne=!1,t=t.times(t).plus(1).sqrt().plus(t),ne=!0,n.precision=r,n.rounding=e,t.ln())};M.inverseHyperbolicTangent=M.atanh=function(){var r,e,t,n,o=this,i=o.constructor;return o.isFinite()?o.e>=0?new i(o.abs().eq(1)?o.s/0:o.isZero()?o:NaN):(r=i.precision,e=i.rounding,n=o.sd(),Math.max(n,r)<2*-o.e-1?j(new i(o),r,e,!0):(i.precision=t=n-o.e,o=be(o.plus(1),new i(1).minus(o),t+r,1),i.precision=r+4,i.rounding=1,o=o.ln(),i.precision=r,i.rounding=e,o.times(.5))):new i(NaN)};M.inverseSine=M.asin=function(){var r,e,t,n,o=this,i=o.constructor;return o.isZero()?new i(o):(e=o.abs().cmp(1),t=i.precision,n=i.rounding,e!==-1?e===0?(r=ft(i,t+4,n).times(.5),r.s=o.s,r):new i(NaN):(i.precision=t+6,i.rounding=1,o=o.div(new i(1).minus(o.times(o)).sqrt().plus(1)).atan(),i.precision=t,i.rounding=n,o.times(2)))};M.inverseTangent=M.atan=function(){var r,e,t,n,o,i,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=vr)return s=ft(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=vr)return s=ft(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/ee+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(ne=!1,e=Math.ceil(a/ee),n=1,u=c.times(c),s=new l(c),o=c;r!==-1;)if(o=o.times(u),i=s.minus(o.div(n+=2)),o=o.times(u),s=i.plus(o.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===i.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),ne=!0,j(s,l.precision=m,l.rounding=d,!0)};M.isFinite=function(){return!!this.d};M.isInteger=M.isInt=function(){return!!this.d&&We(this.e/ee)>this.d.length-2};M.isNaN=function(){return!this.s};M.isNegative=M.isNeg=function(){return this.s<0};M.isPositive=M.isPos=function(){return this.s>0};M.isZero=function(){return!!this.d&&this.d[0]===0};M.lessThan=M.lt=function(r){return this.cmp(r)<0};M.lessThanOrEqualTo=M.lte=function(r){return this.cmp(r)<1};M.logarithm=M.log=function(r){var e,t,n,o,i,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)i=!0;else{for(o=t[0];o%10===0;)o/=10;i=o!==1}if(ne=!1,a=m+p,s=Ut(c,a),n=e?Ro(l,a+10):Ut(r,a),u=be(s,n,a,1),Mn(u.d,o=m,d))do if(a+=10,s=Ut(c,a),n=e?Ro(l,a+10):Ut(r,a),u=be(s,n,a,1),!i){+_e(u.d).slice(o+1,o+15)+1==1e14&&(u=j(u,m+1,0));break}while(Mn(u.d,o+=10,d));return ne=!0,j(u,m,d)};M.minus=M.sub=function(r){var e,t,n,o,i,s,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return ne?j(r,a,u):r}if(t=We(r.e/ee),l=We(p.e/ee),c=c.slice(),i=l-t,i){for(m=i<0,m?(e=c,i=-i,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/ee),s)+2,i>n&&(i=n,e.length=1),e.reverse(),n=i;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}i=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>i;){if(c[--n]<d[n]){for(o=n;o&&c[--o]===0;)c[o]=yt-1;--c[o],c[n]+=yt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Oo(c,t),ne?j(r,a,u):r):new y(u===3?-0:0)};M.modulo=M.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?j(new n(t),n.precision,n.rounding):(ne=!1,n.modulo==9?(e=be(t,r.abs(),0,3,1),e.s*=r.s):e=be(t,r,0,n.modulo,1),e=e.times(r),ne=!0,t.minus(e))};M.naturalExponential=M.exp=function(){return Er(this)};M.naturalLogarithm=M.ln=function(){return Ut(this)};M.negated=M.neg=function(){var r=new this.constructor(this);return r.s=-r.s,j(r)};M.plus=M.add=function(r){var e,t,n,o,i,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),ne?j(r,a,u):r;if(i=We(m.e/ee),n=We(r.e/ee),c=c.slice(),o=i-n,o){for(o<0?(t=c,o=-o,s=l.length):(t=l,n=i,s=c.length),i=Math.ceil(a/ee),s=i>s?i+1:s+1,o>s&&(o=s,t.length=1),t.reverse();o--;)t.push(0);t.reverse()}for(s=c.length,o=l.length,s-o<0&&(o=s,t=l,l=c,c=t),e=0;o;)e=(c[--o]=c[o]+l[o]+e)/yt|0,c[o]%=yt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Oo(c,n),ne?j(r,a,u):r};M.precision=M.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Gt+r);return t.d?(e=ys(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};M.round=function(){var r=this,e=r.constructor;return j(new e(r),r.e+1,e.rounding)};M.sine=M.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+ee,n.rounding=1,t=qu(n,As(n,t)),n.precision=r,n.rounding=e,j(Mt>2?t.neg():t,r,e,!0)):new n(NaN)};M.squareRoot=M.sqrt=function(){var r,e,t,n,o,i,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(ne=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=_e(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=We((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(i=n,n=i.plus(be(s,i,t+2,1)).times(.5),_e(i.d).slice(0,t)===(e=_e(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(j(i,u+1,0),i.times(i).eq(s))){n=i;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(j(n,u+1,1),r=!n.times(n).eq(s));break}return ne=!0,j(n,u,l.rounding,r)};M.tangent=M.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=be(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,j(Mt==2||Mt==4?t.neg():t,r,e,!0)):new n(NaN)};M.times=M.mul=function(r){var e,t,n,o,i,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=We(l.e/ee)+We(r.e/ee),u=d.length,c=p.length,u<c&&(i=d,d=p,p=i,s=u,u=c,c=s),i=[],s=u+c,n=s;n--;)i.push(0);for(n=c;--n>=0;){for(e=0,o=u+n;o>n;)a=i[o]+p[n]*d[o-n-1]+e,i[o--]=a%yt|0,e=a/yt|0;i[o]=(i[o]+e)%yt|0}for(;!i[--s];)i.pop();return e?++t:i.shift(),r.d=i,r.e=Oo(i,t),ne?j(r,m.precision,m.rounding):r};M.toBinary=function(r,e){return Dr(this,2,r,e)};M.toDecimalPlaces=M.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:($e(r,0,Xt),e===void 0?e=n.rounding:$e(e,0,8),j(t,r+t.e+1,e))};M.toExponential=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=Bt(n,!0):($e(r,0,Xt),e===void 0?e=o.rounding:$e(e,0,8),n=j(new o(n),r+1,e),t=Bt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toFixed=function(r,e){var t,n,o=this,i=o.constructor;return r===void 0?t=Bt(o):($e(r,0,Xt),e===void 0?e=i.rounding:$e(e,0,8),n=j(new i(o),r+o.e+1,e),t=Bt(n,!1,r+n.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};M.toFraction=function(r){var e,t,n,o,i,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),i=e.e=ys(y)-p.e-1,s=i%ee,e.d[0]=Ce(10,s<0?ee+s:s),r==null)r=i>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Gt+a);r=a.gt(e)?i>0?e:c:a}for(ne=!1,a=new f(_e(y)),l=f.precision,f.precision=i=y.length*ee*2;m=be(a,e,0,1,1),o=t.plus(m.times(n)),o.cmp(r)!=1;)t=n,n=o,o=c,c=u.plus(m.times(o)),u=o,o=e,e=a.minus(m.times(o)),a=o;return o=be(r.minus(t),n,0,1,1),u=u.plus(o.times(c)),t=t.plus(o.times(n)),u.s=c.s=p.s,d=be(c,n,i,1).minus(p).abs().cmp(be(u,t,i,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,ne=!0,d};M.toHexadecimal=M.toHex=function(r,e){return Dr(this,16,r,e)};M.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:$e(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(ne=!1,t=be(t,r,0,e,1).times(r),ne=!0,j(t)):(r.s=t.s,t=r),t};M.toNumber=function(){return+this};M.toOctal=function(r,e){return Dr(this,8,r,e)};M.toPower=M.pow=function(r){var e,t,n,o,i,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(Ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,i=u.rounding,r.eq(1))return j(a,n,i);if(e=We(r.e/ee),e>=r.d.length-1&&(t=c<0?-c:c)<=Eu)return o=bs(u,a,t,n),r.s<0?new u(1).div(o):j(o,n,i);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=Ce(+a,c),e=t==0||!isFinite(t)?We(c*(Math.log("0."+_e(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):(ne=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),o=Er(r.times(Ut(a,n+t)),n),o.d&&(o=j(o,n+5,1),Mn(o.d,n,i)&&(e=n+10,o=j(Er(r.times(Ut(a,e+t)),e),e+5,1),+_e(o.d).slice(n+1,n+15)+1==1e14&&(o=j(o,n+1,0)))),o.s=s,ne=!0,u.rounding=i,j(o,n,i))};M.toPrecision=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=Bt(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):($e(r,1,Xt),e===void 0?e=o.rounding:$e(e,0,8),n=j(new o(n),r,e),t=Bt(n,r<=n.e||n.e<=o.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};M.toSignificantDigits=M.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):($e(r,1,Xt),e===void 0?e=n.rounding:$e(e,0,8)),j(new n(t),r,e)};M.toString=function(){var r=this,e=r.constructor,t=Bt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};M.truncated=M.trunc=function(){return j(new this.constructor(this),this.e+1,1)};M.valueOf=M.toJSON=function(){var r=this,e=r.constructor,t=Bt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function _e(r){var e,t,n,o=r.length-1,i="",s=r[0];if(o>0){for(i+=s,e=1;e<o;e++)n=r[e]+"",t=ee-n.length,t&&(i+=qt(t)),i+=n;s=r[e],n=s+"",t=ee-n.length,t&&(i+=qt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function $e(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Gt+r)}function Mn(r,e,t,n){var o,i,s,a;for(i=r[0];i>=10;i/=10)--e;return--e<0?(e+=ee,o=0):(o=Math.ceil((e+1)/ee),e%=ee),i=Ce(10,ee-e),a=r[o]%i|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==i||t>3&&a+1==i/2)&&(r[o+1]/i/100|0)==Ce(10,e-2)-1||(a==i/2||a==0)&&(r[o+1]/i/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==i||!n&&t>3&&a+1==i/2)&&(r[o+1]/i/1e3|0)==Ce(10,e-3)-1,s}function So(r,e,t){for(var n,o=[0],i,s=0,a=r.length;s<a;){for(i=o.length;i--;)o[i]*=e;for(o[0]+=_r.indexOf(r.charAt(s++)),n=0;n<o.length;n++)o[n]>t-1&&(o[n+1]===void 0&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}function Du(r,e){var t,n,o;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),o=(1/No(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),r.precision+=t,e=An(r,1,e.times(o),new r(1));for(var i=t;i--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var be=function(){function r(n,o,i){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*o+a,n[u]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function e(n,o,i,s){var a,u;if(i!=s)u=i>s?1:-1;else for(a=u=0;a<i;a++)if(n[a]!=o[a]){u=n[a]>o[a]?1:-1;break}return u}function t(n,o,i,s){for(var a=0;i--;)n[i]-=a,a=n[i]<o[i]?1:0,n[i]=a*s+n[i]-o[i];for(;!n[0]&&n.length>1;)n.shift()}return function(n,o,i,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,k,B,T,S,x,R,I,L,U,F=n.constructor,J=n.s==o.s?1:-1,G=n.d,W=o.d;if(!G||!G[0]||!W||!W[0])return new F(!n.s||!o.s||(G?W&&G[0]==W[0]:!W)?NaN:G&&G[0]==0||!W?J*0:J/0);for(u?(p=1,l=n.e-o.e):(u=yt,p=ee,l=We(n.e/p)-We(o.e/p)),L=W.length,R=G.length,g=new F(J),h=g.d=[],m=0;W[m]==(G[m]||0);m++);if(W[m]>(G[m]||0)&&l--,i==null?(T=i=F.precision,s=F.rounding):a?T=i+(n.e-o.e)+1:T=i,T<0)h.push(1),y=!0;else{if(T=T/p+2|0,m=0,L==1){for(d=0,W=W[0],T++;(m<R||d)&&T--;m++)S=d*u+(G[m]||0),h[m]=S/W|0,d=S%W|0;y=d||m<R}else{for(d=u/(W[0]+1)|0,d>1&&(W=r(W,d,u),G=r(G,d,u),L=W.length,R=G.length),x=L,A=G.slice(0,L),k=A.length;k<L;)A[k++]=0;U=W.slice(),U.unshift(0),I=W[0],W[1]>=u/2&&++I;do d=0,c=e(W,A,L,k),c<0?(B=A[0],L!=k&&(B=B*u+(A[1]||0)),d=B/I|0,d>1?(d>=u&&(d=u-1),f=r(W,d,u),b=f.length,k=A.length,c=e(f,A,b,k),c==1&&(d--,t(f,L<b?U:W,b,u))):(d==0&&(c=d=1),f=W.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(W,A,L,k),c<1&&(d++,t(A,L<k?U:W,k,u))),k=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[k++]=G[x]||0:(A=[G[x]],k=1);while((x++<R||A[0]!==void 0)&&T--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,ls=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,j(g,a?i+g.e+1:i,s,y)}return g}}();function j(r,e,t,n){var o,i,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(o=1,a=m[0];a>=10;a/=10)o++;if(i=e-o,i<0)i+=ee,s=e,l=m[d=0],u=l/Ce(10,o-s-1)%10|0;else if(d=Math.ceil((i+1)/ee),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,o=1,i%=ee,s=i-ee+1}else break e;else{for(l=a=m[d],o=1;a>=10;a/=10)o++;i%=ee,s=i-ee+o,u=s<0?0:l/Ce(10,o-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Ce(10,o-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(i>0?s>0?l/Ce(10,o-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ce(10,(ee-e%ee)%ee),r.e=-e||0):m[0]=r.e=0,r;if(i==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ce(10,ee-i),m[d]=s>0?(l/Ce(10,o-s)%Ce(10,s)|0)*a:0),c)for(;;)if(d==0){for(i=1,s=m[0];s>=10;s/=10)i++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(r.e++,m[0]==yt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=yt)break;m[d--]=0,a=1}for(i=m.length;m[--i]===0;)m.pop()}return ne&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Bt(r,e,t){if(!r.isFinite())return ws(r);var n,o=r.e,i=_e(r.d),s=i.length;return e?(t&&(n=t-s)>0?i=i.charAt(0)+"."+i.slice(1)+qt(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(r.e<0?"e":"e+")+r.e):o<0?(i="0."+qt(-o-1)+i,t&&(n=t-s)>0&&(i+=qt(n))):o>=s?(i+=qt(o+1-s),t&&(n=t-o-1)>0&&(i=i+"."+qt(n))):((n=o+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),t&&(n=t-s)>0&&(o+1===s&&(i+="."),i+=qt(n))),i}function Oo(r,e){var t=r[0];for(e*=ee;t>=10;t/=10)e++;return e}function Ro(r,e,t){if(e>Fu)throw ne=!0,t&&(r.precision=t),Error(ms);return j(new r(Ko),e,1,!0)}function ft(r,e,t){if(e>vr)throw Error(ms);return j(new r(Co),e,t,!0)}function ys(r){var e=r.length-1,t=e*ee+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 qt(r){for(var e="";r--;)e+="0";return e}function bs(r,e,t,n){var o,i=new r(1),s=Math.ceil(n/ee+4);for(ne=!1;;){if(t%2&&(i=i.times(e),us(i.d,s)&&(o=!0)),t=We(t/2),t===0){t=i.d.length-1,o&&i.d[t]===0&&++i.d[t];break}e=e.times(e),us(e.d,s)}return ne=!0,i}function as(r){return r.d[r.d.length-1]&1}function gs(r,e,t){for(var n,o=new r(e[0]),i=0;++i<e.length;)if(n=new r(e[i]),n.s)o[t](n)&&(o=n);else{o=n;break}return o}function Er(r,e){var t,n,o,i,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(ne=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ce(2,m))/Math.LN10*2+5|0,u+=n,t=i=s=new d(1),d.precision=u;;){if(i=j(i.times(r),u,1),t=t.times(++l),a=s.plus(be(i,t,u,1)),_e(a.d).slice(0,u)===_e(s.d).slice(0,u)){for(o=m;o--;)s=j(s.times(s),u,1);if(e==null)if(c<3&&Mn(s.d,u-n,p,c))d.precision=u+=10,t=i=a=new d(1),l=0,c++;else return j(s,d.precision=y,p,ne=!0);else return d.precision=y,s}s=a}}function Ut(r,e){var t,n,o,i,s,a,u,c,l,m,d,p=1,y=10,f=r,b=f.d,g=f.constructor,h=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(ne=!1,l=A):l=e,g.precision=l+=y,t=_e(b),n=t.charAt(0),Math.abs(i=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=_e(f.d),n=t.charAt(0),p++;i=f.e,n>1?(f=new g("0."+t),i++):f=new g(n+"."+t.slice(1))}else return c=Ro(g,l+2,A).times(i+""),f=Ut(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?j(f,A,h,ne=!0):f;for(m=f,u=s=f=be(f.minus(1),f.plus(1),l,1),d=j(f.times(f),l,1),o=3;;){if(s=j(s.times(d),l,1),c=u.plus(be(s,new g(o),l,1)),_e(c.d).slice(0,l)===_e(u.d).slice(0,l))if(u=u.times(2),i!==0&&(u=u.plus(Ro(g,l+2,A).times(i+""))),u=be(u,new g(p),l,1),e==null)if(Mn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=be(m.minus(1),m.plus(1),l,1),d=j(f.times(f),l,1),o=a=1;else return j(u,g.precision=A,h,ne=!0);else return g.precision=A,u;u=c,o+=2}}function ws(r){return String(r.s*r.s/0)}function Fr(r,e){var t,n,o;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(o=e.length;e.charCodeAt(o-1)===48;--o);if(e=e.slice(n,o),e){if(o-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%ee,t<0&&(n+=ee),n<o){for(n&&r.d.push(+e.slice(0,n)),o-=ee;n<o;)r.d.push(+e.slice(n,n+=ee));e=e.slice(n),n=ee-e.length}else n-=o;for(;n--;)e+="0";r.d.push(+e),ne&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Wu(r,e){var t,n,o,i,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),fs.test(e))return Fr(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(_u.test(e))t=2;else if(vu.test(e))t=8;else throw Error(Gt+e);for(i=e.search(/p/i),i>0?(u=+e.slice(i+1),e=e.substring(2,i)):e=e.slice(2),i=e.indexOf("."),s=i>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,i=a-i,o=bs(n,new n(t),i,i*2)),c=So(e,t,yt),l=c.length-1,i=l;c[i]===0;--i)c.pop();return i<0?new n(r.s*0):(r.e=Oo(c,l),r.d=c,ne=!1,s&&(r=be(r,o,a*4)),u&&(r=r.times(Math.abs(u)<54?Ce(2,u):_n.pow(2,u))),ne=!0,r)}function qu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:An(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/No(5,t)),e=An(r,2,e,e);for(var o,i=new r(5),s=new r(16),a=new r(20);t--;)o=e.times(e),e=e.times(i.plus(o.times(s.times(o).minus(a))));return e}function An(r,e,t,n,o){var i,s,a,u,c=1,l=r.precision,m=Math.ceil(l/ee);for(ne=!1,u=t.times(t),a=new r(n);;){if(s=be(a.times(u),new r(e++*e++),l,1),a=o?n.plus(s):n.minus(s),n=be(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(i=m;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,c++}return ne=!0,s.d.length=m+1,s}function No(r,e){for(var t=r;--e;)t*=r;return t}function As(r,e){var t,n=e.s<0,o=ft(r,r.precision,1),i=o.times(.5);if(e=e.abs(),e.lte(i))return Mt=n?4:1,e;if(t=e.divToInt(o),t.isZero())Mt=n?3:2;else{if(e=e.minus(t.times(o)),e.lte(i))return Mt=as(t)?n?2:3:n?4:1,e;Mt=as(t)?n?1:4:n?3:2}return e.minus(o).abs()}function Dr(r,e,t,n){var o,i,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?($e(t,1,Xt),n===void 0?n=p.rounding:$e(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=ws(r);else{for(l=Bt(r),s=l.indexOf("."),y?(o=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):o=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=So(Bt(d),10,o),d.e=d.d.length),m=So(l,10,o),i=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?i--:(r=new p(r),r.d=m,r.e=i,r=be(r,d,t,n,0,o),m=r.d,i=r.e,c=ls),s=m[t],a=o/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]>o-1;)m[t]=0,t||(++i,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=_r.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=So(l,o,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=_r.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)l="0"+l;l="0."+l}else if(++i>u)for(i-=u;i--;)l+="0";else i<u&&(l=l.slice(0,i)+"."+l.slice(i))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function us(r,e){if(r.length>e)return r.length=e,!0}function Uu(r){return new this(r).abs()}function Gu(r){return new this(r).acos()}function Xu(r){return new this(r).acosh()}function zu(r,e){return new this(r).plus(e)}function Yu(r){return new this(r).asin()}function Qu(r){return new this(r).asinh()}function ju(r){return new this(r).atan()}function Hu(r){return new this(r).atanh()}function Zu(r,e){r=new this(r),e=new this(e);var t,n=this.precision,o=this.rounding,i=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=ft(this,i,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?ft(this,n,o):new this(0),t.s=r.s):!r.d||e.isZero()?(t=ft(this,i,1).times(.5),t.s=r.s):e.s<0?(this.precision=i,this.rounding=1,t=this.atan(be(r,e,i,1)),e=ft(this,i,1),this.precision=n,this.rounding=o,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(be(r,e,i,1)),t}function $u(r){return new this(r).cbrt()}function Ju(r){return j(r=new this(r),r.e+1,2)}function ec(r,e,t){return new this(r).clamp(e,t)}function tc(r){if(!r||typeof r!="object")throw Error(Lo+"Object expected");var e,t,n,o=r.defaults===!0,i=["precision",1,Xt,"rounding",0,8,"toExpNeg",-wn,0,"toExpPos",0,wn,"maxE",0,wn,"minE",-wn,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],o&&(this[t]=Vr[t]),(n=r[t])!==void 0)if(We(n)===n&&n>=i[e+1]&&n<=i[e+2])this[t]=n;else throw Error(Gt+t+": "+n);if(t="crypto",o&&(this[t]=Vr[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(ds);else this[t]=!1;else throw Error(Gt+t+": "+n);return this}function nc(r){return new this(r).cos()}function oc(r){return new this(r).cosh()}function hs(r){var e,t,n;function o(i){var s,a,u,c=this;if(!(c instanceof o))return new o(i);if(c.constructor=o,cs(i)){c.s=i.s,ne?!i.d||i.e>o.maxE?(c.e=NaN,c.d=null):i.e<o.minE?(c.e=0,c.d=[0]):(c.e=i.e,c.d=i.d.slice()):(c.e=i.e,c.d=i.d?i.d.slice():i.d);return}if(u=typeof i,u==="number"){if(i===0){c.s=1/i<0?-1:1,c.e=0,c.d=[0];return}if(i<0?(i=-i,c.s=-1):c.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;ne?s>o.maxE?(c.e=NaN,c.d=null):s<o.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[i]):(c.e=s,c.d=[i]);return}else if(i*0!==0){i||(c.s=NaN),c.e=NaN,c.d=null;return}return Fr(c,i.toString())}else if(u!=="string")throw Error(Gt+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),c.s=-1):(a===43&&(i=i.slice(1)),c.s=1),fs.test(i)?Fr(c,i):Wu(c,i)}if(o.prototype=M,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=tc,o.clone=hs,o.isDecimal=cs,o.abs=Uu,o.acos=Gu,o.acosh=Xu,o.add=zu,o.asin=Yu,o.asinh=Qu,o.atan=ju,o.atanh=Hu,o.atan2=Zu,o.cbrt=$u,o.ceil=Ju,o.clamp=ec,o.cos=nc,o.cosh=oc,o.div=rc,o.exp=ic,o.floor=sc,o.hypot=ac,o.ln=uc,o.log=cc,o.log10=mc,o.log2=lc,o.max=dc,o.min=pc,o.mod=fc,o.mul=yc,o.pow=bc,o.random=gc,o.round=wc,o.sign=Ac,o.sin=hc,o.sinh=Pc,o.sqrt=kc,o.sub=Tc,o.sum=Ic,o.tan=Bc,o.tanh=xc,o.trunc=Sc,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 o.config(r),o}function rc(r,e){return new this(r).div(e)}function ic(r){return new this(r).exp()}function sc(r){return j(r=new this(r),r.e+1,3)}function ac(){var r,e,t=new this(0);for(ne=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return ne=!0,new this(1/0);t=e}return ne=!0,t.sqrt()}function cs(r){return r instanceof _n||r&&r.toStringTag===ps||!1}function uc(r){return new this(r).ln()}function cc(r,e){return new this(r).log(e)}function lc(r){return new this(r).log(2)}function mc(r){return new this(r).log(10)}function dc(){return gs(this,arguments,"lt")}function pc(){return gs(this,arguments,"gt")}function fc(r,e){return new this(r).mod(e)}function yc(r,e){return new this(r).mul(e)}function bc(r,e){return new this(r).pow(e)}function gc(r){var e,t,n,o,i=0,s=new this(1),a=[];if(r===void 0?r=this.precision:$e(r,1,Xt),n=Math.ceil(r/ee),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));i<n;)o=e[i],o>=429e7?e[i]=crypto.getRandomValues(new Uint32Array(1))[0]:a[i++]=o%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);i<n;)o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+((e[i+3]&127)<<24),o>=214e7?crypto.randomBytes(4).copy(e,i):(a.push(o%1e7),i+=4);i=n/4}else throw Error(ds);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],r%=ee,n&&r&&(o=Ce(10,ee-r),a[i]=(n/o|0)*o);a[i]===0;i--)a.pop();if(i<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=ee)a.shift();for(n=1,o=a[0];o>=10;o/=10)n++;n<ee&&(t-=ee-n)}return s.e=t,s.d=a,s}function wc(r){return j(r=new this(r),r.e+1,this.rounding)}function Ac(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function hc(r){return new this(r).sin()}function Pc(r){return new this(r).sinh()}function kc(r){return new this(r).sqrt()}function Tc(r,e){return new this(r).sub(e)}function Ic(){var r=0,e=arguments,t=new this(e[r]);for(ne=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return ne=!0,j(t,this.precision,this.rounding)}function Bc(r){return new this(r).tan()}function xc(r){return new this(r).tanh()}function Sc(r){return j(r=new this(r),r.e+1,1)}M[Symbol.for("nodejs.util.inspect.custom")]=M.toString;M[Symbol.toStringTag]="Decimal";var _n=M.constructor=hs(Vr);Ko=new _n(Ko);Co=new _n(Co);var _=_n;import{PublicKey as Xr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kc}from"@solana/spl-token";import{PublicKey as Ae,SystemProgram as Ps,SYSVAR_RENT_PUBKEY as Cc}from"@solana/web3.js";function P({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Wr=[P({pubkey:Kc,isWritable:!1}),P({pubkey:Ps.programId,isWritable:!1}),P({pubkey:Cc,isWritable:!1})];function qr({publicKey:r,transformSol:e}){let t=Ur(r.toString());if(t instanceof Ae)return e&&t.equals(Re)?H:t;if(e&&t.toString()===Re.toBase58())return H;if(typeof t=="string"){if(t===Ae.default.toBase58())return Ae.default;try{return new Ae(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ur(r){try{return new Ae(r)}catch{return r}}var Mo=new Ae("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_o=new Ae("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bt=new Ae("SysvarRent111111111111111111111111111111111"),ks=new Ae("SysvarC1ock11111111111111111111111111111111"),hn=new Ae("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Rc=new Ae("Sysvar1nstructions1111111111111111111111111"),Gr=Ps.programId,Nd=new Ae("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Md=new Ae("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),_d=new Ae("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Vd=new Ae("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),vd=new Ae("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ed=new Ae("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fd=new Ae("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new Ae("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Wd=new Ae("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qd=new Ae("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ud=new Ae("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),H=new Ae("So11111111111111111111111111111111111111112"),Re=Ae.default;function nt(r){return qr({publicKey:r,transformSol:!0})}import{PublicKey as Lc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ts}from"@solana/spl-token";var zt={chainId:101,address:Lc.default.toBase58(),programId:Ts.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ve={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ts.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 zr=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:s=!1}){if(e===Re.toBase58()||e instanceof Xr&&Re.equals(e)){this.decimals=Ve.decimals,this.symbol=Ve.symbol,this.name=Ve.name,this.mint=new Xr(Ve.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=i?Xr.default:qr({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=zr;he.WSOL=new zr(E(C({},Ve),{mint:Ve.address}));import vo from"big.js";import Mc from"bn.js";import _c from"decimal.js-light";import Oc from"toformat";var Nc=Oc,Vn=Nc;var Vo=se("module/fraction"),Yr=Vn(vo),vn=Vn(_c),Vc={[0]:vn.ROUND_DOWN,[1]:vn.ROUND_HALF_UP,[2]:vn.ROUND_UP},vc={[0]:vo.roundDown,[1]:vo.roundHalfUp,[2]:vo.roundUp},de=class{constructor(e,t=new Mc(1)){this.numerator=Z(e),this.denominator=Z(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new de(this.denominator,this.numerator)}add(e){let t=e instanceof de?e:new de(Z(e));return this.denominator.eq(t.denominator)?new de(this.numerator.add(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof de?e:new de(Z(e));return this.denominator.eq(t.denominator)?new de(this.numerator.sub(t.numerator),this.denominator):new de(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof de?e:new de(Z(e));return new de(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof de?e:new de(Z(e));return new de(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Vo.logWithError(`${e} is not an integer.`),e<=0&&Vo.logWithError(`${e} is not positive.`),vn.set({precision:e+1,rounding:Vc[n]});let o=new vn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Vo.logWithError(`${e} is not an integer.`),e<0&&Vo.logWithError(`${e} is negative.`),Yr.DP=e,Yr.RM=vc[n]||1,new Yr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Fc=se("Raydium_price"),Je=class extends de{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:s}=t;super(i,s);this.baseToken=n,this.quoteToken=o,this.scalar=new de(Qr(n.decimals),Qr(o.decimals))}get raw(){return new de(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Fc.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};var jr=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Eo=jr;Eo.SOL=new jr(zt);import Dc from"bn.js";var Is=new de(new Dc(100)),Qe=class extends de{toSignificant(e=5,t,n){return this.mul(Is).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Is).toFixed(e,t,n)}};var at=new et(0),xs=new et(1),Fp=new et(2),Dp=new et(3),Wp=new et(5),Hr=new et(10),qp=new et(100),Up=new et(1e3),Gp=new et(1e4),Bs=9007199254740991;function Z(r){let e=se("Raydium_parseBigNumberish");if(r instanceof et)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new et(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Bs||r<=-Bs)&&e.logWithError(`BigNumberish number overflow: ${r}`),new et(String(r))):typeof r=="bigint"?new et(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new et(0))}function Qr(r){return Hr.pow(Z(r))}function Fo(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 qc=se("Raydium_amount"),Ks=Vn(Wc);function Uc(r,e){let t="0",n="0";if(r.includes(".")){let o=r.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):qc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends de{constructor(t,n,o=!0,i){let s=new Do(0),a=Hr.pow(new Do(t.decimals));if(o)s=Z(n);else{let u=new Do(0),c=new Do(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Uc(n.toString(),t.decimals);u=Z(l),c=Z(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(i||"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 fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return Ks.DP=this.token.decimals,new Ks(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ss(r){return typeof r=="object"&&r!==null&&![he,fe,Gc,de,Xc,Je,Qe].some(e=>typeof e=="object"&&r instanceof e)}function ve(r){return typeof r=="string"?Ur(r):Array.isArray(r)?r.map(e=>ve(e)):Ss(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,ve(t)])):r}import{PublicKey as Dn,sendAndConfirmTransaction as ti,Transaction as Wn,TransactionMessage as qn,VersionedTransaction as Un}from"@solana/web3.js";import el 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 zc,ComputeBudgetProgram as Cs,Transaction as Ls,TransactionMessage as Yc,Keypair as Os,VersionedTransaction as Ns}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qc}from"@solana/spl-token";var Rs=se("Raydium_txUtil"),Ms=1644;function Wo(r){let e=[],t=[];return r.microLamports&&(e.push(Cs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(v.SetComputeUnitPrice)),r.units&&(e.push(Cs.setComputeUnitLimit({units:r.units})),t.push(v.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Pn(r,e){var n,o;let t=e!=null?e:"confirmed";try{return((o=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:o.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function Zr(r,e){r.length<1&&Rs.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Rs.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ls;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ms}catch{return!1}}function le(r,e){let[t,n]=zc.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function En({instructions:r,payer:e,signers:t}){return Zr(r,[e,...t])}function Fn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Os.generate().publicKey.toString()}){let i=new Yc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ns(i).serialize()).toString("base64").length<Ms}catch{return!1}}var jc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function tn(r){let e=[];return r.forEach(t=>{t instanceof Ls&&(t.recentBlockhash||(t.recentBlockhash=Qc.toBase58()),t.feePayer||(t.feePayer=Os.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ns&&(n=jc(n));let o=n.toString("base64");e.push(o)}),console.log("simulate tx string:",e),e}import{PublicKey as Vs,AddressLookupTableAccount as qo}from"@solana/web3.js";import{PublicKey as _s}from"@solana/web3.js";import{MINT_SIZE as Hc,TOKEN_PROGRAM_ID as Zc,getTransferFeeConfig as $c,unpackMint as Jc}from"@solana/spl-token";var $r=se("Raydium_accountInfo_util");async function gt(r,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=C({batchRequest:!1},t),s=Jr(e,i),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Jr(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&$r.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:b,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&$r.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new _s(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,o)))}catch(u){u instanceof Error&&$r.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Oe(r,e,t){let n=await gt(r,e.map(o=>o.pubkey),t);return e.map((o,i)=>E(C({},o),{accountInfo:n[i]}))}async function kn({connection:r,mints:e,config:t}){var i,s,a;if(e.length===0)return{};let n=await Oe(r,e.map(u=>({pubkey:nt(u)})),t),o={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Hc){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=Jc(u.pubkey,u.accountInfo,(i=u.accountInfo)==null?void 0:i.owner);o[u.pubkey.toString()]=E(C({},c),{programId:((s=u.accountInfo)==null?void 0:s.owner)||Zc,feeConfig:(a=$c(c))!=null?a:void 0})}return o[_s.default.toBase58()]=o[H.toBase58()],o}async function ei({connection:r,address:e}){let t=await gt(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Vs(o))),n={};for(let o=0;o<e.length;o++){let i=t[o],s=e[o];if(!i)continue;let a=new qo({key:s,state:qo.deserialize(i.data)});n[s.toString()]=a,Uo[s.toString()]=a}return n}var Uo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new qo({key:new Vs("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:qo.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 Go=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await el.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}=Wo(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:o=[],endInstructionTypes:i=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...s.filter(a=>a!==Dn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){var n;let t=new Wn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var c;let{recentBlockHash:i,skipPreflight:s=!0,sendAndConfirm:a}=o||{},u=i!=null?i:await Pn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),tn([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await ti(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(l=>l.transaction.instructions.length>0),s=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Pn(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await ti(this.connection,h,this.signers.find(k=>k.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 await Promise.all(s.map(async(g,h)=>(g.recentBlockhash=f,await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:y})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((A,k)=>(A.recentBlockhash=f,a[k].length&&A.sign(...a[k]),A));tn(g);let h=await this.signAllTransactions(g);if(m){let A=0,k=[],B=async()=>{if(!h[A])return;let T=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:y});k.push({txId:T,status:"sent",signedTx:h[A]}),d==null||d([...k]),A++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),d==null||d([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let A=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:y});A.push(B)}return{txIds:A,signedTxs:h}}}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){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o}=d,i=Ie(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=C(C({},this.cluster==="devnet"?{}:Uo),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let y of a)s[y]===void 0&&u.push(new Dn(y));let c=await ei({connection:this.connection,address:u});for(let[y,f]of Object.entries(c))s[y]=f;let l=new qn({payerKey:this.feePayer,recentBlockhash:o?Dn.default.toBase58():await Pn(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new Un(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var h;let{recentBlockHash:f,skipPreflight:b=!0,sendAndConfirm:g}=y||{};if(f&&(m.message.recentBlockhash=f),tn([m]),(h=this.owner)!=null&&h.isKeyPair){let A=await this.connection.sendTransaction(m,{skipPreflight:b});if(g){let{lastValidBlockHeight:k,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:k,signature:A},"confirmed")}return{txId:A,signedTx:m}}if(this.signAllTransactions){let A=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(A[0],{skipPreflight:b}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(l=>l.builder.instructions.length>0),s=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),tn(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let b=[];for(let g of s){let h=await this.connection.sendTransaction(g,{skipPreflight:y}),{lastValidBlockHeight:A,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:A,signature:h},"confirmed"),b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let g=0,h=[],A=async()=>{if(!b[g])return;let k=await this.connection.sendTransaction(b[g],{skipPreflight:y});h.push({txId:k,status:"sent",signedTx:b[g]}),d==null||d([...h]),g++,this.connection.onSignature(k,B=>{let T=h.findIndex(S=>S.txId===k);T>-1&&(h[T].status=B.err?"error":"success"),d==null||d([...h]),B.err||A()},"processed"),this.connection.getSignatureStatus(k)};return A(),{txIds:[],signedTxs:b}}else{let g=[];for(let h=0;h<b.length;h+=1){let A=await this.connection.sendTransaction(b[h],{skipPreflight:y});g.push(A)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let c=e||{},{computeBudgetConfig:t}=c,n=Ie(c,["computeBudgetConfig"]),o=t?Wo(t):{instructions:[],instructionTypes:[]},i=this.signers.reduce((m,d)=>E(C({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(m=>{let d=[...u,m],p=t?[...o.instructions,...d]:d,f=[...new Set(d.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>new Dn(b));if(u.length<12&&En({instructions:p,payer:this.feePayer,signers:f})||En({instructions:d,payer:this.feePayer,signers:f}))u.push(m);else{if(u.length===0)throw Error("item ins too big");En({instructions:t?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:f})?s.push(new Wn().add(...o.instructions,...u)):s.push(new Wn().add(...u)),a.push(Array.from(new Set(u.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(b=>i[b]).filter(b=>b!==void 0)),u=[m]}}),u.length>0){let d=[...new Set(u.map(p=>p.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(p=>i[p]).filter(p=>p!==void 0);En({instructions:t?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new Wn().add(...o.instructions,...u)):s.push(new Wn().add(...u)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var g;let{sequentially:d,onTxUpdate:p,recentBlockHash:y,skipPreflight:f=!0}=m||{},b=y!=null?y:await Pn(this.connection,this.blockhashCommitment);if(s.forEach(async(h,A)=>{h.recentBlockhash=b,a[A].length&&h.sign(...a[A])}),tn(s),(g=this.owner)!=null&&g.isKeyPair){if(d){let h=[];for(let A of s){let k=await ti(this.connection,A,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(k)}return{txIds:h,signedTxs:s}}return{txIds:await Promise.all(s.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let h=await this.signAllTransactions(s);if(d){let A=0,k=[],B=async()=>{if(!h[A])return;let T=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:f});k.push({txId:T,status:"sent",signedTx:h[A]}),p==null||p([...k]),A++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),p==null||p([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let A=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:f});A.push(B)}return{txIds:A,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var g;let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:o=[]}=b,i=Ie(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=C(C({},this.cluster==="devnet"?{}:Uo),n),a=Array.from(new Set([...this.lookupTableAddress,...o])),u=[];for(let h of a)s[h]===void 0&&u.push(new Dn(h));let c=await ei({connection:this.connection,address:u});for(let[h,A]of Object.entries(c))s[h]=A;let l=t?Wo(t):{instructions:[],instructionTypes:[]},m=await Pn(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,A)=>E(C({},h),{[A.publicKey.toBase58()]:A}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(h=>{let A=[...f,h],k=t?[...l.instructions,...A]:A;if(f.length<12&&Fn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||Fn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(h);else{if(f.length===0)throw Error("item ins too big");let B={};for(let T of[...new Set(a)])s[T]!==void 0&&(B[T]=s[T]);if(t&&Fn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new qn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Un(T))}else{let T=new qn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Un(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[h]}}),f.length>0){let A=[...new Set(f.map(k=>k.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&Fn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new qn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Un(k))}else{let k=new qn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Un(k))}y.push(A)}return(g=this.owner)!=null&&g.signer&&y.forEach(h=>{h.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var S;let{sequentially:A,onTxUpdate:k,recentBlockHash:B,skipPreflight:T=!0}=h||{};if(p.map(async(x,R)=>{y[R].length&&x.sign(y[R]),B&&(x.message.recentBlockhash=B)}),tn(p),(S=this.owner)!=null&&S.isKeyPair){if(A){let x=[];for(let R of p){let I=await this.connection.sendTransaction(R,{skipPreflight:T}),{lastValidBlockHeight:L,blockhash:U}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:U,lastValidBlockHeight:L,signature:I},"confirmed"),x.push(I)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:T}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(A){let R=0,I=[],L=async()=>{if(!x[R])return;let U=await this.connection.sendTransaction(x[R],{skipPreflight:T});I.push({txId:U,status:"sent",signedTx:x[R]}),k==null||k([...I]),R++,this.connection.onSignature(U,F=>{let J=I.findIndex(G=>G.txId===U);J>-1&&(I[J].status=F.err?"error":"success"),k==null||k([...I]),F.err||L()},"processed"),this.connection.getSignatureStatus(U)};return L(),{txIds:[],signedTxs:x}}else{let R=[];for(let I=0;I<x.length;I+=1){let L=await this.connection.sendTransaction(x[I],{skipPreflight:T});R.push(L)}return{txIds:R,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}};var wt=class{constructor(e){this._owner=e}get publicKey(){return wt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return wt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return wt.isKeyPair(this._owner)}get isPublicKey(){return wt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!wt.isKeyPair(e)}};function Jr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ue}from"@solana/web3.js";var vs=new ue("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Es=new ue("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Xn=new ue("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ty=new ue("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ny=new ue("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ni=new ue("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fs=new ue("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),oy=new ue("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ds=new ue("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ws=new ue("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ry=new ue("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),iy=new ue("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tl=new ue("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nl=new ue("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ol=new ue("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new ue("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),qs=new ue("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),sy=new ue("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ay=new ue("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),il=new ue("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),sl=new ue("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),al=new ue("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),zn={IDO_PROGRAM_ID_V1:tl,IDO_PROGRAM_ID_V2:nl,IDO_PROGRAM_ID_V3:ol,IDO_PROGRAM_ID_V4:rl};var Xo={SERUM_MARKET:ue.default,OPENBOOK_MARKET:new ue("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ue.default,FarmV3:new ue("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ue("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ue("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ue("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ue("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ue("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ue("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:il,CREATE_CPMM_POOL_AUTH:sl,CREATE_CPMM_POOL_FEE_ACC:al,FEE_DESTINATION_ID:new ue("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as ul}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cl}from"@solana/spl-token";function Pe(r,e,t){return le([r.toBuffer(),(t!=null?t:cl).toBuffer(),e.toBuffer()],new ul("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import At from"bn.js";var Yn=1e4;function we(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=E(C({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,s=new At(i.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Yn){let u=new At(i.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Qn(r.mul(new At(Yn)),new At(Yn-i.transferFeeBasisPoints)),c=new At(i.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Qn(l.mul(new At(i.transferFeeBasisPoints)),new At(Yn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Qn(r.mul(new At(i.transferFeeBasisPoints)),new At(Yn)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function xt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Qn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new At(0))?t.add(new At(1)):t}var Ee={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Ny=C({},Ee);var Us="ray_tab_hash",oi="ray_req_hash",ll=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(Us);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(Us,r)),r},zo=async n=>{var o=n,{logCount:r=1e3,removeLastLog:e}=o,t=Ie(o,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let i=JSON.parse(localStorage.getItem(oi)||"[]").slice(0,r-1);e&&i.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),i.unshift(E(C({},t),{time:Date.now(),session:ll()}));try{localStorage.setItem(oi,JSON.stringify(i))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(i[0].data=a+(a.length>100?"...":"");!s;){i.pop();let u=JSON.stringify(t.data).substring(0,100);i[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(oi,JSON.stringify(i)),s=!0}catch{s=!1}}return new Promise(u=>u())}return zo(E(C({},t),{logCount:r,removeLastLog:!0}))}};var Yo=se("Raydium_Api"),ri=new Map;var Qo=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:o,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=o||1e3,this.api=Gs.create({baseURL:this.urlConfigs.BASE_HOST||Ee.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Yo.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Yo.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:d}=a;return n&&zo({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),Yo.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&zo({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Yo.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ee.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ee.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Gs.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(o=>o.numSlots);return n.reduce((o,i)=>o+i,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ee.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ee.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ee.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ee.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ee.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:o="desc",page:i=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ee.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${o}&page=${i}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ee.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],o=t.filter(s=>ri.has(s)?(n.push(ri.get(s)),!1):!0),i=[];return o.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ee.POOL_KEY_BY_ID)+`?ids=${o.join(",")}`)).data.filter(Boolean),i.forEach(a=>{ri.set(a.id,a)})),n.concat(i)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:o="all",sort:i="default",order:s="desc",page:a=1}=e,[u,c]=[t&&nt(t).toBase58(),n&&n!=="undefined"?nt(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ee.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${o}&poolSortField=${i}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Ee.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ee.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ee.CHECK_AVAILABILITY)).data}};var jo="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Xs="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as yi,TOKEN_PROGRAM_ID as jt,AccountLayout as Bn,TOKEN_2022_PROGRAM_ID as Dl}from"@solana/spl-token";import{PublicKey as or,SystemProgram as Wl}from"@solana/web3.js";var ii=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ke=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=se(t)}createTxBuilder(e){return this.scope.checkOwner(),new Go({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ii(e))}logInfo(...e){this.logger.info(ii(e))}logAndCreateError(...e){let t=ii(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 In}from"@solana/spl-token";import{PublicKey as vl,SystemProgram as El}from"@solana/web3.js";import Fl from"bn.js";import{PublicKey as ia,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 Hs,{isBN as Zs}from"bn.js";import{bits as dl,BitStructure as pb,blob as pl,Blob as fb,cstr as yb,f32 as bb,f32be as gb,f64 as wb,f64be as Ab,greedy as hb,Layout as fl,ns64 as Pb,ns64be as kb,nu64 as yl,nu64be as Tb,offset as Ib,s16 as Bb,s16be as xb,s24 as Sb,s24be as Kb,s32 as bl,s32be as Cb,s40 as Rb,s40be as Lb,s48 as Ob,s48be as Nb,s8 as Mb,seq as gl,struct as _b,Structure as wl,u16 as Al,u16be as Vb,u24 as vb,u24be as Eb,u32 as hl,u32be as Fb,u40 as Db,u40be as Wb,u48 as qb,u48be as Ub,u8 as Pl,UInt as kl,union as Gb,Union as Xb,unionLayoutDiscriminator as zb,utf8 as Yb}from"@solana/buffer-layout";var Ho=fl,zs=wl;var si=kl;var Ys=Pl,St=Al;var ai=hl;var Qs=yl;var Fe=bl;var js=gl;var pe=pl;var ui=dl;var nn=class extends Ho{constructor(t,n,o){super(t,o);this.blob=pe(t),this.signed=n}decode(t,n=0){let o=new Hs(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new Hs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Zo=class extends Ho{constructor(t){super(8,t);this._lower=ui(ai(),!1),this._upper=ui(ai(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return C(C({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function D(r){return new si(1,r)}function je(r){return new si(4,r)}function w(r){return new nn(8,!1,r)}function Y(r){return new nn(16,!1,r)}function $s(r){return new nn(1,!0,r)}function Jo(r){return new nn(8,!0,r)}function Js(r){return new nn(16,!0,r)}var $o=class extends Ho{constructor(t,n,o,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(r){return new $o(pe(32),e=>new Tl(e),e=>e.toBuffer(),r)}function qe(r){return new $o(Ys(),Il,Bl,r)}function Il(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Bl(r){return r?1:0}var ci=class extends zs{decode(e,t){return super.decode(e,t)}};function V(r,e,t){return new ci(r,e,t)}function X(r,e,t){let n,o=typeof e=="number"?e:Zs(e)?e.toNumber():new Proxy(e,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=Zs(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,s)},set(i,s,a){return s==="count"&&(n=a),Reflect.set(i,s,a)}});return js(r,o,t)}var Tn=V([K("mint"),K("owner"),w("amount"),je("delegateOption"),K("delegate"),D("state"),je("isNativeOption"),w("isNative"),w("delegatedAmount"),je("closeAuthorityOption"),K("closeAuthority")]);function xl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function li(r,...e){if(!xl(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 mi(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 ea(r,e){li(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var tr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),ht=(r,e)=>r<<32-e|r>>>e;var ug=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 di(r){return typeof r=="string"&&(r=Sl(r)),li(r),r}var er=class{clone(){return this._cloneInto()}},cg={}.toString;function ta(r){let e=n=>r().update(di(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 o=BigInt(32),i=BigInt(4294967295),s=Number(t>>o&i),a=Number(t&i),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var na=(r,e,t)=>r&e^~r&t,oa=(r,e,t)=>r&e^r&t^e&t,nr=class extends er{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=tr(this.buffer)}update(e){mi(this);let{view:t,buffer:n,blockLen:o}=this;e=di(e);let i=e.length;for(let s=0;s<i;){let a=Math.min(o-this.pos,i-s);if(a===o){let u=tr(e);for(;o<=i-s;s+=o)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){mi(this),ea(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>o-s&&(this.process(n,0),s=0);for(let m=s;m<o;m++)t[m]=0;Kl(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=tr(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],i)}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:o,finished:i,destroyed:s,pos:a}=this;return e.length=o,e.pos=a,e.finished=i,e.destroyed=s,o%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]),Yt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qt=new Uint32Array(64),pi=class extends nr{constructor(){super(64,32,8,!1),this.A=Yt[0]|0,this.B=Yt[1]|0,this.C=Yt[2]|0,this.D=Yt[3]|0,this.E=Yt[4]|0,this.F=Yt[5]|0,this.G=Yt[6]|0,this.H=Yt[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:a,H:u}=this;return[e,t,n,o,i,s,a,u]}set(e,t,n,o,i,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Qt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Qt[m-15],p=Qt[m-2],y=ht(d,7)^ht(d,18)^d>>>3,f=ht(p,17)^ht(p,19)^p>>>10;Qt[m]=f+Qt[m-7]+y+Qt[m-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ht(a,6)^ht(a,11)^ht(a,25),p=l+d+na(a,u,c)+Cl[m]+Qt[m]|0,f=(ht(n,2)^ht(n,13)^ht(n,22))+oa(n,o,i)|0;l=c,c=u,u=a,a=s+p|0,s=i,i=o,o=n,n=p+f|0}n=n+this.A|0,o=o+this.B|0,i=i+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,o,i,s,a,u,c,l)}roundClean(){Qt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ra=ta(()=>new pi);var xg=se("Raydium_Util");function sa({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],o=[];for(let{pubkey:i,account:s}of t.value){let a=Tn.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:i,mint:u,amount:c,isAssociated:Pe(r,u,s.owner).publicKey.equals(i),isNative:!1,programId:s.owner}),o.push({pubkey:i,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ia.default,amount:new Ol(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:o}}function Ue({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()]),o=ra(n);return new ia(o)}function fi(r){let{mint:e,tokenAccount:t,owner:n,programId:o=In}=r;return Ml(t,e,n,o)}function Kt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:i=In}=r;return _l(e,t,o,n,i)}async function _t(r){let{connection:e,amount:t,commitment:n,payer:o,owner:i,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(Tn.span,n),u=Z(t).add(new Fl(a)),c=Ue({fromPublicKey:o,programId:In});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[El.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:Tn.span,programId:In}),fi({mint:new vl(Ve.address),tokenAccount:c.publicKey,owner:i,programId:In})],instructionTypes:[v.CreateAccount,v.InitAccount],endInstructionTypes:s?[]:[v.CloseAccount],endInstructions:s?[]:[Kt({tokenAccount:c.publicKey,payer:o,owner:i})]}}function jn({source:r,destination:e,owner:t,amount:n,multiSigners:o=[],tokenProgram:i=In}){return Vl(r,e,t,BigInt(String(n)),o,i)}var Hn=class extends ke{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:o}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=o||[],this._clientOwnedToken=!!(n||o)}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 Pe(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 o=C(C({},{}),t),[i,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:jt},o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Dl},o.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=sa({owner:this.scope.ownerPubKey,solAccountResp:i,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}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=jt,associatedOnly:o=!0}){await this.fetchWalletTokenAccounts();let i=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 i){let{publicKey:u}=a;if(u&&(!o||o&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:o,associatedOnly:i,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new or(t.tokenProgram||jt),m=this.getAssociatedTokenAccount(n,new or(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!i||h.pubkey.equals(m))).sort((h,A)=>h.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(o===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let h=yi(s,m,s,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(v.CreateATA);else if(!(A.owner.equals(l)&&Bn.decode(A.data).mint.equals(n)&&Bn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(v.CreateATA);if(n.equals(H)&&o.amount){let A=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:o.payer||this.scope.ownerPubKey,amount:(f=o.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),o.amount&&(p.instructions.push(jn({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:o.amount,tokenProgram:jt})),p.instructionTypes.push(v.TransferAmount))}return u||(p.endInstructions.push(Kt({owner:s,payer:o.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:m,instructionParams:p}}else{let h=Ue({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(Bn.span),k=Wl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:A+Number((g=(b=o.amount)==null?void 0:b.toString())!=null?g:0),space:Bn.span,programId:l});return p.instructions.push(k,fi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(v.CreateAccount),p.instructionTypes.push(v.InitAccount),u||(p.endInstructions.push(Kt({owner:s,payer:o.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=jt,autoUnwrapWSOLToSOL:o}){var u;await this.fetchWalletTokenAccounts();let i=(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(!i){let c=this.getAssociatedTokenAccount(t,n),l=await yi(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[v.CreateATA],i=c}return o&&H.toBase58()===t.toBase58()&&(a.endInstructions=[Kt({owner:s,payer:s,tokenAccount:i,programId:n})],a.endInstructionTypes=[v.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:o,mint:i,programId:s=jt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(i,s);if(new or(H).equals(i)){let p=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:o,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=yi(this.scope.ownerPubKey,d,this.scope.ownerPubKey,i,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(jt)&&Bn.decode(f.data).mint.equals(i)&&Bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[v.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:o=jt,amount:i,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new or(H))&&s){let l=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:d}=l,p=Ie(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:o}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:d}=m,p=Ie(m,["tokenAccount"]);u=d,c.addInstruction(p)}return C({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as rm}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as im}from"@solana/web3.js";import{PublicKey as ca}from"@solana/web3.js";var bi=V([D("instruction")]),gi=V([D("instruction")]),ql=V([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),Y("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),X(w(),15,"padding")]),Ul=V([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),Y("perShareReward"),w("lastSlot"),w("perSlotReward")]),Gl=V([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),Y("perShareRewardA"),w("perSlotRewardA"),D("option"),K("rewardVaultB"),pe(7),w("totalRewardB"),Y("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),Xl=V([w(),w("state"),w("nonce"),w("validRewardTokenNum"),Y("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),X(ql,5,"rewardInfos"),K("creator"),K(),X(w(),32,"padding")]),zl=new Proxy(Ul,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return E(C({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(r,e,t)}}),Yl=new Proxy(Gl,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return E(C({},o),{version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]})}:Reflect.get(r,e,t)}}),rr=new Proxy(Xl,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return E(C({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var s;return E(C({},i),{rewardType:((s=Object.entries(Ht).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Ql=V([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),wi=V([D("instruction"),w("nonce"),X(Ql,5,"rewardTimeInfo")]),Ai=V([D("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),hi=V([D("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),rw=V([w("state"),K("id"),K("owner"),w("deposited"),X(w(),1,"rewardDebts")]),Pi=V([w("state"),K("id"),K("owner"),w("deposited"),X(Y(),1,"rewardDebts"),w(""),w("voteLockedBalance"),X(w(),15)]),iw=V([w("state"),K("id"),K("owner"),w("deposited"),X(w(),2,"rewardDebts")]),aa=V([w("state"),K("id"),K("owner"),w("deposited"),X(Y(),2,"rewardDebts"),X(w(),17)]),ua=V([w(),w("state"),K("id"),K("owner"),w("deposited"),X(Y(),5,"rewardDebts"),X(w(),16)]),ot=V([D("instruction"),w("amount")]),jl=V([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),$s("digitShift"),X(D(),7,"reserved1"),X(w(),7,"reserved2")]),Hl=V([pe(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),X(D(),32,"reserved1"),X(jl,4,"votingMints"),Jo("timeOffset"),D("bump"),X(D(),7,"reserved2"),X(w(),11,"reserved3")]),Zl=V([Jo("startTime"),Jo("endTime"),D("kind"),X(D(),15,"reserved")]),$l=V([X(Zl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),qe("isUsed"),qe("allowClawback"),D("votingMintConfigIdx"),X(D(),29,"reserved")]),Jl=V([pe(8),K("voterAuthority"),K("registrar"),X($l,32,"deposits"),D("voterBump"),D("voterWweightRecordBump"),X(D(),94,"reserved")]);var la=new ca("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ma=new ca("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var da={3:Pi,5:aa,6:ua},ki=r=>[3,5,6].indexOf(r)!==-1,Ti=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,o=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,i={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${o}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${o}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${o}`}};return(s=i[e])==null?void 0:s.call(i)},Ht={"Standard SPL":0,"Option tokens":1},ut={[vs.toString()]:3,[Es.toString()]:5,[Xn.toString()]:6,[Xo.FarmV3.toString()]:3,[Xo.FarmV5.toString()]:5,[Xo.FarmV6.toString()]:6};import{PublicKey as me,SystemProgram as ya,SYSVAR_RENT_PUBKEY as nm,SYSVAR_CLOCK_PUBKEY as ir,TransactionInstruction as Pt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as qw,TOKEN_PROGRAM_ID as Zt,ASSOCIATED_TOKEN_PROGRAM_ID as Uw}from"@solana/spl-token";import ba from"bn.js";import em from"bn.js";var tm=se("Raydium.farm.util");function Zn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:o}=le([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return o}function ct({programId:r,poolId:e,owner:t,version:n}){let{publicKey:o}=le([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return o}var pa=({programId:r,poolId:e})=>le([e.toBuffer()],r);function fa(r){return{isSet:new em(1),rewardPerSecond:Z(r.perSecond),rewardOpenTime:Z(r.openTime),rewardEndTime:Z(r.endTime),rewardType:Z(Ht[r.rewardType])}}function Ii(r){return Z(r.endTime).sub(Z(r.openTime)).mul(Z(r.perSecond))}function $n(r){let e=da[r];return e||tm.logWithError("invalid version",r),e}var om=se("Raydium_farm_instruction"),nA={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 sr(r){let{version:e,id:t,ledger:n,programId:o,owner:i}=r,s={3:9,5:10}[e];s||om.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(bi.span);bi.encode({instruction:s},a);let u=[P({pubkey:t}),P({pubkey:n}),P({pubkey:i,isWritable:!1}),P({pubkey:ya.programId,isWritable:!1}),P({pubkey:nm,isWritable:!1})];return{instruction:new Pt({programId:o,keys:u,data:a}),instructionType:v.FarmV3CreateLedger}}function ga(r){var n;let e=Buffer.alloc(wi.span);wi.encode({instruction:0,nonce:new ba(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Wr,P({pubkey:r.farmId}),P({pubkey:r.farmAuthority,isWritable:!1}),P({pubkey:r.lpVault}),P({pubkey:r.lpMint,isWritable:!1}),P({pubkey:r.lockVault}),P({pubkey:r.lockMint,isWritable:!1}),P({pubkey:(n=r.lockUserAccount)!=null?n:Re}),P({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let o of r.rewardInfo)t.push(P({pubkey:o.rewardMint,isWritable:!1}),P({pubkey:o.rewardVault}),P({pubkey:o.userRewardToken}));return{instruction:new Pt({programId:r.programId,keys:t,data:e}),instructionType:v.FarmV6Create}}function wa(r){let e=Buffer.alloc(gi.span);gi.encode({instruction:5},e);let t=[P({pubkey:Zt,isWritable:!1}),P({pubkey:r.id}),P({pubkey:r.authority,isWritable:!1}),P({pubkey:r.lpVault,isWritable:!1}),P({pubkey:r.rewardVault}),P({pubkey:r.userRewardToken}),P({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Pt({programId:r.programId,keys:t,data:e}),instructionType:v.FarmV6CreatorWithdraw}}function Bi({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:o}){let i=Buffer.alloc(Ai.span);Ai.encode({instruction:3,rewardReopenTime:Z(o.openTime),rewardEndTime:Z(o.endTime),rewardPerSecond:Z(o.perSecond)},i);let s=[P({pubkey:Zt,isWritable:!1}),P({pubkey:n.id}),P({pubkey:n.lpVault,isWritable:!1}),P({pubkey:e}),P({pubkey:t}),P({pubkey:r,isWritable:!1,isSigner:!0})];return new Pt({programId:n.programId,keys:s,data:i})}function xi({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:o}){let i=Buffer.alloc(hi.span);hi.encode({instruction:4,isSet:new ba(1),rewardPerSecond:Z(o.perSecond),rewardOpenTime:Z(o.openTime),rewardEndTime:Z(o.endTime),rewardType:Z(Ht[o.rewardType])},i);let s=[...Wr,P({pubkey:t.id}),P({pubkey:t.authority,isWritable:!1}),P({pubkey:o.mint,isWritable:!1}),P({pubkey:n}),P({pubkey:e}),P({pubkey:r,isWritable:!1,isSigner:!0})];return new Pt({programId:t.programId,keys:s,data:i})}function Jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=r,[a,u]=[new me(e.programId),new me(e.id)],c=ct({programId:a,poolId:u,owner:i,version:6}),l=Buffer.alloc(ot.span);ot.encode({instruction:2,amount:Z(s)},l);let m=[P({pubkey:Zt,isWritable:!1}),P({pubkey:u}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:new me(t.lpVault)}),P({pubkey:c}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(P({pubkey:new me(t.rewardInfos[d].vault)})),m.push(P({pubkey:o[d]}));return new Pt({programId:a,keys:m,data:l})}function eo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:5}),m=Buffer.alloc(ot.span);ot.encode({instruction:12,amount:Z(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:o[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ir,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(P({pubkey:o[p]})),d.push(P({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function to(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:3}),m=Buffer.alloc(ot.span);ot.encode({instruction:11,amount:Z(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:o[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ir,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:3}),m=Buffer.alloc(ot.span);ot.encode({instruction:10,amount:Z(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:o[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ir,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function ha(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new me(e.programId),new me(e.id)],l=ct({programId:u,poolId:c,owner:i,version:5}),m=Buffer.alloc(ot.span);ot.encode({instruction:11,amount:Z(s)},m);let d=[P({pubkey:c}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:l}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n}),P({pubkey:new me(t.lpVault)}),P({pubkey:o[0]}),P({pubkey:new me(t.rewardInfos[0].vault)}),P({pubkey:ir,isWritable:!1}),P({pubkey:Zt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(P({pubkey:o[p]})),d.push(P({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(P({pubkey:p}));return new Pt({programId:u,keys:d,data:m})}function Pa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=r,[a,u]=[new me(e.programId),new me(e.id)],c=ct({programId:a,poolId:u,owner:i,version:6}),l=Buffer.alloc(ot.span);ot.encode({instruction:1,amount:Z(s)},l);let m=[P({pubkey:Zt,isWritable:!1}),P({pubkey:ya.programId,isWritable:!1}),P({pubkey:u}),P({pubkey:new me(t.authority),isWritable:!1}),P({pubkey:new me(t.lpVault)}),P({pubkey:c}),P({pubkey:i,isWritable:!1,isSigner:!0}),P({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(P({pubkey:new me(t.rewardInfos[d].vault)})),m.push(P({pubkey:o[d]}));return new Pt({programId:a,keys:m,data:l})}var no=class extends ke{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Re)){let n=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Ii(E(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:o=Xn,txVersion:i}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ge(e.lpMint.address),lockInfo:{lockMint:la,lockVault:ma},version:6,rewardInfos:t,programId:o},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ue({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(rr.span);u.addInstruction({instructions:[im.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:rr.span,programId:a.programId})]});let{publicKey:d,nonce:p}=pa({programId:new ge(a.programId),poolId:l.publicKey}),y=Zn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let B of a.rewardInfos){B.openTime>=B.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",B.openTime.toString()),isNaN(Ht[B.rewardType])&&this.logAndCreateError("rewardType error",B.rewardType),Number(B.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",B.perSecond),f.push(fa(B));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:B,payer:c});S&&u.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=B.mint.equals(Re)?new ge(Ve.address):B.mint;b.push({rewardMint:x,rewardVault:Zn({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new ge(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&u.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=ga({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:o}){var b;let i=ut[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=ve((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(Re)?new ge(Ve.address):n.mint,l=a.rewardInfos.findIndex(g=>new ge(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(b=m.vault)!=null?b:Re,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[Bi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[v.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:o}){var l;let i=ut[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Re)?new ge(Ve.address):m.mint,p=a.rewardInfos.findIndex(A=>new ge(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Re,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=Bi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[v.FarmV6Restart]})}return c.versionBuild({txVersion:o})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:o,payer:i}=e,s=ut[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ve((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,c=this.createTxBuilder(),l=o.mint.equals(Re)?new ge(Ve.address):o.mint,m=Zn({programId:new ge(n.programId),poolId:new ge(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:o,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=l,c.addInstruction({instructions:[xi({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:o})],instructionTypes:[v.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:o,payer:i}=e,s=ut[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ve((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of o){let m=l.mint.equals(Re)?new ge(Ve.address):l.mint,d=Zn({programId:new ge(n.programId),poolId:new ge(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=xi({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:E(C({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[v.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:o,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=ut[d];ki(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ge(n.programId),new ge(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=ct({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let F of this.scope.account.tokenAccounts)if(a){let J=Pe(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&J.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let k=b.lpMint,B=A[k.address];B||this.logAndCreateError("you don't have any lp","lp zero",A);let T=[];for(let F of m){let J=s&&F.mint.address===H.toString(),G=A[F.mint.address];if(!G){let{account:W,instructionParams:Ye}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new ge(F.mint.address),notUseTokenAccount:J,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!J,associatedOnly:J?!1:a,checkCreateATAOwner:u});G=W,Ye&&h.addInstruction(Ye)}A[F.mint.address]=G,T.push(G)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=$n(p).decode(x.data)),n.programId!==Xn.toString()&&!S){let{instruction:F,instructionType:J}=sr({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[F],instructionTypes:[J]})}let R=Ti({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});R&&this.logAndCreateError(R);let I={amount:Z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:B,rewardAccounts:T,userAuxiliaryLedgers:c==null?void 0:c.map(F=>new ge(F))},L=p===6?Pa(I):p===5?ha(I):Aa(I),U={3:v.FarmV3Deposit,5:v.FarmV5Deposit,6:v.FarmV6Deposit};return h.addInstruction({instructions:[L],instructionTypes:[U[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:o,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=ut[n.programId];ki(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let R of this.scope.account.tokenAccounts)if(u){let I=Pe(this.scope.ownerPubKey,R.mint).publicKey;R.publicKey&&I.equals(R.publicKey)&&(b[R.mint.toString()]=R.publicKey)}else b[R.mint.toString()]=R.publicKey;if(i)i.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let R=ct({programId:new ge(n.programId),poolId:new ge(n.id),owner:this.scope.ownerPubKey,version:p}),I=await this.scope.connection.getAccountInfo(R);I||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:I}),$n(p).decode(I.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===H.toString(),A=b[g.toString()];if(!A){let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ge(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=R,I&&f.addInstruction(I)}b[g.toString()]=A;let k=[];for(let R of d){let I=s&&R.mint.address===H.toString(),L=b[R.mint.address];if(!L){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new ge(R.mint.address),notUseTokenAccount:I,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!I,associatedOnly:I?!1:u,checkCreateATAOwner:c});L=U,F&&f.addInstruction(F)}b[R.mint.address]=L,k.push(L)}let B=Ti({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});B&&this.logAndCreateError(B);let T={amount:Z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(R=>new ge(R))},S=p===6?Jn(T):p===5?eo(T):to(T),x={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let o=ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),i=ut[e.programId];i!==6&&this.logAndCreateError("invalid farm version",i);let s=e.rewardInfos.findIndex(y=>y.mint.address===Re.toString()?new ge(Ve.address):t),a=o.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Re,c=this.createTxBuilder(),l;if(t.equals(Re)){let y=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Ii(E(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new _(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:[rm(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[v.CreateATA]})):l=y}let{instruction:m,instructionType:d}=wa({programId:o.programId,id:o.id,authority:o.authority,lpVault:o.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(i){let f=Pe(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>E(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=ut[f],k=b.address,B=n&&k===H.toString(),T=m[k];if(!T){let{account:U,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ge(k),notUseTokenAccount:B,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:B?!1:i,checkCreateATAOwner:s});T=U,F&&l.addInstruction(F)}m[k.toString()]=T;let S=[];for(let U of g){let F=n&&U.mint.address===H.toString(),J=m[U.mint.address];if(!J){let{account:G,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:U.mint.programId,mint:new ge(U.mint.address),notUseTokenAccount:F,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:i,checkCreateATAOwner:s});J=G,W&&l.addInstruction(W)}m[U.mint.address]=J,S.push(J)}let x=p[h],R={amount:at,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(U=>new ge(U))},I=A===6?Jn(R):A===5?eo(R):to(R),L={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};l.addInstruction({instructions:[I],instructionTypes:[L[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as Xe}from"@solana/web3.js";import{AccountLayout as Wm,NATIVE_MINT as tu,TOKEN_PROGRAM_ID as Cn}from"@solana/spl-token";var xA=V([je("mintAuthorityOption"),K("mintAuthority"),w("supply"),D("decimals"),D("isInitialized"),je("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as RA}from"@solana/web3.js";import{MintLayout as OA,TOKEN_PROGRAM_ID as MA}from"@solana/spl-token";var ar=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),oo=o=>{var i=o,{amount:r,isRaw:e,name:t}=i,n=Ie(i,["amount","isRaw","name"]);return new fe(new he({mint:nt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};var He=o=>{var i=o,{address:r,programId:e,decimals:t}=i,n=Ie(i,["address","programId","decimals"]);return C({chainId:101,address:nt(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},$t=r=>r?E(C({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:E(C({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:E(C({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as io,ASSOCIATED_TOKEN_PROGRAM_ID as Am}from"@solana/spl-token";import{PublicKey as Ct,TransactionInstruction as Sn,SystemProgram as hm,SYSVAR_RENT_PUBKEY as ih}from"@solana/web3.js";var Si=V([D("instruction"),w("amountIn"),w("minAmountOut")]),Ki=V([D("instruction"),w("maxAmountIn"),w("amountOut")]),HA=V([D("instruction"),D("nonce")]),sm=V([D("instruction"),D("nonce"),w("startTime")]),ur=V([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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),w("swapBase2QuoteFee"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),X(w(),3,"padding")]),ZA=V([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"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),X(w(),64,"padding")]),Ci=V([D("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Ri=V([D("instruction"),w("amountIn")]);var ka=V([w("fee")]);import{PublicKey as am}from"@solana/web3.js";var xn=new am("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),rn=5e4,um=V([w("x"),w("y"),w("price")]),cm=V([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),X(um,rn,"DataElement")]);function lm(r,e){return[0,rn-2]}function mm(r){return[0,rn-2]}function dm(r){return[0,rn-2]}function pm(r,e,t){let[n,o]=lm(e,t),i=n,s=o,a=0,u=e*r.multiplier/t;for(;i<=s;){if(a=Math.floor((s+i)/2),a===0||a>=rn-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];i=a+1}}return[a,a,!1]}function Li(r,e,t){let[n,o,i]=pm(r,e,t);if(!i)return 0;if(n===o){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[o].x,c=r.DataElement[o].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function on(r,e,t){return e*r.multiplier/t}function Ta(r,e,t){return e*t/r.multiplier}function fm(r,e){let[t,n]=mm(e),o=t,i=n,s=0,a=e;for(;o<i;){if(s=Math.floor((i+o)/2),s<=0||s>rn-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)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 ym(r,e){let[t,n]=dm(e),o=t,i=n,s=0,a=e;for(;o<=i;){if(s=Math.floor((i+o)/2),s<=0||s>=rn-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)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 Ia(r,e,t,n){let o=n?e+t:e-t,[i,s,a]=fm(r,o);if(!a)return[0,0,!1,a];if(i===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[i].x,c=r.DataElement[s].x,l=r.DataElement[i].price,m=r.DataElement[s].price,d=r.DataElement[i].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(o-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-o)*r.multiplier/l),[y,f,!1,a]}}}function bm(r,e,t,n){let o=n?e-t:e+t,[i,s,a]=ym(r,o);if(!a)return[0,0,!1,a];if(i===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[i].x,c=r.DataElement[s].x,l=r.DataElement[i].price,m=r.DataElement[s].price,d=r.DataElement[i].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-o)/r.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(o-p)/r.multiplier),[y,f,!1,a]}}}function gm(r,e){let t=Ia(r,e,0,!1);return t[3]?t[0]:0}function Ba(r,e,t,n){let o=Li(r,e,t),i=on(r,e,o),s=on(r,t,o),a=on(r,n,o),u=!0,[c,l,m,d]=Ia(r,i,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ta(r,p,o)}}function xa(r,e,t,n){let o=Li(r,e,t),i=on(r,e,o),s=on(r,t,o),a=on(r,n,o),u=!1,[c,l,m,d]=bm(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=i-l;return Ta(r,p,o)}}function wm(r){let e=cm.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 Sa(r,e,t,n){let o=gm(r,on(r,e,Li(r,e,t)))/r.multiplier;return n?o:1/o}var ro=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(xn);e&&(this._layoutData=wm(e==null?void 0:e.data))}}};var Ka=se("Raydium_liquidity_instruction");function Ca(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:i,fixedSide:s}=r,a=Buffer.alloc(Ci.span);Ci.encode({instruction:3,baseAmountIn:Z(o),quoteAmountIn:Z(i),fixedSide:s==="base"?at:xs},a);let u=[P({pubkey:io,isWritable:!1}),P({pubkey:new Ct(e.id)}),P({pubkey:new Ct(t.authority),isWritable:!1}),P({pubkey:new Ct(t.openOrders),isWritable:!1}),P({pubkey:new Ct(t.targetOrders)}),P({pubkey:new Ct(e.lpMint.address)}),P({pubkey:new Ct(t.vault.A)}),P({pubkey:new Ct(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(P({pubkey:xn})),u.push(P({pubkey:new Ct(e.marketId),isWritable:!1}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:new Ct(t.marketEventQueue),isWritable:!1})),new Sn({programId:new Ct(e.programId),keys:u,data:a})}function Oi(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:o}=r,i=ve(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Ri.span);Ri.encode({instruction:4,amountIn:Z(o)},a);let u=[P({pubkey:io,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders}),P({pubkey:i.targetOrders}),P({pubkey:i.mintLp.address}),P({pubkey:i.vault.A}),P({pubkey:i.vault.B})];return s===5?u.push(P({pubkey:xn})):(u.push(P({pubkey:i.id})),u.push(P({pubkey:i.id}))),u.push(P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId}),P({pubkey:i.marketBaseVault}),P({pubkey:i.marketQuoteVault}),P({pubkey:i.marketAuthority,isWritable:!1}),P({pubkey:n.lpTokenAccount}),P({pubkey:n.baseTokenAccount}),P({pubkey:n.quoteTokenAccount}),P({pubkey:n.owner,isWritable:!1,isSigner:!0}),P({pubkey:i.marketEventQueue}),P({pubkey:i.marketBids}),P({pubkey:i.marketAsks})),new Sn({programId:i.programId,keys:u,data:a})}return new Sn({programId:i.programId,keys:[]})}function Ra({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:i,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:A,coinAmount:k,pcAmount:B,ammConfigId:T,feeDestinationId:S}){let x=V([D("instruction"),D("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),R=[{pubkey:io,isSigner:!1,isWritable:!1},{pubkey:Am,isSigner:!1,isWritable:!1},{pubkey:hm.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,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:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],I=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:B},I),{instruction:new Sn({keys:R,programId:r,data:I}),instructionType:v.AmmV4CreatePool}}function Pm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},o){let i=ve(r),s=Buffer.alloc(Si.span);Si.encode({instruction:9,amountIn:Z(t),minAmountOut:Z(n)},s);let a=[P({pubkey:io,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders})];return o===4&&a.push(P({pubkey:i.targetOrders})),a.push(P({pubkey:i.vault.A}),P({pubkey:i.vault.B})),o===5&&a.push(P({pubkey:xn})),a.push(P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId}),P({pubkey:i.marketBids}),P({pubkey:i.marketAsks}),P({pubkey:i.marketEventQueue}),P({pubkey:i.marketBaseVault}),P({pubkey:i.marketQuoteVault}),P({pubkey:i.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1})),new Sn({programId:i.programId,keys:a,data:s})}function km({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},o){let i=ve(r),s=Buffer.alloc(Ki.span);Ki.encode({instruction:11,maxAmountIn:Z(t),amountOut:Z(n)},s);let a=[P({pubkey:io,isWritable:!1}),P({pubkey:i.id}),P({pubkey:i.authority,isWritable:!1}),P({pubkey:i.openOrders}),P({pubkey:i.targetOrders}),P({pubkey:i.vault.A}),P({pubkey:i.vault.B})];return o===5&&a.push(P({pubkey:xn})),a.push(P({pubkey:i.marketProgramId,isWritable:!1}),P({pubkey:i.marketId}),P({pubkey:i.marketBids}),P({pubkey:i.marketAsks}),P({pubkey:i.marketEventQueue}),P({pubkey:i.marketBaseVault}),P({pubkey:i.marketQuoteVault}),P({pubkey:i.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Sn({programId:i.programId,keys:a,data:s})}function cr(r){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:i,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pm(E(C({},a),{amountIn:o,minAmountOut:i}),t);if(s==="out")return km(E(C({},a),{maxAmountIn:o,amountOut:i}),t);Ka.logWithError("invalid params","params",r)}throw Ka.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as De,TOKEN_2022_PROGRAM_ID as Jt,ASSOCIATED_TOKEN_PROGRAM_ID as Ya}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as Tt,SystemProgram as Kn,Keypair as Wi}from"@solana/web3.js";import Qa from"bn.js";import Lm from"bn.js";function lr(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Ni(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Mi(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function so(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function La(r,e){return so(r,e)?null:Ni(r,e)}function Oa(r,e){return so(r,e)?null:Mi(r,e)}var Ah=Buffer.from("amm_config","utf8"),Tm=Buffer.from("pool","utf8"),Im=Buffer.from("pool_vault","utf8"),Bm=Buffer.from("pool_reward_vault","utf8"),Na=Buffer.from("position","utf8"),xm=Buffer.from("tick_array","utf8"),Sm=Buffer.from("operation","utf8"),Km=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ma(r,e,t,n){return le([Tm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function _i(r,e,t){return le([Im,e.toBuffer(),t.toBuffer()],r)}function _a(r,e,t){return le([Bm,e.toBuffer(),t.toBuffer()],r)}function ye(r,e,t){return le([xm,e.toBuffer(),lr(t)],r)}function sn(r,e,t,n){return le([Na,e.toBuffer(),lr(t),lr(n)],r)}function lt(r,e){return le([Na,e.toBuffer()],r)}function mr(r){return le([Buffer.from("metadata","utf8"),hn.toBuffer(),r.toBuffer()],hn)}function ao(r){return le([Sm],r)}function rt(r,e){return le([Km,e.toBuffer()],r)}import mt from"bn.js";var Be=new mt(0),it=new mt(1),Vt=new mt(-1),st=new mt(1).shln(64),dr=new mt(1).shln(128),Vi=st.sub(it),uo=64,Va=dr.subn(1),Ge=-443636,Ze=-Ge,Rt=new mt("4295048016"),Lt=new mt("79226673521066979257578248091"),pr=new mt("4295048017"),fr=new mt("79226673521066979257578248090"),va=16,Ea="59543866431248",Fa="184467440737095516",Da="15793534762490258745",yr=new mt(10).pow(new mt(6));var Wa={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:[]},kh=new mt("18446744073700000000");var Cm=15,ae=class{static async getTickArrays(e,t,n,o,i,s,a){let u=[],c=Q.getTickArrayStartIndexByTick(o,i),l=Q.getInitializedTickArrayInRange(s,a,i,c,Math.floor(Cm/2));for(let p=0;p<l.length;p++){let{publicKey:y}=ye(t,n,l[p]);u.push(y)}let m=(await gt(e,u)).map(p=>p!==null?co.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=E(C({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,o,i,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,o,i,s);for(;a==null||a.liquidityGross.lten(0);){if(c=Q.getNextTickArrayStartIndex(c,i,s),this.checkIsValidStartIndex(c,i))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,o,i){let s=Math.floor(e/ae.tickCount(t)),a=n?Q.searchLowBitFromStart(o,i,s-1,1,t):Q.searchHightBitFromStart(o,i,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,o){let i;if(o){let a=Le-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){i=u;break}a=a-1}}else{let a=0;for(;a<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){i=u;break}a=a+1}}let{publicKey:s}=ye(e,t,n.startTickIndex);return{nextTick:i,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,o,i,s){let a=Q.getTickArrayStartIndexByTick(o,i),u=Math.floor((o-a)/i),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Le;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=ye(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(Q.checkIsOutOfBoundary(e)){if(e>Ze)return!1;let n=Q.getTickArrayStartIndexByTick(Ge,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import re from"bn.js";import{PublicKey as kt}from"@solana/web3.js";import xe from"bn.js";var vi=14,vt=class{static maxTickInTickarrayBitmap(e){return e*Le*an}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),o=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(o+=1);let i=n*o;return e<0?{minValue:-i,maxValue:-i+n}:{minValue:i,maxValue:i+n}}static nextInitializedTickArrayStartIndex(e,t,n,o){if(!ae.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let i=this.maxTickInTickarrayBitmap(n),s=o?t-ae.tickCount(n):t+ae.tickCount(n);if(s<-i||s>=i)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(o){let l=e.shln(1024-c-1),m=La(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-i}}else{let l=e.shrn(c),m=Oa(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:i-ae.tickCount(n)}}}},lo=class{static getBitmapOffset(e,t){if(!ae.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=vt.maxTickInTickarrayBitmap(t),o=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&o--,o}static getBitmap(e,t,n){let o=this.getBitmapOffset(e,t);return e<0?{offset:o,tickarrayBitmap:n.negativeTickArrayBitmap[o]}:{offset:o,tickarrayBitmap:n.positiveTickArrayBitmap[o]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:o}=this.extensionTickBoundary(t);if(e>=o&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;if(Ze<=t)throw Error(`extensionTickBoundary check error: ${Ze}, ${t}`);if(n<=Ge)throw Error(`extensionTickBoundary check error: ${n}, ${Ge}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:o}=this.getBitmap(e,t,n),i=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:Q.mergeTickArrayBitmap(o).testn(i),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,o){let i=ae.tickCount(t),s=n?e-i:e+i,{tickarrayBitmap:a}=this.getBitmap(s,t,o);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,o){let{minValue:i,maxValue:s}=vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(o){let u=Q.mergeTickArrayBitmap(e).shln(an-1-a),c=so(512,u)?null:Ni(512,u);if(c!==null){let l=t-c*ae.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i}}else{let u=Q.mergeTickArrayBitmap(e).shrn(a),c=so(512,u)?null:Mi(512,u);if(c!==null){let l=t+c*ae.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ae.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%vt.maxTickInTickarrayBitmap(t),o=Math.floor(n/ae.tickCount(t));return e<0&&n!=0&&(o=an-o),o}};import Ot from"bn.js";var mo=class{static getfeeGrowthInside(e,t,n){let o=new Ot(0),i=new Ot(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(o=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),i=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ot(0),a=new Ot(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=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64A,o),s),c=te.wrappingSubU128(te.wrappingSubU128(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),a=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,st),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,st),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),a=te.mulDivFloor(te.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,st),u=t.tokenFeesOwedA.add(a),c=te.mulDivFloor(te.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,st),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,o){let i=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,st),d=c.rewardAmountOwed.add(m);i.push(d)}return i}static GetPositionRewards(e,t,n,o){let i=[],s=this.getRewardGrowthInside(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=te.wrappingSubU128(u,c.growthInsideLastX64),m=te.mulDivFloor(l,t.liquidity,st),d=c.rewardAmountOwed.add(m);i.push(d)}return i}static getRewardGrowthInside(e,t,n,o){let i=[];for(let s=0;s<o.length;s++){let a=new Ot(0);t.liquidityGross.eqn(0)?a=o[s].rewardGrowthGlobalX64:e<t.tick?a=o[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ot(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=o[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(te.wrappingSubU128(te.wrappingSubU128(o[s].rewardGrowthGlobalX64,a),u))}return i}static getRewardGrowthInsideV2(e,t,n,o){let i=[];for(let s=0;s<o.length;s++){let a=new Ot(0);t.liquidityGross.eqn(0)?a=o[s].rewardGrowthGlobalX64:e<t.tick?a=o[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ot(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=o[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(te.wrappingSubU128(te.wrappingSubU128(o[s].rewardGrowthGlobalX64,a),u))}return i}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:o,add:i,epochInfo:s}){var b,g,h,A;let a=oe.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),u=oe.getSqrtPriceX64FromTick(t.tickLower),c=oe.getSqrtPriceX64FromTick(t.tickUpper),l=i?1+o:1-o,m=ce.getAmountsFromLiquidity(a,u,c,n,i),[d,p]=[we(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),we(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[we(new Ot(new _(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),we(new Ot(new _(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as qa}from"@solana/spl-token";var Se=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:b}=un.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o,l,i,s);return u.push(...y),{allTrade:d,expectedAmountOut:p.mul(Vt),remainingAccounts:u,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,o,i){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}=ye(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=un.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o.mul(Vt),c,i);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:o}=Se.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?lo.checkTickArrayIsInit(ae.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):Q.checkTickArrayIsInitialized(Q.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=ye(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}let{isExist:i,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ae.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(i){let{publicKey:a}=ye(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/ae.tickCount(e.tickSpacing)),o=t?Q.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):Q.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return o.length>0?{isExist:!0,nextStartIndex:o[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ae.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:o,tickIndex:i}=vt.nextInitializedTickArrayStartIndex(Q.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(o)return{isExist:!0,nextStartIndex:i};t=i;let{isInit:s,tickIndex:a}=lo.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ge||t>Ze)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,u,c;let s=[];for(let l=0;l<i.length;l++){let m=i[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=E(C({},m),{perSecond:te.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new kt(d)});if(p.tokenMint.equals(kt.default))continue;if(n<=p.openTime.toNumber()||o.eq(Be)){s.push(p);continue}let y=new xe(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=te.mulDivFloor(f,p.emissionsPerSecondX64,o),g=p.rewardGrowthGlobalX64.add(b),h=te.mulDivFloor(f,p.emissionsPerSecondX64,st),A=p.rewardTotalEmissioned.add(h);s.push(E(C({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:o}=this.tickRange(e);for(let i of t){let s=Q.getTickArrayStartIndexByTick(i,e);if(s>=n||s<o)return!0}return!1}static tickRange(e){let t=vt.maxTickInTickarrayBitmap(e),n=-t;return t>Ze&&(t=ae.getArrayStartIndex(Ze,e)+ae.tickCount(e)),n<Ge&&(n=ae.getArrayStartIndex(Ge,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ae.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ae.tickCount(t)*an}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await Oe(e,t.map(s=>({pubkey:s})),{batchRequest:n}),i={};for(let s of o)s.accountInfo!==null&&(i[s.pubkey.toString()]=Ga.decode(s.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let u of t){let c=Q.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=Q.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=ye(u.programId,u.id,m);i.push({pubkey:d}),o[d.toString()]=u.id}}let s=await Oe(e,i,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=o[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=co.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=E(C({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:o=!1,updateOwnerRewardAndFee:i=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(lt(p,d).publicKey);let l=await gt(t,c,{batchRequest:o}),m={};for(let d of l){if(d===null)continue;let p=br.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=Q._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=Q._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=ce.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:k,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>E(C({},x),{pendingReward:new xe(0)})),leverage:B,tokenFeeAmountA:new xe(0),tokenFeeAmountB:new xe(0)}];let T=await Q.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await Q.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(i){let d=Object.values(m),p=await gt(t,d,{batchRequest:o}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=co.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],B=y[m[A].toString()],T=k.ticks[Q.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=B.ticks[Q.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await mo.GetPositionFees(f,g,T,S),I=await mo.GetPositionRewards(f,g,T,S);g.tokenFeeAmountA=x.gte(new xe(0))?x:new xe(0),g.tokenFeeAmountB=R.gte(new xe(0))?R:new xe(0);for(let L=0;L<I.length;L++)g.rewardInfos[L].pendingReward=I[L].gte(new xe(0))?I[L]:new xe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:o,amountIn:i,slippage:s,priceLimit:a=new _(0),catchLiquidityInsufficient:u=!1}){var U;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new _(0))?c=l?Rt.add(new xe(1)):Lt.sub(new xe(1)):c=oe.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=we(i,m,o,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:h}=Se.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((U=p.fee)!=null?U:Be),c,u),A=we(f,d,o,!1),k=oe.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),B=l?k:new _(1).div(k),T=f.mul(new xe(Math.floor((1-s)*1e10))).div(new xe(1e10)),S=we(T,d,o,!1),x=l?e.currentPrice:new _(1).div(e.currentPrice),R=new _(B).sub(x).abs(),I=x,L=new Qe(new _(R).mul(10**15).toFixed(0),new _(I).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:xt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:L,fee:h,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:o,slippage:i,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=o.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new he(E(C({},c),{mint:c.address,isToken2022:c.programId===qa.toBase58()})),new he(E(C({},l),{mint:l.address,isToken2022:l.programId===qa.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:h,executionPrice:A,priceImpact:k,fee:B,remainingAccounts:T,executionPriceX64:S}=Se.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new kt(c.address),amountIn:n,slippage:i,epochInfo:s,catchLiquidityInsufficient:a}),x=E(C({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),R=E(C({},f),{amount:new fe(d,f.amount),fee:f.fee===void 0?void 0:new fe(d,f.fee)}),I=E(C({},b),{amount:new fe(d,b.amount),fee:b.fee===void 0?void 0:new fe(d,b.fee)}),L=new Je({baseToken:m,denominator:new xe(10).pow(new xe(20+m.decimals)),quoteToken:d,numerator:h.mul(new _(10**(20+d.decimals))).toFixed(0)}),U=new Je({baseToken:m,denominator:new xe(10).pow(new xe(20+m.decimals)),quoteToken:d,numerator:A.mul(new _(10**(20+d.decimals))).toFixed(0)}),F=new fe(m,B);return{allTrade:p,realAmountIn:x,amountOut:R,minAmountOut:I,expirationTime:g,currentPrice:L,executionPrice:U,priceImpact:k,fee:F,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var y,f,b;let i=e[t],s=Q.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=Q.getTickPrice({poolInfo:e,tick:o,baseIn:!0}).price.toNumber(),u=Math.max(s,i.priceMin),l=Math.min(a,i.priceMax)-u,m=a-s,d=i.priceMax-i.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:i.feeApr*p,rewardsApr:[((y=i.rewardApr[0])!=null?y:0)*p,((f=i.rewardApr[1])!=null?f:0)*p,((b=i.rewardApr[2])!=null?b:0)*p],apr:i.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:i,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=o[nt(e.mintA.address).toString()],d=o[nt(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=oe.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),b=oe.getSqrtPriceX64FromTick(s),g=oe.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:B}=ce.getAmountsFromLiquidityWithSlippage(f,b,g,i,!1,!1,0),T=new _(h.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(A.toString()).div(new _(10).pow(y)).mul(d.value)),S=new _(k.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(B.toString()).div(new _(10).pow(y)).mul(d.value)),x=new _(1).div(T.add(S)),I=new _(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),L=3600*24*365,U=e.rewardDefaultInfos.map(F=>{var W,Ye;let J=F.mint.decimals,G=o[F.mint.address];return u<((W=F.startTime)!=null?W:0)||u>((Ye=F.endTime)!=null?Ye:0)||!F.perSecond||!G||J===void 0?0:new _(G.value).mul(new _(F.perSecond).mul(L)).div(new _(10).pow(J)).mul(x).mul(100).toNumber()});return{feeApr:I,rewardsApr:U,apr:I+U.reduce((F,J)=>F+J,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=oe.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),m=oe.getSqrtPriceX64FromTick(n),d=oe.getSqrtPriceX64FromTick(o),p=a?1-s:1+s,y=we(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new xe(new _(y.amount.sub((h=y.fee)!=null?h:Be).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ce.getLiquidityFromTokenAmountA(m,d,f,!a):new xe(0);else if(l.lte(d)){let A=ce.getLiquidityFromTokenAmountA(l,d,f,!a),k=ce.getLiquidityFromTokenAmountB(m,l,f);b=t?A:k}else b=t?new xe(0):ce.getLiquidityFromTokenAmountB(m,d,f);return Se.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:o,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:i,slippage:s,add:a}){var b,g,h,A;let u=oe.getSqrtPriceX64FromTick(n),c=oe.getSqrtPriceX64FromTick(o),l=a?1+s:1-s,m=ce.getAmountsFromLiquidity(oe.priceToSqrtPriceX64(new _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,i,a),[d,p]=[we(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),we(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[we(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),we(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:i,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:xt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(u=>!n[u.id]).map(u=>new kt(u.id));(await gt(e,o)).forEach((u,c)=>{!u||(n[o[c].toBase58()]=cn.decode(u.data))});let s=t.map(u=>rt(new kt(u.programId),new kt(u.id)).publicKey),a=await Se.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>E(C({},u),{[c.id]:E(C({},n[c.id]),{id:new kt(c.id),version:6,programId:new kt(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:E(C({},c.config),{id:new kt(c.config.id),fundOwner:""}),currentPrice:new _(c.price),exBitmapInfo:a[rt(new kt(c.programId),new kt(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var Ei={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Ua(r){return E(C({},r),{type:"Concentrated",programId:r.programId.toString(),id:r.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:r.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:r.ammConfig.tradeFeeRate,openTime:r.startTime.toString(),tvl:0,day:Ei,week:Ei,month:Ei,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,config:E(C({},r.ammConfig),{id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var te=class{static mulDivRoundingUp(e,t,n){let o=e.mul(t),i=o.div(n);return o.mod(n).eq(Be)||(i=i.add(it)),i}static mulDivFloor(e,t,n){if(n.eq(Be))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(Be))throw new Error("division by 0");return e.mul(t).add(n.sub(it)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new re(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(dr).sub(t).mod(dr)}};function Ne(r,e){return Fi(r.mul(e),64,256)}function Rm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Fi(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var oe=class{static sqrtPriceX64ToPrice(e,t,n){return te.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return te.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,o){if(!e.gt(Be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Be))throw new Error("liquidity must greater than 0");return o?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,o){if(!e.gt(Be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Be))throw new Error("liquidity must greater than 0");return o?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,o){if(n.eq(Be))return e;let i=t.shln(uo);if(o){let s=i,a=i.add(n.mul(e));return a.gte(s)?te.mulDivCeil(s,e,a):te.mulDivRoundingUp(s,it,s.div(e).add(n))}else{let s=n.mul(e);if(!i.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=i.sub(s);return te.mulDivCeil(i,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,o){let i=n.shln(uo);if(o)return e.add(i.div(t));{let s=te.mulDivRoundingUp(i,it,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<Ge||e>Ze)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new re("18445821805675395072"):new re("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new re("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new re("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new re("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new re("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new re("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new re("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new re("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new re("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new re("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new re("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new re("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new re("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new re("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new re("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new re("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new re("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new re("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new re("37481735321082"))),e>0&&(n=Va.div(n)),n}static getTickFromPrice(e,t,n){return oe.getTickFromSqrtPriceX64(oe.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Lt)||e.lt(Rt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new re(t-64),o=Rm(n,32,128),i=new re("8000000000000000","hex"),s=0,a=new re(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new re(0))&&s<va;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(i.mul(y)),i=i.shrn(1),s+=1}let c=a.shrn(32),m=o.add(c).mul(new re(Ea)),d=Fi(m.sub(new re(Fa)),64,128).toNumber(),p=Fi(m.add(new re(Da)),64,128).toNumber();return d==p?d:oe.getSqrtPriceX64FromTick(p).lte(e)?p:d}},ln=class{static getTickWithPriceAndTickspacing(e,t,n,o){let s=oe.getTickFromSqrtPriceX64(oe.priceToSqrtPriceX64(e,n,o))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,o){let i=ln.getTickWithPriceAndTickspacing(e,t,n,o),s=oe.getSqrtPriceX64FromTick(i);return oe.sqrtPriceX64ToPrice(s,n,o)}},ce=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(Be))throw new Error("sqrtPriceX64A must greater than 0");let i=n.ushln(uo),s=t.sub(e);return o?te.mulDivRoundingUp(te.mulDivCeil(i,s,t),it,e):te.mulDivFloor(i,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(Be))throw new Error("sqrtPriceX64A must greater than 0");return o?te.mulDivCeil(n,t.sub(e),st):te.mulDivFloor(n,t.sub(e),st)}static getLiquidityFromTokenAmountA(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=n.mul(e).mul(t),s=t.sub(e),a=i.div(s);return o?te.mulDivRoundingUp(a,it,Vi):a.shrn(uo)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),te.mulDivFloor(n,Vi,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ce.getLiquidityFromTokenAmountA(t,n,o,!1);if(e.lt(n)){let s=ce.getLiquidityFromTokenAmountA(e,n,o,!1),a=ce.getLiquidityFromTokenAmountB(t,e,i);return s.lt(a)?s:a}else return ce.getLiquidityFromTokenAmountB(t,n,i)}static getAmountsFromLiquidity(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ce.getTokenAmountAFromLiquidity(t,n,o,i),amountB:new re(0)};if(e.lt(n)){let s=ce.getTokenAmountAFromLiquidity(e,n,o,i),a=ce.getTokenAmountBFromLiquidity(t,e,o,i);return{amountA:s,amountB:a}}else return{amountA:new re(0),amountB:ce.getTokenAmountBFromLiquidity(t,n,o,i)}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,i,s,a){let{amountA:u,amountB:c}=ce.getAmountsFromLiquidity(e,t,n,o,s),l=i?1+a:1-a,m=new re(new _(u.toString()).mul(l).toFixed(0)),d=new re(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:o,slippage:i,add:s,epochInfo:a,amountAddFee:u}){var h,A,k,B;let c=oe.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=oe.getSqrtPriceX64FromTick(t),m=oe.getSqrtPriceX64FromTick(n),d=s?1+i:1-i,p=ce.getAmountsFromLiquidity(c,l,m,o,s),[y,f]=[we(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),we(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[we(new re(new _(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),we(new re(new _(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,u)];return{liquidity:o,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:xt(y.expirationTime,f.expirationTime)}}},un=class{static swapCompute(e,t,n,o,i,s,a,u,c,l,m,d,p,y,f=!1){if(d.eq(Be))throw new Error("amountSpecified must not be 0");if(y||(y=s?Rt.add(it):Lt.sub(it)),s){if(y.lt(Rt))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(Lt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let b=d.gt(Be),g={amountSpecifiedRemaining:d,amountCalculated:Be,sqrtPriceX64:m,tick:c>p?Math.min(p+ae.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new re(0)},h=p,A=n[p],k=0,B=!s&&A.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(Be)&&!g.sqrtPriceX64.eq(y);){k>10;let T={};T.sqrtPriceStartX64=g.sqrtPriceX64;let S=Q.nextInitTick(A,g.tick,l,s,B),x=S||null,R=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let L=Se.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:o,exBitmapInfo:i},h,s);if(!L.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}h=L.nextStartIndex;let{publicKey:U}=ye(e,t,h);R=U,A=n[h];try{x=Q.firstInitializedTick(A,s)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==h&&R&&(g.accounts.push(R),p=h),T.tickNext<Ge?T.tickNext=Ge:T.tickNext>Ze&&(T.tickNext=Ze),T.sqrtPriceNextX64=oe.getSqrtPriceX64FromTick(T.tickNext);let I;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?I=y:I=T.sqrtPriceNextX64,[g.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=un.swapStepCompute(g.sqrtPriceX64,I,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(T.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),g.amountCalculated=g.amountCalculated.sub(T.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(T.amountOut),g.amountCalculated=g.amountCalculated.add(T.amountIn.add(T.feeAmount))),g.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let L=x.liquidityNet;s&&(L=L.mul(Vt)),g.liquidity=ce.addDelta(g.liquidity,L)}B=T.tickNext!=g.tick&&!s&&A.startTickIndex===T.tickNext,g.tick=s?T.tickNext-1:T.tickNext}else if(g.sqrtPriceX64!=T.sqrtPriceStartX64){let L=oe.getTickFromSqrtPriceX64(g.sqrtPriceX64);B=L!=g.tick&&!s&&A.startTickIndex===L,g.tick=L}++k}try{let{nextStartIndex:T,isExist:S}=ae.nextInitializedTickArray(g.tick,l,s,o,i);S&&p!==T&&(g.accounts.push(ye(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:Be,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,o,i){let s={sqrtPriceX64Next:new re(0),amountIn:new re(0),amountOut:new re(0),feeAmount:new re(0)},a=e.gte(t),u=o.gte(Be);if(u){let l=te.mulDivFloor(o,yr.sub(new re(i.toString())),yr);s.amountIn=a?ce.getTokenAmountAFromLiquidity(t,e,n,!0):ce.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=oe.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ce.getTokenAmountBFromLiquidity(t,e,n,!1):ce.getTokenAmountAFromLiquidity(e,t,n,!1),o.mul(Vt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=oe.getNextSqrtPriceX64FromOutput(e,n,o.mul(Vt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ce.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ce.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ce.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ce.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(o.mul(Vt))&&(s.amountOut=o.mul(Vt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=o.sub(s.amountIn):s.feeAmount=te.mulDivCeil(s.amountIn,new re(i),yr.sub(new re(i))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,an=512,Q=class{static getTickArrayAddressByTick(e,t,n,o){let i=Q.getTickArrayStartIndexByTick(n,o),{publicKey:s}=ye(e,t,i);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=Q.getTickArrayStartIndexByTick(e,t),o=Math.floor((e-n)/t);if(o<0||o>=Le)throw new Error("tick offset in array overflow");return o}static getTickArrayBitIndex(e,t){let n=ae.tickCount(t),o=e/n;return e<0&&e%n!=0?o=Math.ceil(o)-1:o=Math.floor(o),o}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ae.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,o=Math.floor(e/n)+512;return Math.abs(o)}static checkTickArrayIsInitialized(e,t,n){let o=n*Le,i=Math.floor(t/o)+512,s=Math.abs(i);return{isInitialized:e.testn(s),startIndex:(s-512)*o}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Lm(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,o,i){let s=Math.floor(o/(n*Le));return[...Q.searchLowBitFromStart(e,t,s-1,i,n),...Q.searchHightBitFromStart(e,t,s,i,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return Q.searchHightBitFromStart(e,t,0,an,n)}static getAllInitializedTickArrayInfo(e,t,n,o,i){let s=[],a=Q.getAllInitializedTickArrayStartIndex(n,o,i);for(let u of a){let{publicKey:c}=ye(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,o,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Q.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===o)break}let u=ae.tickCount(i);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,o,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>Q.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===o)break}let u=ae.tickCount(i);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ge||e>Ze}static nextInitTick(e,t,n,o,i){if(ae.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(o)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(i||(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 o=oe.getSqrtPriceX64FromTick(t),i=oe.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:o}:{tick:t,price:new _(1).div(i),tickSqrtPriceX64:o}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let o=n?t:new _(1).div(t),i=ln.getTickWithPriceAndTickspacing(o,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=oe.getSqrtPriceX64FromTick(i),a=oe.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new _(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let o=oe.getSqrtPriceX64FromTick(t),i=oe.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:o}:{tick:t,price:new _(1).div(i),tickSqrtPriceX64:o}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let o=n?t:new _(1).div(t),i=ln.getTickWithPriceAndTickspacing(o,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=oe.getSqrtPriceX64FromTick(i),a=oe.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new _(1).div(a)}}};var Xa=V([pe(8),D("bump"),St("index"),K(""),je("protocolFeeRate"),je("tradeFeeRate"),St("tickSpacing"),X(w(),8,"")]),Om=V([je("blockTimestamp"),Y("sqrtPriceX64"),Y("cumulativeTimePriceX64"),X(Y(),1,"")]),Di=V([pe(8),qe("initialized"),K("poolId"),X(Om,1e3,"observations"),X(Y(),5,"")]),Nm=V([D("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),Y("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),Y("rewardGrowthGlobalX64")]),cn=V([pe(8),D("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),D("mintDecimalsA"),D("mintDecimalsB"),St("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),Fe("tickCurrent"),St("observationIndex"),St("observationUpdateDuration"),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),Y("swapInAmountTokenA"),Y("swapOutAmountTokenB"),Y("swapInAmountTokenB"),Y("swapOutAmountTokenA"),D("status"),X(D(),7,""),X(Nm,3,"rewardInfos"),X(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),X(w(),15*4-3,"padding")]),Mm=V([Y("growthInsideLastX64"),w("rewardAmountOwed")]),br=V([pe(8),D("bump"),K("nftMint"),K("poolId"),Fe("tickLower"),Fe("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(Mm,3,"rewardInfos"),X(w(),8,"")]),RP=V([pe(8),D("bump"),K("poolId"),Fe("tickLowerIndex"),Fe("tickUpperIndex"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(Y(),3,"rewardGrowthInside"),X(w(),8,"")]),_m=V([Fe("tick"),Js("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),X(Y(),3,"rewardGrowthsOutsideX64"),X(je(),13,"")]),co=V([pe(8),K("poolId"),Fe("startTickIndex"),X(_m,Le,"ticks"),D("initializedTickCount"),X(D(),115,"")]),za=V([pe(329),X(K(),100,"whitelistMints")]),Ga=V([pe(8),K("poolId"),X(X(w(),8),vi,"positiveTickArrayBitmap"),X(X(w(),8),vi,"negativeTickArrayBitmap")]);var ja=se("Raydium_Clmm"),It={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]},Te=class{static createPoolInstruction(e,t,n,o,i,s,a,u,c,l,m,d,p,y){let f=V([Y("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,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:i,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...It.createPool,...g]);return new Tt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:o,mintA:i,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ue({fromPublicKey:o,programId:n}),[d,p]=[new q(i.address),new q(s.address)],y=[Kn.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Di.span),space:Di.span,programId:n})],{publicKey:f}=Ma(n,a,d,p),{publicKey:b}=_i(n,f,d),{publicKey:g}=_i(n,f,p);return y.push(this.createPoolInstruction(n,f,o,a,m.publicKey,d,b,new q(i.programId||De),p,g,new q(s.programId||De),rt(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,o,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,B,T,S,x,R,I){let L=V([Fe("tickLowerIndex"),Fe("tickUpperIndex"),Fe("tickArrayLowerStartIndex"),Fe("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),D("optionBaseFlag"),qe("baseFlag")]),U=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Ya,isSigner:!1,isWritable:!1},{pubkey:hn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...U],J=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},J);let G=Buffer.from([...It.openPosition,...J]);return new Tt({keys:F,programId:e,data:G})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=Wi.generate();m.push(x),y=x.publicKey}let f=Q.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=Q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=ye(d,p,f),{publicKey:h}=ye(d,p,b),{publicKey:A}=Pe(n.wallet,y,De),{publicKey:k}=mr(y),{publicKey:B}=lt(d,y),{publicKey:T}=sn(d,p,o,i),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),o,i,f,b,s,a,u,c);return{signers:m,instructions:[S],instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:B,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let x=Wi.generate();m.push(x),y=x.publicKey}let f=Q.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=Q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=ye(d,p,f),{publicKey:h}=ye(d,p,b),{publicKey:A}=Pe(n.wallet,y,De),{publicKey:k}=mr(y),{publicKey:B}=lt(d,y),{publicKey:T}=sn(d,p,o,i),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),o,i,f,b,c,s,a,u,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?rt(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,o,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,B,T,S,x,R,I){let L=V([Fe("tickLowerIndex"),Fe("tickUpperIndex"),Fe("tickArrayLowerStartIndex"),Fe("tickArrayUpperStartIndex"),Y("liquidity"),w("amountMaxA"),w("amountMaxB"),qe("withMetadata"),D("optionBaseFlag"),qe("baseFlag")]),U=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Ya,isSigner:!1,isWritable:!1},{pubkey:hn,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...U],J=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:new Qa(0),amountMaxA:S==="MintA"?x:R,amountMaxB:S==="MintA"?R:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},J);let G=Buffer.from([...It.openPosition,...J]);return new Tt({keys:F,programId:e,data:G})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new q((await l(1))[0]);else{let x=Wi.generate();d.push(x),m=x.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=Q.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=Q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=ye(p,y,f),{publicKey:h}=ye(p,y,b),{publicKey:A}=Pe(n.wallet,m,De),{publicKey:k}=mr(m),{publicKey:B}=lt(p,m),{publicKey:T}=sn(p,y,o,i),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(t.mintA.address),new q(t.mintB.address),o,i,f,b,s,a,u,c,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?rt(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,o,i){let s=V([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...It.closePosition,...u]);return new Tt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o}){let i=new q(e.programId),{publicKey:s}=Pe(n.wallet,o.nftMint,De),{publicKey:a}=lt(i,o.nftMint),u=[];return u.push(this.closePositionInstruction(i,n.wallet,o.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[v.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,o,i,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=V([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),D("optionBaseFlag"),qe("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...It.increaseLiquidity,...T]);return new Tt({keys:B,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:s,amountMaxB:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ye(u,c,l),{publicKey:p}=ye(u,c,m),{publicKey:y}=Pe(o.wallet,n.nftMint,De),{publicKey:f}=lt(u,n.nftMint),{publicKey:b}=sn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,o.wallet,y,f,c,b,d,p,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?rt(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,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:o,base:i,baseAmount:s,otherAmountMax:a}){let[u,c]=[new q(e.programId),new q(e.id)],l=Q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=Q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=ye(u,c,l),{publicKey:p}=ye(u,c,m),{publicKey:y}=Pe(o.wallet,n.nftMint,De),{publicKey:f}=lt(u,n.nftMint),{publicKey:b}=sn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,o.wallet,y,f,c,b,d,p,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),i,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?rt(u,c).publicKey:void 0)],signers:[],instructionTypes:[v.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,o,i,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=V([Y("liquidity"),w("amountMaxA"),w("amountMaxB"),D("optionBaseFlag"),qe("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=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},T);let S=Buffer.from([...It.increaseLiquidity,...T]);return new Tt({keys:B,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,o,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=V([Y("liquidity"),w("amountMinA"),w("amountMinB")]),B=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:Mo,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...B],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let x=Buffer.from([...It.decreaseLiquidity,...S]);return new Tt({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new q(e.programId),new q(e.id)],m=Q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=Q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ye(c,l,m),{publicKey:y}=ye(c,l,d),{publicKey:f}=Pe(o.wallet,n.nftMint,u),{publicKey:b}=lt(c,n.nftMint),{publicKey:g}=sn(c,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new q(t.rewardInfos[k].vault),ownerRewardVault:o.rewardAccounts[k],rewardMint:new q(e.rewardDefaultInfos[k].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,o.wallet,f,b,l,g,p,y,o.tokenAccountA,o.tokenAccountB,new q(t.vault.A),new q(t.vault.B),new q(e.mintA.address),new q(e.mintB.address),h,i,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?rt(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[v.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,o,i,s,a,u,c,l,m,d,p,y,f,b,g){let h=V([w("amount"),w("otherAmountThreshold"),Y("sqrtPriceLimitX64"),qe("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:Mo,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],B=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},B);let T=Buffer.from([...It.swap,...B]);return new Tt({keys:k,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new q(e.programId),new q(e.id)],[d,p]=[new q(t.vault.A),new q(t.vault.B)],[y,f]=[new q(e.mintA.address),new q(e.mintB.address)],b=e.mintA.address===i.toString(),g=[this.swapInstruction(l,o.wallet,m,new q(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,rt(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[v.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,o,i,s,a,u,c,l,m,d){let p=V([w("openTime"),w("endTime"),Y("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Kn.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Z(l),endTime:Z(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...It.initReward,...f]);return new Tt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,s]=[new q(e.programId),new q(e.id)],a=_a(i,s,o.mint).publicKey,u=ao(i).publicKey,c=[this.initRewardInstruction(i,n.wallet,s,u,new q(e.config.id),n.tokenAccount,o.programId,o.mint,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[v.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,o,i,s,a,u,c,l,m,d){let p=V([D("rewardIndex"),Y("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:Z(l),endTime:Z(m)},f);let b=Buffer.from([...It.setRewardEmissions,...f]);return new Tt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,s]=[new q(e.programId),new q(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===o.mint.toString()&&(a=d,u=new q(t.rewardInfos[d].vault),c=new q(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=ao(i).publicKey,m=[this.setRewardInstruction(i,n.wallet,s,l,new q(e.config.id),n.tokenAccount,u,c,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[v.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,o,i,s,a){let u=V([D("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:Mo,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...It.collectReward,...l]);return new Tt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,s]=[new q(e.programId),new q(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,u=new q(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(i,n.wallet,s,n.tokenAccount,u,o,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:o,amountOut:i,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new q(e.programId),new q(e.id)],[m,d]=[new q(t.vault.A),new q(t.vault.B)],[p,y]=[new q(e.mintA.address),new q(e.mintB.address)],f=e.mintA.address===o.toString(),b=[this.swapInstruction(c,n.wallet,l,new q(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,i,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[v.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Em}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";import{PublicKey as Vm}from"@solana/web3.js";import Ha from"bn.js";var Za=new Ha(25),$a=new Ha(1e4);var vm=se("Raydium_liquidity_serum");function Ja({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,o;for(;n<100;){try{let i=t.concat(Buffer.from([n]),Buffer.alloc(7));o=Vm.createProgramAddressSync(i,r)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:o,nonce:n}}throw vm.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 dk from"bn.js";function gr({programId:r}){let{publicKey:e}=le([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function mn({name:r,programId:e,marketId:t}){let{publicKey:n}=le([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Dm({programId:r,marketId:e}){let{publicKey:t}=le([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ui({programId:r}){return le([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function eu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:i,quoteDecimals:s,programId:a,marketProgramId:u}){let c=mn({name:"amm_associated_seed",programId:a,marketId:t}),l=mn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ui({programId:a}),p=mn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=mn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=mn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Dm({programId:a,marketId:t}),g=mn({name:"target_associated_seed",programId:a,marketId:t}),h=mn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=Ja({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:i,quoteDecimals:s,lpDecimals:i,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Em.default,configId:gr({programId:a})}}var qi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},wr=r=>{let e={},t=Fm.toBase58();return Object.keys(r).map(n=>{let o=r[n],[i,s]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:He({address:i,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:He({address:s,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new _(o.mintAAmount.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new _(o.mintBAmount.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new _(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:qi,week:qi,month:qi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:gr({programId:o.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:He({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())})}}),e};import tt from"bn.js";var po=class extends ke{constructor(t){super(t);this.stableLayout=new ro({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:o,baseIn:i}){let s=new tt(new _(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=ar(t[i?"mintB":"mintA"]),[u,c]=[new tt(new _(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new tt(new _(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new tt(new _(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",i?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",i?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=i?"base":"quote";this.logDebug("input side:",m);let d=at;s.isZero()||(d=m==="base"?Fo(s.mul(c),u):Fo(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Fo(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Qe(new tt(1)).add(o).mul(d).quotient,b=new fe(a,d),g=new fe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:o,amountInA:i,amountInB:s,fixedSide:a,config:u,txVersion:c,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",s),(i.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[y,f]=[i.token,s.token],b=await m.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1}),g=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let h=await m.getCreatedTokenAccount({mint:new Xe(n.lpMint.address)}),A=[y,f],k=[b,g],B=[i.raw,s.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",S="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",a),T==="quote"?(A.reverse(),k.reverse(),B.reverse(),S=a==="a"?"quote":"base"):T==="base"&&(S=a==="a"?"base":"quote");let[x,R]=A,[I,L]=k,[U,F]=B,J=o!=null?o:await this.getAmmPoolKeys(n.id),G=this.createTxBuilder(),Nt=await m.handleTokenAccount({side:"in",amount:U,mint:x.mint,tokenAccount:I,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:W}=Nt,Ye=Ie(Nt,["tokenAccount"]);G.addInstruction(Ye);let gn=await m.handleTokenAccount({side:"in",amount:F,mint:R.mint,tokenAccount:L,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:yn}=gn,en=Ie(gn,["tokenAccount"]);G.addInstruction(en);let Bo=await m.handleTokenAccount({side:"out",amount:0,mint:new Xe(n.lpMint.address),tokenAccount:h,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:Dt}=Bo,bn=Ie(Bo,["tokenAccount"]);return G.addInstruction(bn),G.addInstruction({instructions:[Ca({poolInfo:n,poolKeys:J,userKeys:{baseTokenAccount:W,quoteTokenAccount:yn,lpTokenAccount:Dt,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:F,fixedSide:S})],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5AddLiquidity:v.AmmV4AddLiquidity],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),G.addCustomComputeBudget(l),c===0&&await G.buildV0(),G.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:o,amountIn:i,config:s,txVersion:a,computeBudgetConfig:u}=t,c=o!=null?o:await this.getAmmPoolKeys(n.id),[l,m,d]=[new Xe(n.mintA.address),new Xe(n.mintB.address),new Xe(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,y=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});y||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),b=await p.getCreatedTokenAccount({mint:m}),g=this.createTxBuilder(),{bypassAssociatedCheck:h,checkCreateATAOwner:A}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:h,checkCreateATAOwner:A}),{tokenAccount:k}=x,B=Ie(x,["tokenAccount"]);g.addInstruction(B);let R=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:b,bypassAssociatedCheck:h,checkCreateATAOwner:A}),{tokenAccount:T}=R,S=Ie(R,["tokenAccount"]);return g.addInstruction(S),g.addInstruction({instructions:[Oi({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:y,baseTokenAccount:k,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(u),a===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:i,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Cn,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let b=this.createTxBuilder();b.addCustomComputeBudget(c);let g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||Pe(this.scope.ownerPubKey,W.accountInfo.mint,Cn).publicKey.equals(W.pubkey))&&(g[W.accountInfo.mint.toString()]=W.pubkey);let h=g[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let A=o.add(a!=null?a:new tt(0)),k=t.mintA.address===he.WSOL.mint.toString(),B=t.mintB.address===he.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Cn,mint:new Xe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Cn,mint:new Xe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(R||{}),x===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=T,g[t.mintB.address]=x,s!==void 0&&!(a!=null&&a.isZero())){let W=ut[s.programId],Ye=ct({programId:new Xe(s.programId),poolId:new Xe(s.id),owner:this.scope.ownerPubKey,version:W}),yn,en=await this.scope.connection.getAccountInfo(Ye);if(en&&(yn=$n(W).decode(en.data)),W!==6&&!yn){let{instruction:Wt,instructionType:Nr}=sr({id:new Xe(s.id),programId:new Xe(s.programId),version:W,ledger:Ye,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[Wt],instructionTypes:[Nr]})}let Dt=[];for(let Wt of s.rewardInfos){let Nr=Wt.mint.address===he.WSOL.mint.toString();if(g[Wt.mint.address])Dt.push(g[Wt.mint.address]);else{let{account:Ji,instructionParams:es}=await this.scope.account.getOrCreateTokenAccount({mint:new Xe(Wt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Nr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Ji||this.logAndCreateError("farm reward account not found:",Wt.mint.address),es&&b.addInstruction(es),Dt.push(Ji)}}let bn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],Nt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:bn,lpAccount:h,rewardAccounts:Dt},gn=ut[s.programId],Bo=gn===6?Jn(Nt):gn===5?eo(Nt):to(Nt),Ku={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};b.addInstruction({instructions:[Bo],instructionTypes:[Ku[gn]]})}let I=await this.getAmmPoolKeys(t.id),L=Oi({poolInfo:t,poolKeys:I,userKeys:{lpTokenAccount:h,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:A});b.addInstruction({instructions:[L],instructionTypes:[t.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]});let[U,F]=t.mintA.address===n.mintA.address?[T,x]:[x,T],J=await this.scope.clmm.getClmmPoolKeys(t.id),G=await Te.openPositionFromBaseInstructions(E(C({poolInfo:n,poolKeys:J,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:U,tokenAccountB:F},withMetadata:"create"},i),{base:u,getEphemeralSigners:y}));return b.addInstruction({instructions:[...G.instructions],signers:G.signers,instructionTypes:[...G.instructionTypes],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:i,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var U;let b=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),g=c.useSOLBalance&&o.mint.equals(tu),h=c.useSOLBalance&&i.mint.equals(tu),A=this.createTxBuilder(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.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(B||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(S||{}),k===void 0||T===void 0)throw Error("you don't has some token account");let x=eu({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:i.mint,baseDecimals:o.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),R={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:I,instructionType:L}=Ra(E(C({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:T,userLpVault:Pe(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[I],instructionTypes:[L]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:R}})}async getCreatePoolFee({programId:t}){let n=gr({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return ka.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:i,slippage:s}){let[a,u]=[o.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.version===4,b;if(f)b=new _(y.toString()).div(p.toString());else{let I=Sa(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);d==="quote"?b=new _(1e6).div(I*1e6):b=new _(I*1e6).div(1e6)}let g=n,h=new tt(0),A=new tt(0);if(!g.isZero())if(f){A=Qn(g.mul(Za),$a);let I=g.sub(A),L=p.add(I);h=y.mul(I).div(L)}else{A=g.mul(new tt(2)).div(new tt(1e4));let I=g.sub(A);d==="quote"?h=new tt(Ba(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),I.toNumber())):h=new tt(xa(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),I.toNumber()))}let k=new tt(new _(h.toString()).mul(1-s).toFixed(0)),B=h,T=k,S=new _(h.toString()).div(new _(g.sub(A).toString()).toFixed(0));!g.isZero()&&!h.isZero()&&(S=new _(h.toString()).div(g.sub(A).toString()));let x=b.sub(S).div(b).mul(100);return{amountOut:B,minAmountOut:T,currentPrice:b,executionPrice:S,priceImpact:x,fee:A}}async swap({poolInfo:t,poolKeys:n,amountIn:o,amountOut:i,inputMint:s,fixedSide:a,txVersion:u,config:c,computeBudgetConfig:l}){let m=this.createTxBuilder(),{associatedOnly:d=!1,inputUseSolBalance:p=!0,outputUseSolBalance:y=!0}=c||{},[f,b]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],g=p&&f.address===H.toBase58(),h=y&&b.address===H.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Cn,mint:new Xe(f.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:d});m.addInstruction(k||{}),A||this.logAndCreateError("input token account not found",f.address);let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Cn,mint:new Xe(b.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:d});if(m.addInstruction(T||{}),B===void 0)throw new Error("output token account not found");let S=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),m.addInstruction({instructions:[cr({version:x,poolKeys:S,userKeys:{tokenAccountIn:A,tokenAccountOut:B,owner:this.scope.ownerPubKey},amountIn:o,amountOut:i,fixedSide:a})],instructionTypes:[x===4?v.AmmV4SwapBaseIn:v.AmmV5SwapBaseIn]}),m.addCustomComputeBudget(l),m.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await Oe(this.scope.connection,t.map(l=>({pubkey:new Xe(l)})),n),i={},s=[];for(let l=0;l<t.length;l++){let m=o[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=ur.decode(m.accountInfo.data);i[String(t[l])]=E(C({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},u=await Oe(this.scope.connection,s.map(l=>({pubkey:new Xe(l)})),n);for(let l=0;l<s.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new tt(Wm.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(i)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=E(C({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new _(p.toString()).div(new _(10).pow(m.quoteDecimal.toString())).div(new _(d.toString()).div(new _(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),o=wr({[t]:n}),i=o[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[o[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:i,poolKeys:s[0]}}};import{PublicKey as ie}from"@solana/web3.js";import dt from"bn.js";import{AccountLayout as nu,TOKEN_PROGRAM_ID as ou}from"@solana/spl-token";var fo=class extends ke{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:o,mint2:i,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new dt(new ie(o.address).toBuffer()).gt(new dt(new ie(i.address).toBuffer()))?[i,o,new _(1).div(a)]:[o,i,a],b=oe.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Te.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:E(C({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},Wa),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,h=n.useSOLBalance&&e.mintA.address===H.toString(),A=n.useSOLBalance&&e.mintB.address===H.toString(),[k,B]=s==="MintA"?[a,u]:[u,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});T&&(b=T),f.addInstruction(S||{});let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||B.isZero()?{payer:this.scope.ownerPubKey,amount:B}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(R||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:b==null?void 0:b.toBase58(),ownerTokenAccountB:g==null?void 0:g.toBase58()});let I=t||await this.getClmmPoolKeys(e.id),L=await Te.openPositionFromBaseInstructions({poolInfo:e,poolKeys:I,ownerInfo:E(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(L),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:L.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:o,amountMaxB:i,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===H.toBase58(),h=n.useSOLBalance&&e.mintB.address===H.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});B&&(b=B),y.addInstruction(T||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Te.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:o,amountMaxB:i,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:o,amountMaxA:i,amountMaxB:s,liquidity:a,ownerInfo:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e,p=this.createTxBuilder(),y,f,b=u.useSOLBalance&&t.mintA.address===H.toString(),g=u.useSOLBalance&&t.mintB.address===H.toString(),{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:l});h&&(y=h),p.addInstruction(A||{});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:l});k&&(f=k),p.addInstruction(B||{}),!y&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getClmmPoolKeys(t.id),S=Te.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:f},liquidity:a,amountMaxA:i,amountMaxB:s});return p.addInstruction(S),p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:S.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===H.toString(),b=a.useSOLBalance&&t.mintB.address===H.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(o==="MintA"?i:s).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?i:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(o==="MintA"?s:i).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?s:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),T=Te.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:o,baseAmount:i,otherAmountMax:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:o,ownerInfo:i,amountMinA:s,amountMinB:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),y=i.useSOLBalance&&t.mintA.address===H.toString(),f=i.useSOLBalance&&t.mintB.address===H.toString(),b,g,{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:l});b=h,A&&p.addInstruction(A);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:l});g=k,B&&p.addInstruction(B);let T=[];for(let I of t.rewardDefaultInfos){let L=i.useSOLBalance&&I.mint.address===H.toString(),U;if(I.mint.address===t.mintA.address)U=b;else if(I.mint.address===t.mintB.address)U=g;else{let{account:F,instructionParams:J}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(I.mint.programId),mint:new ie(I.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:c,checkCreateATAOwner:l});U=F,J&&p.addInstruction(J)}T.push(U)}!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=await Te.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g,rewardAccounts:T},liquidity:u,amountMinA:s,amountMinB:a});p.addInstruction({instructions:x.instructions,instructionTypes:[v.ClmmDecreasePosition]});let R=C({},x.address);if(i.closePosition){let I=await Te.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o});p.addInstruction({endInstructions:I.instructions,endInstructionTypes:I.instructionTypes}),R=C(C({},R),I.address)}return p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:R}})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:o}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=Te.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return i.addInstruction(a).versionBuild({txVersion:o,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!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()===H.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new dt(new _(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:o,checkCreateATAOwner:i});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Te.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ie(n.mint.programId),mint:new ie(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){for(let m of o)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let c=this.createTxBuilder(),l={};for(let m of o){let d=n.useSOLBalance&&m.mint.address===H.toString(),p=m.perSecond.mul(m.endTime-m.openTime),{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(m.mint.programId),mint:new ie(m.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new dt(new _(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});f&&c.addInstruction(f),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let b=t!=null?t:await this.getClmmPoolKeys(e.id),g=Te.initRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{programId:new ie(m.mint.programId),mint:new ie(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:te.decimalToX64(m.perSecond)}});l=C(C({},l),g.address),c.addInstruction(g)}return c.addCustomComputeBudget(a),c.versionBuild({txVersion:u,extInfo:{address:l}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!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(H),{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 dt(new _(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:o,checkCreateATAOwner:i});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Te.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:te.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){let c=this.createTxBuilder(),l={};for(let m of o){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=n.useSOLBalance&&m.mint.address===H.toString(),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(m.mint.programId),mint:new ie(m.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new dt(new _(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});y&&c.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=t!=null?t:await this.getClmmPoolKeys(e.id),b=Te.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ie(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:te.decimalToX64(m.perSecond)}});c.addInstruction(b),l=C(C({},l),b.address)}return c.addCustomComputeBudget(a),c.versionBuild({txVersion:u,extInfo:{address:l}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(H),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:o,checkCreateATAOwner:i});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Te.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:i=!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(H),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:o,checkCreateATAOwner:i});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Te.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=C(C({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:o,amountOutMin:i,priceLimit:s,observationId:a,ownerInfo:u,remainingAccounts:c,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d}){let p=this.createTxBuilder(),y=n.toString()===e.mintA.address,f=u.useSOLBalance&&e.mintA.address===H.toBase58(),b=u.useSOLBalance&&e.mintB.address===H.toBase58(),g;!s||s.equals(new _(0))?g=y?Rt.add(new dt(1)):Lt.sub(new dt(1)):g=oe.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let h;if(!h){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||!y?{payer:u.feePayer||this.scope.ownerPubKey,amount:f?o:0}:void 0,associatedOnly:f?!1:l,checkCreateATAOwner:m});h=B,T&&p.addInstruction(T)}let A;if(!A){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||y?{payer:u.feePayer||this.scope.ownerPubKey,amount:y?0:o}:void 0,associatedOnly:b?!1:l,checkCreateATAOwner:m});A=B,T&&p.addInstruction(T)}(!h||!A)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let k=t!=null?t:await this.getClmmPoolKeys(e.id);return p.addInstruction(Te.makeSwapBaseInInstructions({poolInfo:e,poolKeys:k,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:A},inputMint:new ie(n),amountIn:o,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:c})),p.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)o?Pe(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(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===H.toString(),y=n.useSOLBalance&&d.mintB.address===H.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:o,checkCreateATAOwner:i});f=A,k&&l.addInstruction(k)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:o,checkCreateATAOwner:i});b=A,k&&l.addInstruction(k)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===H.toString(),B=c[A.mint.address];if(!B){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:o});B=T,S&&l.addInstruction(S)}c[A.mint.address]=B,g.push(B)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let k=Te.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new dt(0),amountMinA:new dt(0),amountMinB:new dt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(ao(e).publicKey);return t?za.decode(t.data).whitelistMints.filter(o=>!o.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new dt(1))).map(s=>lt(new ie(e),s.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(s=>{if(!s)return;let a=br.decode(s.data);i.push(a)}),i}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await Oe(this.scope.connection,e.map(i=>({pubkey:new ie(i)})),t),o={};for(let i=0;i<e.length;i++){let s=n[i];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[i]));let a=cn.decode(s.accountInfo.data),u=oe.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=E(C({},a),{currentPrice:u,programId:s.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(u=>e[u].ammConfig.toBase58())),o=await Oe(this.scope.connection,Array.from(n).map(u=>({pubkey:new ie(u)}))),i={};o.forEach(u=>{!u.accountInfo||(i[u.pubkey.toBase58()]=Xa.decode(u.accountInfo.data))});let s=await Se.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(u=>{var m,d,p,y;let[c,l]=[e[u].mintA.toBase58(),e[u].mintB.toBase58()];return{id:u,programId:e[u].programId.toBase58(),mintA:He({address:c,decimals:e[u].mintDecimalsA,programId:t[c].programId.toBase58()||ou.toBase58(),extensions:{feeConfig:(m=t[c])!=null&&m.feeConfig?$t((d=t[c])==null?void 0:d.feeConfig):void 0}}),mintB:He({address:l,decimals:e[u].mintDecimalsB,programId:t[l].programId.toBase58()||ou.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?$t((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[u].currentPrice,config:E(C({},i[e[u].ammConfig.toBase58()]),{id:e[u].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Se.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var l;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),o=await kn({connection:this.scope.connection,mints:Array.from(n).map(m=>new ie(m))}),{computeClmmPoolInfo:i,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:o}),a=await Oe(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),u=Ua(i[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");u.mintAmountA=Number(nu.decode(a[0].accountInfo.data).amount.toString()),u.mintAmountB=Number(nu.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let c=E(C({},i[e]),{id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},rewardInfos:[],config:u.config});return{poolInfo:u,poolKeys:c,computePoolInfo:i[e],tickData:s}}};import{PublicKey as z}from"@solana/web3.js";import{NATIVE_MINT as Sr,TOKEN_PROGRAM_ID as Et,AccountLayout as nd}from"@solana/spl-token";import iu from"bn.js";var Gi=new iu(1e6);function qm(r,e,t){return r.mul(e).add(t).sub(new iu(1)).div(t)}function ru(r,e,t){return r.mul(e).div(t)}var Ar=class{static tradingFee(e,t){return qm(e,t,Gi)}static protocolFee(e,t){return ru(e,t,Gi)}static fundFee(e,t){return ru(e,t,Gi)}};import yo from"bn.js";function hr(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Um(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=hr(r,e);return n.gt(Rn)&&(t=t.add(new yo(1)),e=r.div(t),n=hr(r,t),n.gt(Rn)&&(e=e.add(new yo(1)))),[t,e]}var Rn=new yo(0),Pr=class{static swapWithoutFees(e,t,n){let o=t.mul(n),i=t.add(e),[s,a]=Um(o,i),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,o,i){let s=e.mul(n).div(t),a=e.mul(o).div(t);if(i===0)return{tokenAmount0:s,tokenAmount1:a};if(i===1)return hr(e.mul(n),t).gt(Rn)&&s.gt(Rn)&&(s=s.add(new yo(1))),hr(e.mul(o),t).gt(Rn)&&a.gt(Rn)&&(a=a.add(new yo(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var kr=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,o){let i=Ar.tradingFee(e,o),s=e.sub(i),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Pr.swapWithoutFees(s,t,n),c=a.add(i);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:i}}};var Gm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Xm=Buffer.from("amm_config","utf8"),zm=Buffer.from("pool","utf8"),Ym=Buffer.from("pool_lp_mint","utf8"),Qm=Buffer.from("pool_vault","utf8"),jm=Buffer.from("observation","utf8");function Ln(r){return le([Gm],r)}function Hm(r,e){return le([Xm,Jm(e)],r)}function Zm(r,e,t,n){return le([zm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function $m(r,e){return le([Ym,e.toBuffer()],r)}function su(r,e,t){return le([Qm,e.toBuffer(),t.toBuffer()],r)}function Tr(r,e){return le([jm,e.toBuffer()],r)}function Jm(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function au({programId:r,mintA:e,mintB:t}){let n=Hm(r,0).publicKey,o=Ln(r).publicKey,i=Zm(r,n,e,t).publicKey,s=$m(r,i).publicKey,a=su(r,i,e).publicKey,u=su(r,i,t).publicKey,c=Tr(r,i).publicKey;return{poolId:i,configId:n,authority:o,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xi,TOKEN_2022_PROGRAM_ID as uu,ASSOCIATED_TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";var td=se("Raydium_cpmm"),go={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function cu(r,e,t,n,o,i,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=V([w("amountMaxA"),w("amountMaxB"),w("openTime")]),B=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Xi,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:ed,isSigner:!1,isWritable:!1},{pubkey:Gr,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],T=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},T),new bo({keys:B,programId:r,data:Buffer.from([...go.initialize,...T])})}function lu(r,e,t,n,o,i,s,a,u,c,l,m,d,p,y){let f=V([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:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Xi,isSigner:!1,isWritable:!1},{pubkey:uu,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 td.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new bo({keys:b,programId:r,data:Buffer.from([...go.deposit,...g])})}function mu(r,e,t,n,o,i,s,a,u,c,l,m,d,p,y){let f=V([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:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Xi,isSigner:!1,isWritable:!1},{pubkey:uu,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new bo({keys:b,programId:r,data:Buffer.from([...go.withdraw,...g])})}function Ir(r,e,t,n,o,i,s,a,u,c,l,m,d,p,y,f){let b=V([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new bo({keys:g,programId:r,data:Buffer.from([...go.swapBaseInput,...h])})}function Br(r,e,t,n,o,i,s,a,u,c,l,m,d,p,y,f){let b=V([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new bo({keys:g,programId:r,data:Buffer.from([...go.swapBaseOutput,...h])})}import Me from"bn.js";var du=V([pe(8),D("bump"),qe("disableCreatePool"),St("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),X(w(),16)]),xr=V([pe(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),D("bump"),D("status"),D("lpDecimals"),D("mintDecimalA"),D("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),X(w(),32)]);var wo=class extends ke{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await Oe(this.scope.connection,e.map(m=>({pubkey:new z(m)}))),o={},i=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=xr.decode(d.accountInfo.data);o[String(e[m])]=E(C({},p),{programId:d.accountInfo.owner}),i.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...i],d=await Oe(this.scope.connection,m.map(p=>({pubkey:new z(p)})));for(let p=0;p<m.length;p++){let y=d[p].accountInfo;if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=du.decode(y.data)}}let u={},c=await Oe(this.scope.connection,s.map(m=>({pubkey:new z(m)})));for(let m=0;m<s.length;m++){let d=c[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);u[String(s[m])]=new Me(nd.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(o)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=E(C({},d),{baseReserve:p,quoteReserve:y,vaultAAmount:u[d.vaultA.toString()],vaultBAmount:u[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new _(y.toString()).div(new _(10).pow(d.mintDecimalB)).div(new _(p.toString()).div(new _(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,o)=>{var u,c,l,m;let i=e[o],[s,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return E(C({},n),{[o]:E(C({},i),{id:new z(o),configInfo:i.configInfo,version:7,authority:Ln(i.programId).publicKey,mintA:He({address:s,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(u=t[s])!=null&&u.feeConfig?$t((c=t[s])==null?void 0:c.feeConfig):void 0}}),mintB:He({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?$t((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await kn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),o=He({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?$t(n[t.mintA.toBase58()].feeConfig):void 0}}),i=He({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?$t(n[t.mintB.toBase58()].feeConfig):void 0}}),s=He({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Et.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},u={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:o,mintB:i,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new _(t.vaultAAmount.toString()).div(10**o.decimals).toNumber(),mintAmountB:new _(t.vaultBAmount.toString()).div(10**i.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,day:u,week:u,month:u,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:o,mintB:i,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Ln(t.programId).publicKey.toBase58(),mintLp:s,config:a},rpcData:t}}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:o,associatedOnly:i=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ie(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var U,F,J;let d=o.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new Me(new z(c.mintA.address).toBuffer()).lte(new Me(new z(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],h=o.useSOLBalance&&y.address===Sr.toBase58(),A=o.useSOLBalance&&f.address===Sr.toBase58(),[k,B]=[new z(y.address),new z(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:i,checkCreateATAOwner:s});T.addInstruction(x||{});let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:new z(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:i,checkCreateATAOwner:s});if(T.addInstruction(I||{}),S===void 0||R===void 0)throw Error("you don't has some token account");let L=au({programId:e,mintA:k,mintB:B});return T.addInstruction({instructions:[cu(e,this.scope.ownerPubKey,L.configId,L.authority,L.poolId,k,B,L.lpMint,S,R,Pe(this.scope.ownerPubKey,L.lpMint).publicKey,L.vaultA,L.vaultB,t,new z((F=y.programId)!=null?F:Et),new z((J=f.programId)!=null?J:Et),L.observationId,b,g,n)],instructionTypes:[v.CpmmCreatePool]}),T.addCustomComputeBudget(u),T.versionBuild({txVersion:a,extInfo:{address:E(C({},L),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:o,baseIn:i,slippage:s,computeResult:a,computeBudgetConfig:u,config:c,txVersion:l}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),o.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:o.toString()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),y=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:f,inputAmountFee:b,anotherAmount:g}=a||this.computePairAmount({poolInfo:E(C({},t),{lpAmount:new _(y.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:y.baseReserve,quoteReserve:y.quoteReserve,slippage:new Qe(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new _(o.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),h=g.amount,A=t.mintA.address===Sr.toString(),k=t.mintB.address===Sr.toString(),B=this.createTxBuilder(),[T,S]=[new z(t.mintA.address),new z(t.mintB.address)],{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A||(i?o:h).isZero()?{payer:this.scope.ownerPubKey,amount:i?o:h}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(R||{});let{account:I,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||(i?h:o).isZero()?{payer:this.scope.ownerPubKey,amount:i?h:o}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(L||{}),!x&&!I&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let U=await m.getCreatedTokenAccount({mint:new z(t.lpMint.address)}),Ye=await m.handleTokenAccount({side:"out",amount:0,mint:new z(t.lpMint.address),tokenAccount:U,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:F}=Ye,J=Ie(Ye,["tokenAccount"]);B.addInstruction(J);let G=n!=null?n:await this.getCpmmPoolKeys(t.id),W=new Qe(new Me(1)).sub(s);return B.addInstruction({instructions:[lu(new z(t.programId),this.scope.ownerPubKey,new z(G.authority),new z(t.id),F,x,I,new z(G.vault.A),new z(G.vault.B),T,S,new z(t.lpMint.address),a?a==null?void 0:a.liquidity:W.mul(f).quotient,i?b.amount:h,i?h:b.amount)],instructionTypes:[v.CpmmAddLiquidity],lookupTableAddress:G.lookupTableAccount?[G.lookupTableAccount]:[]}),B.addCustomComputeBudget(u),B.versionBuild({txVersion:l})}async withdrawLiquidity(e){var F,J;let{poolInfo:t,poolKeys:n,lpAmount:o,slippage:i,computeBudgetConfig:s,txVersion:a}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let u=new Qe(new Me(1)).sub(i),c=await this.getRpcPoolInfo(t.id),[l,m]=[u.mul(o.mul(c.baseReserve).div(c.lpAmount)).quotient,u.mul(o.mul(c.quoteReserve).div(c.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[p,y]=[we(l,t.mintA.extensions.feeConfig,d,!0),we(m,t.mintB.extensions.feeConfig,d,!0)],{account:f}=this.scope,b=this.createTxBuilder(),[g,h]=[new z(t.mintA.address),new z(t.mintB.address)],A=g.equals(H),k=h.equals(H),B,T,{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z(t.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});B=S,x&&b.addInstruction(x);let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z(t.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:!k,checkCreateATAOwner:!1});T=R,I&&b.addInstruction(I),(!B||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let L=await f.getCreatedTokenAccount({mint:new z(t.lpMint.address)});L||this.logAndCreateError("cannot found lp token account","tokenAccounts",f.tokenAccounts);let U=n!=null?n:await this.getCpmmPoolKeys(t.id);return b.addInstruction({instructions:[mu(new z(t.programId),this.scope.ownerPubKey,new z(U.authority),new z(t.id),L,B,T,new z(U.vault.A),new z(U.vault.B),g,h,new z(t.lpMint.address),o,l.sub((F=p.fee)!=null?F:new Me(0)),m.sub((J=y.fee)!=null?J:new Me(0)))],instructionTypes:[v.CpmmWithdrawLiquidity],lookupTableAddress:U.lookupTableAccount?[U.lookupTableAccount]:[]}),b.addCustomComputeBudget(s),b.versionBuild({txVersion:a})}async swap(e){var S,x,R,I,L,U;let{poolInfo:t,poolKeys:n,baseIn:o,swapResult:i,slippage:s=0,config:a,computeBudgetConfig:u,txVersion:c}=e,{bypassAssociatedCheck:l,checkCreateATAOwner:m,associatedOnly:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},a),p=this.createTxBuilder(),[y,f]=[new z(t.mintA.address),new z(t.mintB.address)];i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new Me((1-s)*1e4)).div(new Me(1e4));let b=t.mintA.address===H.toBase58(),g=t.mintB.address===H.toBase58(),{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:y,tokenProgram:new z((S=t.mintA.programId)!=null?S:Et),owner:this.scope.ownerPubKey,createInfo:b||!o?{payer:this.scope.ownerPubKey,amount:o?i.sourceAmountSwapped:0}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:d,checkCreateATAOwner:m});A&&p.addInstruction(A);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:f,tokenProgram:new z((x=t.mintB.programId)!=null?x:Et),owner:this.scope.ownerPubKey,createInfo:g||o?{payer:this.scope.ownerPubKey,amount:o?0:i.sourceAmountSwapped}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:d,checkCreateATAOwner:m});B&&p.addInstruction(B),!h&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getCpmmPoolKeys(t.id);return p.addInstruction({instructions:[o?Ir(new z(t.programId),this.scope.ownerPubKey,new z(T.authority),new z(T.config.id),new z(t.id),h,k,new z(T.vault.A),new z(T.vault.B),new z((R=t.mintA.programId)!=null?R:Et),new z((I=t.mintB.programId)!=null?I:Et),y,f,Tr(new z(t.programId),new z(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Br(new z(t.programId),this.scope.ownerPubKey,new z(T.authority),new z(T.config.id),new z(t.id),k,h,new z(T.vault.B),new z(T.vault.A),new z((L=t.mintB.programId)!=null?L:Et),new z((U=t.mintA.programId)!=null?U:Et),f,y,Tr(new z(t.programId),new z(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[o?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut]}),p.addCustomComputeBudget(u),p.versionBuild({txVersion:c})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:o}){let i=n.toString()===e.mintB.address,s=kr.swap(t,i?e.baseReserve:e.quoteReserve,i?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new _(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),u=s.destinationAmountSwapped.mul(new Me((1-o)*1e4)).div(new Me(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:u,executionPrice:a,fee:s.tradeFee,priceImpact:e.poolPrice.sub(a).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:o,slippage:i,epochInfo:s,baseIn:a}){var h,A,k,B,T,S,x,R;let u=1-Number(i.toSignificant())/100,c=new Me(new _(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),l=we(c,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=c.sub((h=l.fee)!=null?h:new Me(0)),d=new Me(new _(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,_.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(k=(A=l.fee)==null?void 0:A.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:at,fee:void 0,expirationTime:void 0};if(!m.isZero()){let I=od(y,t,n,d);this.logDebug("lpAmountData:",{amountA:I.amountA.toString(),amountB:I.amountB.toString()}),f=we(I[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Qe(new Me(1)).add(i),g=we(b.mul(f.amount.sub((B=f.fee)!=null?B:new Me(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(R=(x=g.fee)==null?void 0:x.toString())!=null?R:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function od(r,e,t,n){let o=r.mul(e).div(n);!o.isZero()&&!r.mul(e).mod(n).isZero()&&(o=o.add(new Me(1)));let i=r.mul(t).div(n);return!i.isZero()&&!r.mul(t).mod(n).isZero()&&(i=i.add(new Me(1))),{amountA:o,amountB:i}}import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ke,TOKEN_2022_PROGRAM_ID as Yi,createTransferInstruction as wu}from"@solana/spl-token";import Rr from"bn.js";import{TOKEN_PROGRAM_ID as rd,TOKEN_2022_PROGRAM_ID as id,ASSOCIATED_TOKEN_PROGRAM_ID as sd}from"@solana/spl-token";import{PublicKey as $,TransactionInstruction as ad,SystemProgram as ud}from"@solana/web3.js";import dn from"bn.js";function cd(r,e,t,n,o,i,s,a,u,c,l,m,d,p,y){var T;let f=[],b=[P({pubkey:rd,isWritable:!1}),P({pubkey:id,isWritable:!1}),P({pubkey:sd,isWritable:!1}),P({pubkey:ud.programId,isWritable:!1}),P({pubkey:e,isSigner:!0})];b.push(P({pubkey:t})),b.push(P({pubkey:o}));let g=[u,c],h=[l,m],A=[i,s,a];for(let S=0;S<g.length;S++){let x=g[S],R=A[S]===x.mintA.address;if(b.push(P({pubkey:new $(x.programId),isWritable:!1})),S===g.length-1?b.push(P({pubkey:o})):b.push(P({pubkey:n})),b.push(P({pubkey:new $(A[S])})),b.push(P({pubkey:new $(A[S+1])})),x.version===6){let I=h[S];b.push(P({pubkey:new $(I.config.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(R?I.vault.A:I.vault.B)})),b.push(P({pubkey:new $(R?I.vault.B:I.vault.A)})),b.push(P({pubkey:new $(x.observationId)})),b.push(P({pubkey:_o})),b.push(P({pubkey:rt(new $(x.programId),new $(x.id)).publicKey})),f.push(ld(x.sqrtPriceX64.toString(),R));for(let L of(T=y[S])!=null?T:[])b.push(P({pubkey:new $(L)}))}else if(x.version===5){let I=h[S];b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.authority),isWritable:!1})),b.push(P({pubkey:new $(I.marketProgramId)})),b.push(P({pubkey:new $(I.marketAuthority)})),b.push(P({pubkey:Ds,isWritable:!1})),b.push(P({pubkey:new $(I.openOrders)})),b.push(P({pubkey:new $(I.vault.A)})),b.push(P({pubkey:new $(I.vault.B)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.marketId)})),b.push(P({pubkey:new $(I.marketBids)})),b.push(P({pubkey:new $(I.marketAsks)})),b.push(P({pubkey:new $(I.marketEventQueue)})),b.push(P({pubkey:new $(I.marketBaseVault)})),b.push(P({pubkey:new $(I.marketQuoteVault)}))}else if(x.version===4){let I=h[S],L=x.status!==1;b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(I.authority),isWritable:!1})),b.push(P({pubkey:new $(L?I.id:I.marketProgramId)})),b.push(P({pubkey:new $(L?I.id:I.marketAuthority)})),b.push(P({pubkey:new $(L?I.id:I.openOrders)})),b.push(P({pubkey:new $(I.vault.A)})),b.push(P({pubkey:new $(I.vault.B)})),b.push(P({pubkey:new $(L?I.id:I.marketId)})),b.push(P({pubkey:new $(L?I.id:I.marketBids)})),b.push(P({pubkey:new $(L?I.id:I.marketAsks)})),b.push(P({pubkey:new $(L?I.id:I.marketEventQueue)})),b.push(P({pubkey:new $(L?I.id:I.marketBaseVault)})),b.push(P({pubkey:new $(L?I.id:I.marketQuoteVault)}))}else if(x.version===7){let I=h[S];b.push(P({pubkey:new $(I.authority)})),b.push(P({pubkey:new $(I.config.id)})),b.push(P({pubkey:new $(I.id)})),b.push(P({pubkey:new $(R?I.vault.A:I.vault.B)})),b.push(P({pubkey:new $(R?I.vault.B:I.vault.A)})),b.push(P({pubkey:new $(x.observationId)}))}else throw Error("pool type error")}let k=V([D("insId"),w("amountIn"),w("amountOut"),X(Y(),f.length,"clmmPriceLimit")]),B=Buffer.alloc(k.span);return k.encode({insId:0,amountIn:d,amountOut:p,clmmPriceLimit:f},B),new ad({keys:b,programId:r,data:B})}function ld(r,e){if(r)if(e){let t=new dn(r).div(new dn(25));return t.gt(pr)?t:pr}else{let t=new dn(r).mul(new dn(25));return t.lt(fr)?t:fr}else return e?pr:fr}function pu({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var o,i,s,a,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=ve(m),p=t.equals(d.mintA.address)?Rt.add(it):Lt.sub(it);return Te.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((i=(o=n.minAmountOut.fee)==null?void 0:o.raw)!=null?i:new dn(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],d=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[d?Ir(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,m.vaultA,m.vaultB,m.mintProgramA,m.mintProgramA,new $(m.mintA.address),new $(m.mintB.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):Br(m.programId,e.wallet,m.authority,m.configId,m.id,e.destinationToken,e.sourceToken,m.vaultB,m.vaultA,m.mintProgramB,m.mintProgramA,new $(m.mintB.address),new $(m.mintA.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[d?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[cr({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((u=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?u:new dn(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?v.AmmV5SwapBaseIn:v.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[cd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new dn(0)),n.remainingAccounts)],instructionTypes:[v.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var fu={[ni.toBase58()]:3},yu={3:ni};var zi=V([pe(5),pe(8),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]),bu={3:zi};import{PublicKey as gu}from"@solana/web3.js";var Kr=se("Serum"),Cr=class{static getProgramId(e){let t=yu[e];return t||Kr.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=fu[t];return n||Kr.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=bu[e];return t||Kr.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()],o=0,i;for(;o<100;){try{let s=n.concat(Buffer.from([o]),Buffer.alloc(7));i=gu.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;o++;continue}return{publicKey:i,nonce:o}}return Kr.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:gu.default,nonce:o}}};var Ft=new Rr(0),Ao=class extends ke{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(H));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:o=1}=e,i=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let u=Z(t);for(let c=0;c<i.length;c++)u.gte(i[c].amount)?(s.addInstruction({instructions:[Kt({tokenAccount:i[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),u.sub(i[c].amount)):(s.addInstruction({instructions:[Kt({tokenAccount:i[c].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),jn({destination:a.addresses.newAccount,source:i[c].publicKey,amount:u,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:o})}async wrapWSol(e,t,n){let o=await this.getWSolAccounts(),i=this.createTxBuilder(),s=await _t({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(s),o.length&&i.addInstruction({instructions:[jn({destination:o[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Kt({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:o,routeProgram:i,txVersion:s}){let a=this.createTxBuilder(),u=e.amountIn,c=e.amountOut,l=u.amount.token.mint.equals(H),m=c.amount.token.mint.equals(H),d=u.amount.token.mint,p=c.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Yi:Ke,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),y===void 0)throw Error("input account check error");let b=this.scope.account.getAssociatedTokenAccount(p,c.amount.token.isToken2022?Yi:Ke);m&&a.addInstruction({endInstructions:[Kt({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Ke})],endInstructionTypes:[v.CloseAccount]});let g;if(e.routeType==="route"){let k=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(k.mint,k.isToken2022?Yi:Ke)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),A=pu({routeProgram:i,inputMint:d,swapInfo:E(C({},e),{poolInfo:[...e.poolInfoList],poolKey:h,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:g,destinationToken:b}});if(e.feeConfig!==void 0){let k=this.createTxBuilder();k.addInstruction({instructions:[wu(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]}),k.addInstruction(A);let{transactions:B}=s===0?await k.sizeCheckBuildV0():await k.sizeCheckBuild();B.length<2&&a.addInstruction({instructions:[wu(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]})}return a.addInstruction(A),s===0?a.sizeCheckBuildV0({computeBudgetConfig:o,address:A.address}):a.sizeCheckBuild({computeBudgetConfig:o,address:A.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Fs,clmm:n=Ws,cpmm:o=qs}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:ur.offsetOf("baseMint"),length:64}}),s=V([K("baseMint"),K("quoteMint")]),a=i.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),u=V([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:cn.span}],dataSlice:{offset:cn.offsetOf("mintA"),length:64}})).map(p=>{let y=u.decode(p.account.data);return{id:p.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),d=(await this.scope.connection.getProgramAccounts(o,{dataSlice:{offset:xr.offsetOf("mintA"),length:64}})).map(p=>{let y=u.decode(p.account.data);return{id:p.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:d}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:o,cpmmPools:i}){e=e.toString()===pn.default.toString()?H:e,t=t.toString()===pn.default.toString()?H:t;let s={},a={},u={},c=[],l={};for(let d of n!=null?n:[]){if((d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(c.push(d),a[d.id.toString()]=d),d.mintA.equals(e)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintB.equals(e)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintA.equals(t)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].out.push(d)}if(d.mintB.equals(t)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[p].out.push(d)}}let m=[];for(let d of o)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(c.push(d),s[d.id.toBase58()]=d,m.push(d)),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of i)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(c.push(d),u[d.id.toBase58()]=d),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Ke,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of Object.keys(l)){if(l[d].in.length===1&&l[d].out.length===1&&l[d].in[0].id.equals(l[d].out[0].id)){delete l[d];continue}if(l[d].in.length===0||l[d].out.length===0){delete l[d];continue}let p=l[d];for(let y of p.in)for(let f of p.out)y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&i[y.id.toString()]===void 0?u[y.id.toString()]=y:(y.version===4||y.version===5)&&s[y.id.toString()]===void 0&&(s[y.id.toString()]=y),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&i[f.id.toString()]===void 0?u[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:c,addLiquidityPools:m,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(u)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let o=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let i=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=wr(i),a={};Object.values(s).forEach(f=>{o.delete(f.mintA.address),a[f.mintA.address]={address:new pn(f.mintA.address),programId:Ke,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},o.delete(f.mintB.address),a[f.mintB.address]={address:new pn(f.mintB.address),programId:Ke,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let u=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(u).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Ke)?(o.delete(b),a[b]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):o.add(b),f.mintProgramB.equals(Ke)?(o.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):o.add(g)}),console.log("fetching mints info, total: ",o.size);let c=await kn({connection:this.scope.connection,mints:Array.from(o).map(f=>new pn(f))});a=C(C({},a),c);let l=this.scope.cpmm.toComputePoolInfos({pools:u,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let m=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:d,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:m,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>E(C({},f),{[b]:E(C({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:s,clmmPoolsRpcInfo:m,computeClmmPoolInfo:d,computePoolTickData:p,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:i,tickCache:s,slippage:a,chainTime:u,epochInfo:c,feeConfig:l}){var g,h,A,k,B,T,S,x,R;let m=l===void 0?new Rr(0):e.raw.mul(new Rr(l.feeBps.toNumber())).div(new Rr(1e4)),d=e.raw.sub(m),p=new fe(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=E(C({},t),{address:nt(t.address).toString()}),b=[];for(let I of n)try{b.push(E(C({},this.computeAmountOut({itemPool:I,tickCache:s,simulateCache:i,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(L){this.logDebug("direct error",I.version,I.id.toString(),L.message)}this.logDebug("direct done");for(let[I,L]of Object.entries(o)){let U={chainId:101,address:I,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},F=L.in.map(G=>{try{return{pool:G,data:this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:u,epochInfo:c,slippage:a,outputToken:U,amountIn:p})}}catch(W){this.logDebug("route in error",G.version,G.id.toString(),W.message);return}}).sort((G,W)=>{var en,Dt,bn,Nt;let Ye=G===void 0?Ft:G.data.amountOut.amount.raw.sub((Dt=(en=G.data.amountOut.fee)==null?void 0:en.raw)!=null?Dt:Ft),yn=W===void 0?Ft:W.data.amountOut.amount.raw.sub((Nt=(bn=W.data.amountOut.fee)==null?void 0:bn.raw)!=null?Nt:Ft);return Ye.lt(yn)?1:-1})[0];if(F===void 0)continue;let J=new fe(ar(U),F.data.amountOut.amount.raw.sub((h=(g=F.data.amountOut.fee)==null?void 0:g.raw)!=null?h:Ft));for(let G of L.out)try{let W=this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:u,epochInfo:c,slippage:a,outputToken:f,amountIn:J});b.push(E(C({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new _(new Je({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((k=(A=W.amountOut.fee)==null?void 0:A.raw)!=null?k:Ft)}).toFixed()),priceImpact:new _(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,G],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(B=W.amountOut.fee)!=null&&B.raw?new fe(F.data.amountOut.amount.token,((S=(T=F.data.amountOut.fee)==null?void 0:T.raw)!=null?S:Ft).add((R=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?R:Ft)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:xt(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",G.version,G.id.toString(),W.message)}}return b.filter(I=>I.allTrade).sort((I,L)=>I.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(Ft)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:s,outputToken:a,amountIn:u}){if(e.version===6){let{allTrade:c,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:h,executionPriceX64:A}=Se.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:u.raw,tokenOut:a,slippage:s,epochInfo:i,catchLiquidityInsufficient:!0});return{allTrade:c,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new _(y.toFixed()),executionPrice:new _(f.toFixed()),priceImpact:new _(b.toFixed()),fee:[g],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:s,clmmExPriceX64:[A],expirationTime:xt(l.expirationTime,p)}}else if(e.version===7){let{allTrade:c,executionPrice:l,amountOut:m,minAmountOut:d,priceImpact:p,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:u.raw,slippage:s});return{allTrade:c,amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:oo(E(C({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:oo(E(C({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new fe(u.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<o,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:c,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:u.raw,mintIn:u.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:u,fee:void 0,expirationTime:void 0},amountOut:{amount:oo(E(C({},a),{amount:c})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:oo(E(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new fe(u.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let o=new Set(e.filter(c=>c.version===6&&!t[c.id.toString()]).map(c=>c.id.toString()));if(o.size>0){let c=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});Object.keys(c).forEach(l=>{t[l]=c[l]})}if(new Set(e.filter(c=>c.version===4&&!n[c.id.toString()]).map(c=>c.id.toString())).size>0){let c=this.scope.liquidity.getRpcPoolInfos(Array.from(o));Object.keys(c).forEach(l=>{n[l]=c[l]})}let s=new Set(e.filter(c=>c.version===4).map(c=>c.marketId)),a={};s.size>0&&(await Oe(this.scope.connection,Array.from(s).map(l=>({pubkey:new pn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=zi.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Cr.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let u=[];return e.forEach(c=>{if(c.version===6){let l=t[c.id.toString()],m={programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:E(C({},c.ammConfig),{id:c.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};u.push(m)}else if(c.version===4){let l=n[c.id.toString()],m=C({programId:c.programId,id:c.id,mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Ui({programId:new pn(c.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:c.lpMint},a[c.marketId]);u.push(m)}else c.version===7&&u.push({programId:c.programId.toBase58(),id:c.id.toBase58(),mintA:c.mintA,mintB:c.mintB,openTime:String(c.openTime),authority:Ln(c.programId).publicKey.toBase58(),vault:{A:c.vaultA.toBase58(),B:c.vaultB.toBase58()},mintLp:He({address:c.mintLp.toBase58(),programId:Ke.toBase58(),decimals:c.lpDecimals}),config:E(C({id:c.configId.toBase58()},c.configInfo),{protocolFeeRate:c.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:c.configInfo.tradeFeeRate.toNumber(),fundFeeRate:c.configInfo.fundFeeRate.toNumber(),createPoolFee:c.configInfo.createPoolFee.toString()})})}),u}};import{TOKEN_PROGRAM_ID as md}from"@solana/spl-token";import{PublicKey as dd,Transaction as Qi,TransactionInstruction as pd}from"@solana/web3.js";import Au from"bn.js";var ze=class extends ke{static getPdaPoolId(e,t){return le([ze.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return le([ze.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Au(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:i}){if(n.length===0)return[];let s=n.map(l=>ze.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<ze.VERSION_PROJECT.length;l++)a.push(...s.map(m=>ze.getPdaOwnerId(t,m,o,l).publicKey));let u=await gt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==ze.POOL_LAYOUT.span||b.data.length!==ze.OWNER_LAYOUT.span)continue;let g=ze.POOL_LAYOUT.decode(f.data),h=ze.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),B=h.tokenInfo.map(x=>x.debtAmount.gt(new Au(0))).filter(x=>!x).length!==3,T=i>A&&i<k&&g.status===1,S=B&&T;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:ze.VERSION_PROJECT[m],openTime:A,endTime:k,canClaim:S,canClaimErrorType:B?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,R)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:h.tokenInfo[R].debtAmount.add(h.tokenInfo[R].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,i=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),i.push(c)}n.addInstruction({instructions:[ze.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:o,ownerPda:e.ownerAccountId,claimAddress:i}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,i={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(i[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[ze.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:o,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Zr(u,[o,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Qi().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Qi().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Qi().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=V([]),i=[{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(o.span);o.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new pd({keys:i,programId:e,data:a})}},pt=ze;pt.CLAIMED_NUM=3,pt.POOL_LAYOUT=V([pe(8),D("bump"),D("status"),w("openTime"),w("endTime"),K("ammId"),X(V([D("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),ze.CLAIMED_NUM,"tokenInfo"),X(w(),10,"padding")]),pt.OWNER_LAYOUT=V([pe(8),D("bump"),D("version"),K("poolId"),K("owner"),w("lpAmount"),X(V([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),ze.CLAIMED_NUM,"tokenInfo"),X(w(),4,"padding")]),pt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new dd(e)),pt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},pt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Iu}from"@solana/spl-token";import Po from"bn.js";import{TransactionInstruction as yd,SYSVAR_RENT_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hu}from"@solana/spl-token";import{createInitializeAccountInstruction as Pu}from"@solana/spl-token";import{SystemProgram as fn,Transaction as ku}from"@solana/web3.js";function fd(r="accountFlags"){let e=new Zo(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 ji=V([pe(5),fd("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),pe(7)]);function gd({programId:r,marketInfo:e}){let t=V([D("version"),je("instruction"),w("baseLotSize"),w("quoteLotSize"),St("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}:[]),o=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},o),new yd({keys:n,programId:r,data:o})}async function Tu({connection:r,wallet:e,marketInfo:t}){let n=new ku,o=await r.getMinimumBalanceForRentExemption(165);n.add(fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:hu}),fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:hu}),Pu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Pu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let i=new ku;return i.add(fn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(ji.span),space:ji.span,programId:t.programId}),fn.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}),fn.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}),fn.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}),fn.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:i,signer:[],instructionTypes:[v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.InitMarket]}]}var On=class extends ke{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:o,dexProgramId:i,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ue({fromPublicKey:u,programId:i}),l=Ue({fromPublicKey:u,programId:i}),m=Ue({fromPublicKey:u,programId:i}),d=Ue({fromPublicKey:u,programId:i}),p=Ue({fromPublicKey:u,programId:i}),y=Ue({fromPublicKey:u,programId:Iu}),f=Ue({fromPublicKey:u,programId:Iu}),b=0,g=new Po(100);function h(){let R=new Po(0);for(;;)try{return{vaultOwner:ho.createProgramAddressSync([c.publicKey.toBuffer(),R.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:R}}catch{if(R.iaddn(1),R.gt(new Po(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),B=new Po(Math.round(10**e.decimals*n)),T=new Po(Math.round(n*10**t.decimals*o));if(B.eq(at))throw Error("lot size is too small");if(T.eq(at))throw Error("tick size or lot size is too small");let S=await Tu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:B,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let R of S.slice(1,S.length))x.addInstruction({instructions:R.transaction.instructions,signers:R.signer,instructionTypes:R.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new ho(e.mint),quoteMin:new ho(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new ho(e.mint),quoteMin:new ho(t.mint)}})}};import{PublicKey as To}from"@solana/web3.js";import{TransactionInstruction as Bu,SYSVAR_CLOCK_PUBKEY as Ad}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xu}from"@solana/spl-token";var wd=V([D("instruction"),Qs("amount")]),ko=V([D("instruction")]);function Lr({programId:r},e){let t=[{pubkey:xu,isSigner:!1,isWritable:!1},{pubkey:ks,isSigner:!1,isWritable:!1},...Object.entries(e).map(([o,i])=>({pubkey:i,isSigner:o==="userOwner",isWritable:!["authority","userOwner"].includes(o)}))],n=Buffer.alloc(ko.span);return ko.encode({instruction:2},n),new Bu({keys:t,programId:r,data:n})}function Hi(r){let{poolConfig:e,userKeys:t,side:n}=r,o=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,i=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(ko.span);ko.encode({instruction:2},s);let a=[{pubkey:xu,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:i,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Bu({programId:e.programId,keys:a,data:s})}import Su from"bn.js";var hd={[zn.IDO_PROGRAM_ID_V1.toString()]:1,[zn.IDO_PROGRAM_ID_V2.toString()]:2,[zn.IDO_PROGRAM_ID_V3.toString()]:3,[zn.IDO_PROGRAM_ID_V4.toString()]:4},Nn=class extends ke{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:o=!1,txVersion:i}){let s=this.createTxBuilder(),a=hd[t.programId];a||this.logAndCreateError("invalid version",a);let u=ve(t),[c,l]=[!new Su(e.coin).isZero(),!new Su(e.pc).isZero()],m=u.projectInfo.mint.address.equals(H),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:o});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(H),{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:o});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[Lr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new To(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Lr({programId:new To(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new To(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:i});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Lr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new To(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:i});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new To(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Hi(E(C({},g),{side:"base"}))]:[],...l?[Hi(E(C({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:i})}};import{PublicKey as Pd}from"@solana/web3.js";import{MintLayout as kd,TOKEN_2022_PROGRAM_ID as Zi,TOKEN_PROGRAM_ID as $i}from"@solana/spl-token";var Io=class extends ke{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:o="strict"}=t||{},{mintList:i,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(o,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(zt.address,zt),this._mintGroup.official.add(zt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,E(C({},c),{priority:-1}))}),i.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,E(C({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Zi.toBase58():$i.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,E(C({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?Zi.toBase58():$i.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,E(C({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?Zi.toBase58():$i.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(),o=this._tokenMap.get(n);if(o)return o;if(n.toLocaleUpperCase()==="SOL")return zt;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,E(C({},i),{priority:2})),i;let s=await this.scope.connection.getAccountInfo(new Pd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=kd.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 Or=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:o,api:i,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u,blockhashCommitment:c="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=o?new wt(o):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=c,this.api=i,this._apiCacheTime=u||5*60*1e3,this.logger=se("Raydium"),this.farm=new no({scope:this,moduleName:"Raydium_Farm"}),this.account=new Hn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new po({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Io({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Ao({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new fo({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new wo({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new pt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new On({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Nn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,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:o,logCount:i,logRequests:s,urlConfigs:a}=t,u=new Qo({cluster:n,timeout:o,urlConfigs:a,logCount:i,logRequests:s}),c=new Or(E(C({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(jo);return this._owner.publicKey}setOwner(e){return this._owner=e?new wt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Xs);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(jo),new Error(jo)}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 i;let n=(i=this.apiData.jupTokenList)==null?void 0:i[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let o=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=E(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:o}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};export{Or as Raydium};
2
2
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
3
  //# sourceMappingURL=raydium.mjs.map