@raydium-io/raydium-sdk-v2 0.1.22-alpha → 0.1.23-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.
- package/lib/api/api.d.ts +1 -1
- package/lib/api/index.d.ts +1 -1
- package/lib/api/type.d.ts +1 -1
- package/lib/common/accountInfo.d.ts +1 -1
- package/lib/common/bignumber.d.ts +1 -1
- package/lib/common/fractionUtil.d.ts +1 -1
- package/lib/common/index.d.ts +1 -1
- package/lib/common/transfer.d.ts +1 -1
- package/lib/common/txTool/txTool.d.ts +1 -1
- package/lib/common/txTool/txUtils.d.ts +1 -1
- package/lib/common/utility.d.ts +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/module/amount.d.ts +1 -1
- package/lib/module/fraction.d.ts +1 -1
- package/lib/module/index.d.ts +1 -1
- package/lib/module/percent.d.ts +1 -1
- package/lib/module/price.d.ts +1 -1
- package/lib/raydium/account/account.d.ts +4 -3
- package/lib/raydium/account/index.d.ts +1 -1
- package/lib/raydium/account/instruction.d.ts +1 -1
- package/lib/raydium/account/types.d.ts +1 -1
- package/lib/raydium/account/util.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +4 -3
- package/lib/raydium/clmm/index.d.ts +4 -3
- package/lib/raydium/clmm/instrument.d.ts +2 -2
- package/lib/raydium/clmm/layout.d.ts +10 -10
- package/lib/raydium/clmm/type.d.ts +2 -2
- package/lib/raydium/clmm/utils/math.d.ts +2 -2
- package/lib/raydium/clmm/utils/pool.d.ts +2 -2
- package/lib/raydium/clmm/utils/position.d.ts +2 -2
- package/lib/raydium/clmm/utils/tick.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
- package/lib/raydium/cpmm/cpmm.d.ts +4 -3
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/layout.d.ts +2 -2
- package/lib/raydium/cpmm/type.d.ts +1 -1
- package/lib/raydium/farm/config.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +4 -3
- package/lib/raydium/farm/index.d.ts +1 -1
- package/lib/raydium/farm/instruction.d.ts +1 -1
- package/lib/raydium/farm/layout.d.ts +1 -1
- package/lib/raydium/farm/type.d.ts +1 -1
- package/lib/raydium/farm/util.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +4 -3
- package/lib/raydium/ido/index.d.ts +4 -3
- package/lib/raydium/ido/instruction.d.ts +1 -1
- package/lib/raydium/ido/type.d.ts +1 -1
- package/lib/raydium/index.d.ts +3 -3
- package/lib/raydium/index.js +1 -1
- package/lib/raydium/index.js.map +1 -1
- package/lib/raydium/index.mjs +1 -1
- package/lib/raydium/index.mjs.map +1 -1
- package/lib/raydium/liquidity/index.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/liquidity.d.ts +4 -3
- package/lib/raydium/liquidity/liquidity.js +1 -1
- package/lib/raydium/liquidity/liquidity.js.map +1 -1
- package/lib/raydium/liquidity/liquidity.mjs +1 -1
- package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
- package/lib/raydium/liquidity/type.d.ts +2 -1
- package/lib/raydium/liquidity/type.js.map +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +4 -3
- package/lib/raydium/marketV2/index.d.ts +4 -3
- package/lib/raydium/moduleBase.d.ts +4 -3
- package/lib/raydium/raydium.d.ts +4 -3
- package/lib/raydium/raydium.js +1 -1
- package/lib/raydium/raydium.js.map +1 -1
- package/lib/raydium/raydium.mjs +1 -1
- package/lib/raydium/raydium.mjs.map +1 -1
- package/lib/raydium/serum/layout.d.ts +1 -1
- package/lib/raydium/token/constant.d.ts +1 -1
- package/lib/raydium/token/index.d.ts +1 -1
- package/lib/raydium/token/token.d.ts +4 -3
- package/lib/raydium/token/type.d.ts +1 -1
- package/lib/raydium/token/utils.d.ts +1 -1
- package/lib/raydium/tradeV2/index.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/trade.d.ts +4 -3
- package/lib/raydium/tradeV2/type.d.ts +2 -2
- package/lib/raydium/type.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +4 -3
- package/lib/raydium/utils1216/utils1216.d.ts +4 -3
- package/lib/{raydium-c9108dcc.d.ts → raydium-276d396e.d.ts} +7 -6
- package/lib/{type-c00e03bd.d.ts → type-00b215cb.d.ts} +4 -4
- package/lib/{type-0d4eb827.d.ts → type-25c99d71.d.ts} +1 -1
- package/package.json +1 -1
- package/src/raydium/liquidity/liquidity.ts +4 -3
- package/src/raydium/liquidity/type.ts +1 -0
package/lib/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Rc=Object.defineProperty,Lc=Object.defineProperties;var Oc=Object.getOwnPropertyDescriptors;var Xr=Object.getOwnPropertySymbols;var Gs=Object.prototype.hasOwnProperty,Xs=Object.prototype.propertyIsEnumerable;var Us=(r,e,t)=>e in r?Rc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,R=(r,e)=>{for(var t in e||(e={}))Gs.call(e,t)&&Us(r,t,e[t]);if(Xr)for(var t of Xr(e))Xs.call(e,t)&&Us(r,t,e[t]);return r},v=(r,e)=>Lc(r,Oc(e));var Be=(r,e)=>{var t={};for(var n in r)Gs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Xr)for(var n of Xr(r))e.indexOf(n)<0&&Xs.call(r,n)&&(t[n]=r[n]);return t};import Va from"axios";import{get as Jo,set as zs}from"lodash";import Ys from"dayjs";import Nc from"dayjs/plugin/utc";Ys.extend(Nc);var Mc=(o=>(o[o.Error=0]="Error",o[o.Warning=1]="Warning",o[o.Info=2]="Info",o[o.Debug=3]="Debug",o))(Mc||{}),ei=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 Ys().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}},ti={},Qs={};function ce(r){let e=Jo(ti,r);if(!e){let t=Jo(Qs,r);e=new ei({name:r,logLevel:t}),zs(ti,r,e)}return e}function If(r,e){zs(Qs,r,e);let t=Jo(ti,r);t&&(t.level=e)}import{PublicKey as Yl}from"@solana/web3.js";import Ql from"bn.js";import Xl from"big.js";import en from"bn.js";import Te from"bn.js";var On=9e15,Jt=1e9,ni="0123456789abcdef",Yr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Qr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ri={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-On,maxE:On,crypto:!1},$s,Ft,re=!0,Hr="[DecimalError] ",$t=Hr+"Invalid argument: ",Js=Hr+"Precision limit exceeded",ea=Hr+"crypto unavailable",ta="[object Decimal]",Ze=Math.floor,_e=Math.pow,_c=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Vc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ec=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,na=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,kt=1e7,ee=7,vc=9007199254740991,Fc=Yr.length-1,oi=Qr.length-1,_={toStringTag:ta};_.absoluteValue=_.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),H(r)};_.ceil=function(){return H(new this.constructor(this),this.e+1,2)};_.clampedTo=_.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($t+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new o(n)};_.comparedTo=_.cmp=function(r){var e,t,n,o,i=this,s=i.d,a=(r=new i.constructor(r)).d,c=i.s,u=r.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(i.e!==r.e)return i.e>r.e^c<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]^c<0?1:-1;return n===o?0:n>o^c<0?1:-1};_.cosine=_.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=Dc(n,aa(n,t)),n.precision=r,n.rounding=e,H(Ft==2||Ft==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};_.cubeRoot=_.cbrt=function(){var r,e,t,n,o,i,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(re=!1,i=l.s*_e(l.s*l,1/3),!i||Math.abs(i)==1/0?(t=ze(l.d),r=l.e,(i=(r-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=_e(t,1/3),r=Ze((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 d(t),n.s=l.s):n=new d(i.toString()),s=(r=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Pe(u.plus(l).times(a),u.plus(c),s+2,1),ze(a.d).slice(0,s)===(t=ze(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!o&&t=="4999"){if(!o&&(H(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")&&(H(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return re=!0,H(n,r,d.rounding,e)};_.decimalPlaces=_.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ze(this.e/ee))*ee,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};_.dividedBy=_.div=function(r){return Pe(this,new this.constructor(r))};_.dividedToIntegerBy=_.divToInt=function(r){var e=this,t=e.constructor;return H(Pe(e,new t(r),0,1,1),t.precision,t.rounding)};_.equals=_.eq=function(r){return this.cmp(r)===0};_.floor=function(){return H(new this.constructor(this),this.e+1,3)};_.greaterThan=_.gt=function(r){return this.cmp(r)>0};_.greaterThanOrEqualTo=_.gte=function(r){var e=this.cmp(r);return e==1||e===0};_.hyperbolicCosine=_.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/$r(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),i=Nn(s,1,i.times(e),new s(1),!0);for(var c,u=r,l=new s(8);u--;)c=i.times(i),i=a.minus(c.times(l.minus(c.times(l))));return H(i,s.precision=t,s.rounding=n,!0)};_.hyperbolicSine=_.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=Nn(i,2,o,o,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,o=o.times(1/$r(5,r)),o=Nn(i,2,o,o,!0);for(var s,a=new i(5),c=new i(16),u=new i(20);r--;)s=o.times(o),o=o.times(a.plus(s.times(c.times(s).plus(u))))}return i.precision=e,i.rounding=t,H(o,e,t,!0)};_.hyperbolicTangent=_.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,Pe(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};_.inverseCosine=_.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()?ht(t,o,i):new t(0):new t(NaN):e.isZero()?ht(t,o+4,i).times(.5):(t.precision=o+6,t.rounding=1,e=e.asin(),r=ht(t,o+4,i).times(.5),t.precision=o,t.rounding=i,r.minus(e))};_.inverseHyperbolicCosine=_.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,re=!1,t=t.times(t).minus(1).sqrt().plus(t),re=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};_.inverseHyperbolicSine=_.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,re=!1,t=t.times(t).plus(1).sqrt().plus(t),re=!0,n.precision=r,n.rounding=e,t.ln())};_.inverseHyperbolicTangent=_.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?H(new i(o),r,e,!0):(i.precision=t=n-o.e,o=Pe(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)};_.inverseSine=_.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=ht(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)))};_.inverseTangent=_.atan=function(){var r,e,t,n,o,i,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=oi)return s=ht(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=oi)return s=ht(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/ee+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(re=!1,e=Math.ceil(a/ee),n=1,c=u.times(u),s=new l(u),o=u;r!==-1;)if(o=o.times(c),i=s.minus(o.div(n+=2)),o=o.times(c),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)),re=!0,H(s,l.precision=d,l.rounding=m,!0)};_.isFinite=function(){return!!this.d};_.isInteger=_.isInt=function(){return!!this.d&&Ze(this.e/ee)>this.d.length-2};_.isNaN=function(){return!this.s};_.isNegative=_.isNeg=function(){return this.s<0};_.isPositive=_.isPos=function(){return this.s>0};_.isZero=function(){return!!this.d&&this.d[0]===0};_.lessThan=_.lt=function(r){return this.cmp(r)<0};_.lessThanOrEqualTo=_.lte=function(r){return this.cmp(r)<1};_.logarithm=_.log=function(r){var e,t,n,o,i,s,a,c,u=this,l=u.constructor,d=l.precision,m=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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(re=!1,a=d+p,s=Zt(u,a),n=e?jr(l,a+10):Zt(r,a),c=Pe(s,n,a,1),jn(c.d,o=d,m))do if(a+=10,s=Zt(u,a),n=e?jr(l,a+10):Zt(r,a),c=Pe(s,n,a,1),!i){+ze(c.d).slice(o+1,o+15)+1==1e14&&(c=H(c,d+1,0));break}while(jn(c.d,o+=10,m));return re=!0,H(c,d,m)};_.minus=_.sub=function(r){var e,t,n,o,i,s,a,c,u,l,d,m,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(u=p.d,m=r.d,a=y.precision,c=y.rounding,!u[0]||!m[0]){if(m[0])r.s=-r.s;else if(u[0])r=new y(p);else return new y(c===3?-0:0);return re?H(r,a,c):r}if(t=Ze(r.e/ee),l=Ze(p.e/ee),u=u.slice(),i=l-t,i){for(d=i<0,d?(e=u,i=-i,s=m.length):(e=m,t=l,s=u.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=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}i=0}for(d&&(e=u,u=m,m=e,r.s=-r.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>i;){if(u[--n]<m[n]){for(o=n;o&&u[--o]===0;)u[o]=kt-1;--u[o],u[n]+=kt}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=Zr(u,t),re?H(r,a,c):r):new y(c===3?-0:0)};_.modulo=_.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]?H(new n(t),n.precision,n.rounding):(re=!1,n.modulo==9?(e=Pe(t,r.abs(),0,3,1),e.s*=r.s):e=Pe(t,r,0,n.modulo,1),e=e.times(r),re=!0,t.minus(e))};_.naturalExponential=_.exp=function(){return ii(this)};_.naturalLogarithm=_.ln=function(){return Zt(this)};_.negated=_.neg=function(){var r=new this.constructor(this);return r.s=-r.s,H(r)};_.plus=_.add=function(r){var e,t,n,o,i,s,a,c,u,l,d=this,m=d.constructor;if(r=new m(r),!d.d||!r.d)return!d.s||!r.s?r=new m(NaN):d.d||(r=new m(r.d||d.s===r.s?d:NaN)),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,l=r.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(r=new m(d)),re?H(r,a,c):r;if(i=Ze(d.e/ee),n=Ze(r.e/ee),u=u.slice(),o=i-n,o){for(o<0?(t=u,o=-o,s=l.length):(t=l,n=i,s=u.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=u.length,o=l.length,s-o<0&&(o=s,t=l,l=u,u=t),e=0;o;)e=(u[--o]=u[o]+l[o]+e)/kt|0,u[o]%=kt;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=Zr(u,n),re?H(r,a,c):r};_.precision=_.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error($t+r);return t.d?(e=ra(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};_.round=function(){var r=this,e=r.constructor;return H(new e(r),r.e+1,e.rounding)};_.sine=_.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=qc(n,aa(n,t)),n.precision=r,n.rounding=e,H(Ft>2?t.neg():t,r,e,!0)):new n(NaN)};_.squareRoot=_.sqrt=function(){var r,e,t,n,o,i,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(re=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ze(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Ze((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(i=n,n=i.plus(Pe(s,i,t+2,1)).times(.5),ze(i.d).slice(0,t)===(e=ze(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(H(i,c+1,0),i.times(i).eq(s))){n=i;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(H(n,c+1,1),r=!n.times(n).eq(s));break}return re=!0,H(n,c,l.rounding,r)};_.tangent=_.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=Pe(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,H(Ft==2||Ft==4?t.neg():t,r,e,!0)):new n(NaN)};_.times=_.mul=function(r){var e,t,n,o,i,s,a,c,u,l=this,d=l.constructor,m=l.d,p=(r=new d(r)).d;if(r.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!r.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?r.s/0:r.s*0);for(t=Ze(l.e/ee)+Ze(r.e/ee),c=m.length,u=p.length,c<u&&(i=m,m=p,p=i,s=c,c=u,u=s),i=[],s=c+u,n=s;n--;)i.push(0);for(n=u;--n>=0;){for(e=0,o=c+n;o>n;)a=i[o]+p[n]*m[o-n-1]+e,i[o--]=a%kt|0,e=a/kt|0;i[o]=(i[o]+e)%kt|0}for(;!i[--s];)i.pop();return e?++t:i.shift(),r.d=i,r.e=Zr(i,t),re?H(r,d.precision,d.rounding):r};_.toBinary=function(r,e){return ai(this,2,r,e)};_.toDecimalPlaces=_.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(it(r,0,Jt),e===void 0?e=n.rounding:it(e,0,8),H(t,r+t.e+1,e))};_.toExponential=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=Ct(n,!0):(it(r,0,Jt),e===void 0?e=o.rounding:it(e,0,8),n=H(new o(n),r+1,e),t=Ct(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toFixed=function(r,e){var t,n,o=this,i=o.constructor;return r===void 0?t=Ct(o):(it(r,0,Jt),e===void 0?e=i.rounding:it(e,0,8),n=H(new i(o),r+o.e+1,e),t=Ct(n,!1,r+n.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};_.toFraction=function(r){var e,t,n,o,i,s,a,c,u,l,d,m,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),i=e.e=ra(y)-p.e-1,s=i%ee,e.d[0]=_e(10,s<0?ee+s:s),r==null)r=i>0?e:u;else{if(a=new f(r),!a.isInt()||a.lt(u))throw Error($t+a);r=a.gt(e)?i>0?e:u:a}for(re=!1,a=new f(ze(y)),l=f.precision,f.precision=i=y.length*ee*2;d=Pe(a,e,0,1,1),o=t.plus(d.times(n)),o.cmp(r)!=1;)t=n,n=o,o=u,u=c.plus(d.times(o)),c=o,o=e,e=a.minus(d.times(o)),a=o;return o=Pe(r.minus(t),n,0,1,1),c=c.plus(o.times(u)),t=t.plus(o.times(n)),c.s=u.s=p.s,m=Pe(u,n,i,1).minus(p).abs().cmp(Pe(c,t,i,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,re=!0,m};_.toHexadecimal=_.toHex=function(r,e){return ai(this,16,r,e)};_.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:it(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]?(re=!1,t=Pe(t,r,0,e,1).times(r),re=!0,H(t)):(r.s=t.s,t=r),t};_.toNumber=function(){return+this};_.toOctal=function(r,e){return ai(this,8,r,e)};_.toPower=_.pow=function(r){var e,t,n,o,i,s,a=this,c=a.constructor,u=+(r=new c(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new c(_e(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,i=c.rounding,r.eq(1))return H(a,n,i);if(e=Ze(r.e/ee),e>=r.d.length-1&&(t=u<0?-u:u)<=vc)return o=oa(c,a,t,n),r.s<0?new c(1).div(o):H(o,n,i);if(s=a.s,s<0){if(e<r.d.length-1)return new c(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=_e(+a,u),e=t==0||!isFinite(t)?Ze(u*(Math.log("0."+ze(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(re=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),o=ii(r.times(Zt(a,n+t)),n),o.d&&(o=H(o,n+5,1),jn(o.d,n,i)&&(e=n+10,o=H(ii(r.times(Zt(a,e+t)),e),e+5,1),+ze(o.d).slice(n+1,n+15)+1==1e14&&(o=H(o,n+1,0)))),o.s=s,re=!0,c.rounding=i,H(o,n,i))};_.toPrecision=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=Ct(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):(it(r,1,Jt),e===void 0?e=o.rounding:it(e,0,8),n=H(new o(n),r,e),t=Ct(n,r<=n.e||n.e<=o.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toSignificantDigits=_.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(it(r,1,Jt),e===void 0?e=n.rounding:it(e,0,8)),H(new n(t),r,e)};_.toString=function(){var r=this,e=r.constructor,t=Ct(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};_.truncated=_.trunc=function(){return H(new this.constructor(this),this.e+1,1)};_.valueOf=_.toJSON=function(){var r=this,e=r.constructor,t=Ct(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function ze(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+=Ht(t)),i+=n;s=r[e],n=s+"",t=ee-n.length,t&&(i+=Ht(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function it(r,e,t){if(r!==~~r||r<e||r>t)throw Error($t+r)}function jn(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=_e(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)==_e(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)==_e(10,e-3)-1,s}function zr(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]+=ni.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 Dc(r,e){var t,n,o;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),o=(1/$r(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),r.precision+=t,e=Nn(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 Pe=function(){function r(n,o,i){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*o+a,n[c]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function e(n,o,i,s){var a,c;if(i!=s)c=i>s?1:-1;else for(a=c=0;a<i;a++)if(n[a]!=o[a]){c=n[a]>o[a]?1:-1;break}return c}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,c){var u,l,d,m,p,y,f,b,g,h,A,k,T,I,S,B,C,x,L,G,F=n.constructor,Z=n.s==o.s?1:-1,$=n.d,W=o.d;if(!$||!$[0]||!W||!W[0])return new F(!n.s||!o.s||($?W&&$[0]==W[0]:!W)?NaN:$&&$[0]==0||!W?Z*0:Z/0);for(c?(p=1,l=n.e-o.e):(c=kt,p=ee,l=Ze(n.e/p)-Ze(o.e/p)),L=W.length,C=$.length,g=new F(Z),h=g.d=[],d=0;W[d]==($[d]||0);d++);if(W[d]>($[d]||0)&&l--,i==null?(I=i=F.precision,s=F.rounding):a?I=i+(n.e-o.e)+1:I=i,I<0)h.push(1),y=!0;else{if(I=I/p+2|0,d=0,L==1){for(m=0,W=W[0],I++;(d<C||m)&&I--;d++)S=m*c+($[d]||0),h[d]=S/W|0,m=S%W|0;y=m||d<C}else{for(m=c/(W[0]+1)|0,m>1&&(W=r(W,m,c),$=r($,m,c),L=W.length,C=$.length),B=L,A=$.slice(0,L),k=A.length;k<L;)A[k++]=0;G=W.slice(),G.unshift(0),x=W[0],W[1]>=c/2&&++x;do m=0,u=e(W,A,L,k),u<0?(T=A[0],L!=k&&(T=T*c+(A[1]||0)),m=T/x|0,m>1?(m>=c&&(m=c-1),f=r(W,m,c),b=f.length,k=A.length,u=e(f,A,b,k),u==1&&(m--,t(f,L<b?G:W,b,c))):(m==0&&(u=m=1),f=W.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,c),u==-1&&(k=A.length,u=e(W,A,L,k),u<1&&(m++,t(A,L<k?G:W,k,c))),k=A.length):u===0&&(m++,A=[0]),h[d++]=m,u&&A[0]?A[k++]=$[B]||0:(A=[$[B]],k=1);while((B++<C||A[0]!==void 0)&&I--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,$s=y;else{for(d=1,m=h[0];m>=10;m/=10)d++;g.e=d+l*p-1,H(g,a?i+g.e+1:i,s,y)}return g}}();function H(r,e,t,n){var o,i,s,a,c,u,l,d,m,p=r.constructor;e:if(e!=null){if(d=r.d,!d)return r;for(o=1,a=d[0];a>=10;a/=10)o++;if(i=e-o,i<0)i+=ee,s=e,l=d[m=0],c=l/_e(10,o-s-1)%10|0;else if(m=Math.ceil((i+1)/ee),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,o=1,i%=ee,s=i-ee+1}else break e;else{for(l=a=d[m],o=1;a>=10;a/=10)o++;i%=ee,s=i-ee+o,c=s<0?0:l/_e(10,o-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%_e(10,o-s-1)),u=t<4?(c||n)&&(t==0||t==(r.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(i>0?s>0?l/_e(10,o-s):0:d[m-1])%10&1||t==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=_e(10,(ee-e%ee)%ee),r.e=-e||0):d[0]=r.e=0,r;if(i==0?(d.length=m,a=1,m--):(d.length=m+1,a=_e(10,ee-i),d[m]=s>0?(l/_e(10,o-s)%_e(10,s)|0)*a:0),u)for(;;)if(m==0){for(i=1,s=d[0];s>=10;s/=10)i++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(r.e++,d[0]==kt&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=kt)break;d[m--]=0,a=1}for(i=d.length;d[--i]===0;)d.pop()}return re&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ct(r,e,t){if(!r.isFinite())return sa(r);var n,o=r.e,i=ze(r.d),s=i.length;return e?(t&&(n=t-s)>0?i=i.charAt(0)+"."+i.slice(1)+Ht(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(r.e<0?"e":"e+")+r.e):o<0?(i="0."+Ht(-o-1)+i,t&&(n=t-s)>0&&(i+=Ht(n))):o>=s?(i+=Ht(o+1-s),t&&(n=t-o-1)>0&&(i=i+"."+Ht(n))):((n=o+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),t&&(n=t-s)>0&&(o+1===s&&(i+="."),i+=Ht(n))),i}function Zr(r,e){var t=r[0];for(e*=ee;t>=10;t/=10)e++;return e}function jr(r,e,t){if(e>Fc)throw re=!0,t&&(r.precision=t),Error(Js);return H(new r(Yr),e,1,!0)}function ht(r,e,t){if(e>oi)throw Error(Js);return H(new r(Qr),e,t,!0)}function ra(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 Ht(r){for(var e="";r--;)e+="0";return e}function oa(r,e,t,n){var o,i=new r(1),s=Math.ceil(n/ee+4);for(re=!1;;){if(t%2&&(i=i.times(e),Hs(i.d,s)&&(o=!0)),t=Ze(t/2),t===0){t=i.d.length-1,o&&i.d[t]===0&&++i.d[t];break}e=e.times(e),Hs(e.d,s)}return re=!0,i}function js(r){return r.d[r.d.length-1]&1}function ia(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 ii(r,e){var t,n,o,i,s,a,c,u=0,l=0,d=0,m=r.constructor,p=m.rounding,y=m.precision;if(!r.d||!r.d[0]||r.e>17)return new m(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(re=!1,c=y):c=e,a=new m(.03125);r.e>-2;)r=r.times(a),d+=5;for(n=Math.log(_e(2,d))/Math.LN10*2+5|0,c+=n,t=i=s=new m(1),m.precision=c;;){if(i=H(i.times(r),c,1),t=t.times(++l),a=s.plus(Pe(i,t,c,1)),ze(a.d).slice(0,c)===ze(s.d).slice(0,c)){for(o=d;o--;)s=H(s.times(s),c,1);if(e==null)if(u<3&&jn(s.d,c-n,p,u))m.precision=c+=10,t=i=a=new m(1),l=0,u++;else return H(s,m.precision=y,p,re=!0);else return m.precision=y,s}s=a}}function Zt(r,e){var t,n,o,i,s,a,c,u,l,d,m,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?(re=!1,l=A):l=e,g.precision=l+=y,t=ze(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=ze(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 u=jr(g,l+2,A).times(i+""),f=Zt(new g(n+"."+t.slice(1)),l-y).plus(u),g.precision=A,e==null?H(f,A,h,re=!0):f;for(d=f,c=s=f=Pe(f.minus(1),f.plus(1),l,1),m=H(f.times(f),l,1),o=3;;){if(s=H(s.times(m),l,1),u=c.plus(Pe(s,new g(o),l,1)),ze(u.d).slice(0,l)===ze(c.d).slice(0,l))if(c=c.times(2),i!==0&&(c=c.plus(jr(g,l+2,A).times(i+""))),c=Pe(c,new g(p),l,1),e==null)if(jn(c.d,l-y,h,a))g.precision=l+=y,u=s=f=Pe(d.minus(1),d.plus(1),l,1),m=H(f.times(f),l,1),o=a=1;else return H(c,g.precision=A,h,re=!0);else return g.precision=A,c;c=u,o+=2}}function sa(r){return String(r.s*r.s/0)}function si(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),re&&(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 Wc(r,e){var t,n,o,i,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),na.test(e))return si(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Vc.test(e))t=16,e=e.toLowerCase();else if(_c.test(e))t=2;else if(Ec.test(e))t=8;else throw Error($t+e);for(i=e.search(/p/i),i>0?(c=+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=oa(n,new n(t),i,i*2)),u=zr(e,t,kt),l=u.length-1,i=l;u[i]===0;--i)u.pop();return i<0?new n(r.s*0):(r.e=Zr(u,l),r.d=u,re=!1,s&&(r=Pe(r,o,a*4)),c&&(r=r.times(Math.abs(c)<54?_e(2,c):Hn.pow(2,c))),re=!0,r)}function qc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Nn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/$r(5,t)),e=Nn(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 Nn(r,e,t,n,o){var i,s,a,c,u=1,l=r.precision,d=Math.ceil(l/ee);for(re=!1,c=t.times(t),a=new r(n);;){if(s=Pe(a.times(c),new r(e++*e++),l,1),a=o?n.plus(s):n.minus(s),n=Pe(s.times(c),new r(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(i=d;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,u++}return re=!0,s.d.length=d+1,s}function $r(r,e){for(var t=r;--e;)t*=r;return t}function aa(r,e){var t,n=e.s<0,o=ht(r,r.precision,1),i=o.times(.5);if(e=e.abs(),e.lte(i))return Ft=n?4:1,e;if(t=e.divToInt(o),t.isZero())Ft=n?3:2;else{if(e=e.minus(t.times(o)),e.lte(i))return Ft=js(t)?n?2:3:n?4:1,e;Ft=js(t)?n?1:4:n?3:2}return e.minus(o).abs()}function ai(r,e,t,n){var o,i,s,a,c,u,l,d,m,p=r.constructor,y=t!==void 0;if(y?(it(t,1,Jt),n===void 0?n=p.rounding:it(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=sa(r);else{for(l=Ct(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(".",""),m=new p(1),m.e=l.length-s,m.d=zr(Ct(m),10,o),m.e=m.d.length),d=zr(l,10,o),i=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=y?"0p+0":"0";else{if(s<0?i--:(r=new p(r),r.d=d,r.e=i,r=Pe(r,m,t,n,0,o),d=r.d,i=r.e,u=$s),s=d[t],a=o/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(r.s<0?8:7)),d.length=t,u)for(;++d[--t]>o-1;)d[t]=0,t||(++i,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=ni.charAt(d[s]);if(y){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=zr(l,o,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=ni.charAt(d[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>c)for(i-=c;i--;)l+="0";else i<c&&(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 Hs(r,e){if(r.length>e)return r.length=e,!0}function Uc(r){return new this(r).abs()}function Gc(r){return new this(r).acos()}function Xc(r){return new this(r).acosh()}function zc(r,e){return new this(r).plus(e)}function Yc(r){return new this(r).asin()}function Qc(r){return new this(r).asinh()}function jc(r){return new this(r).atan()}function Hc(r){return new this(r).atanh()}function Zc(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=ht(this,i,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?ht(this,n,o):new this(0),t.s=r.s):!r.d||e.isZero()?(t=ht(this,i,1).times(.5),t.s=r.s):e.s<0?(this.precision=i,this.rounding=1,t=this.atan(Pe(r,e,i,1)),e=ht(this,i,1),this.precision=n,this.rounding=o,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Pe(r,e,i,1)),t}function $c(r){return new this(r).cbrt()}function Jc(r){return H(r=new this(r),r.e+1,2)}function el(r,e,t){return new this(r).clamp(e,t)}function tl(r){if(!r||typeof r!="object")throw Error(Hr+"Object expected");var e,t,n,o=r.defaults===!0,i=["precision",1,Jt,"rounding",0,8,"toExpNeg",-On,0,"toExpPos",0,On,"maxE",0,On,"minE",-On,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],o&&(this[t]=ri[t]),(n=r[t])!==void 0)if(Ze(n)===n&&n>=i[e+1]&&n<=i[e+2])this[t]=n;else throw Error($t+t+": "+n);if(t="crypto",o&&(this[t]=ri[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(ea);else this[t]=!1;else throw Error($t+t+": "+n);return this}function nl(r){return new this(r).cos()}function rl(r){return new this(r).cosh()}function ua(r){var e,t,n;function o(i){var s,a,c,u=this;if(!(u instanceof o))return new o(i);if(u.constructor=o,Zs(i)){u.s=i.s,re?!i.d||i.e>o.maxE?(u.e=NaN,u.d=null):i.e<o.minE?(u.e=0,u.d=[0]):(u.e=i.e,u.d=i.d.slice()):(u.e=i.e,u.d=i.d?i.d.slice():i.d);return}if(c=typeof i,c==="number"){if(i===0){u.s=1/i<0?-1:1,u.e=0,u.d=[0];return}if(i<0?(i=-i,u.s=-1):u.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;re?s>o.maxE?(u.e=NaN,u.d=null):s<o.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[i]):(u.e=s,u.d=[i]);return}else if(i*0!==0){i||(u.s=NaN),u.e=NaN,u.d=null;return}return si(u,i.toString())}else if(c!=="string")throw Error($t+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),u.s=-1):(a===43&&(i=i.slice(1)),u.s=1),na.test(i)?si(u,i):Wc(u,i)}if(o.prototype=_,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=tl,o.clone=ua,o.isDecimal=Zs,o.abs=Uc,o.acos=Gc,o.acosh=Xc,o.add=zc,o.asin=Yc,o.asinh=Qc,o.atan=jc,o.atanh=Hc,o.atan2=Zc,o.cbrt=$c,o.ceil=Jc,o.clamp=el,o.cos=nl,o.cosh=rl,o.div=ol,o.exp=il,o.floor=sl,o.hypot=al,o.ln=ul,o.log=cl,o.log10=ml,o.log2=ll,o.max=dl,o.min=pl,o.mod=fl,o.mul=yl,o.pow=bl,o.random=gl,o.round=wl,o.sign=Al,o.sin=Pl,o.sinh=hl,o.sqrt=kl,o.sub=Tl,o.sum=Il,o.tan=xl,o.tanh=Bl,o.trunc=Sl,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 ol(r,e){return new this(r).div(e)}function il(r){return new this(r).exp()}function sl(r){return H(r=new this(r),r.e+1,3)}function al(){var r,e,t=new this(0);for(re=!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 re=!0,new this(1/0);t=e}return re=!0,t.sqrt()}function Zs(r){return r instanceof Hn||r&&r.toStringTag===ta||!1}function ul(r){return new this(r).ln()}function cl(r,e){return new this(r).log(e)}function ll(r){return new this(r).log(2)}function ml(r){return new this(r).log(10)}function dl(){return ia(this,arguments,"lt")}function pl(){return ia(this,arguments,"gt")}function fl(r,e){return new this(r).mod(e)}function yl(r,e){return new this(r).mul(e)}function bl(r,e){return new this(r).pow(e)}function gl(r){var e,t,n,o,i=0,s=new this(1),a=[];if(r===void 0?r=this.precision:it(r,1,Jt),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(ea);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],r%=ee,n&&r&&(o=_e(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 wl(r){return H(r=new this(r),r.e+1,this.rounding)}function Al(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Pl(r){return new this(r).sin()}function hl(r){return new this(r).sinh()}function kl(r){return new this(r).sqrt()}function Tl(r,e){return new this(r).sub(e)}function Il(){var r=0,e=arguments,t=new this(e[r]);for(re=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return re=!0,H(t,this.precision,this.rounding)}function xl(r){return new this(r).tan()}function Bl(r){return new this(r).tanh()}function Sl(r){return H(r=new this(r),r.e+1,1)}_[Symbol.for("nodejs.util.inspect.custom")]=_.toString;_[Symbol.toStringTag]="Decimal";var Hn=_.constructor=ua(ri);Yr=new Hn(Yr);Qr=new Hn(Qr);var V=Hn;import{PublicKey as di}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as ca,SYSVAR_RENT_PUBKEY as Cl}from"@solana/web3.js";function w({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var ui=[w({pubkey:Kl,isWritable:!1}),w({pubkey:ca.programId,isWritable:!1}),w({pubkey:Cl,isWritable:!1})];function ci({publicKey:r,transformSol:e}){let t=li(r.toString());if(t instanceof xe)return e&&t.equals(Ve)?J:t;if(e&&t.toString()===Ve.toBase58())return J;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function li(r){try{return new xe(r)}catch{return r}}var Jr=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),eo=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new xe("SysvarRent111111111111111111111111111111111"),mi=new xe("SysvarC1ock11111111111111111111111111111111"),Mn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),to=new xe("Sysvar1nstructions1111111111111111111111111"),no=ca.programId,Rf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Lf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Of=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Nf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Mf=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_f=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Vf=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ef=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),vf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ff=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Df=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new xe("So11111111111111111111111111111111111111112"),Ve=xe.default;function ct(r){return ci({publicKey:r,transformSol:!0})}import{PublicKey as Rl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as la}from"@solana/spl-token";var Rt={chainId:101,address:Rl.default.toBase58(),programId:la.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ee={chainId:101,address:"So11111111111111111111111111111111111111112",programId:la.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 pi=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:s=!1}){if(e===Ve.toBase58()||e instanceof di&&Ve.equals(e)){this.decimals=Ee.decimals,this.symbol=Ee.symbol,this.name=Ee.name,this.mint=new di(Ee.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?di.default:ci({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=pi;ye.WSOL=new pi(v(R({},Ee),{mint:Ee.address}));import oo from"big.js";import Nl from"bn.js";import Ml from"decimal.js-light";import Ll from"toformat";var Ol=Ll,Zn=Ol;var ro=ce("module/fraction"),fi=Zn(oo),$n=Zn(Ml),_l={[0]:$n.ROUND_DOWN,[1]:$n.ROUND_HALF_UP,[2]:$n.ROUND_UP},Vl={[0]:oo.roundDown,[1]:oo.roundHalfUp,[2]:oo.roundUp},oe=class{constructor(e,t=new Nl(1)){this.numerator=z(e),this.denominator=z(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new oe(this.denominator,this.numerator)}add(e){let t=e instanceof oe?e:new oe(z(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.add(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof oe?e:new oe(z(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.sub(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof oe?e:new oe(z(e));return new oe(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof oe?e:new oe(z(e));return new oe(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||ro.logWithError(`${e} is not an integer.`),e<=0&&ro.logWithError(`${e} is not positive.`),$n.set({precision:e+1,rounding:_l[n]});let o=new $n(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)||ro.logWithError(`${e} is not an integer.`),e<0&&ro.logWithError(`${e} is negative.`),fi.DP=e,fi.RM=Vl[n]||1,new fi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var El=ce("Raydium_price"),We=class extends oe{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:s}=t;super(i,s);this.baseToken=n,this.quoteToken=o,this.scalar=new oe(bi(n.decimals),bi(o.decimals))}get raw(){return new oe(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new We({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&El.logWithError("mul token not equals");let n=super.mul(t);return new We({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 gi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Jn=gi;Jn.SOL=new gi(Rt);function yy(r,e){return r instanceof ye&&e instanceof ye?r.equals(e):r instanceof ye||e instanceof ye?!1:r===e}import vl from"bn.js";var ma=new oe(new vl(100)),ve=class extends oe{toSignificant(e=5,t,n){return this.mul(ma).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ma).toFixed(e,t,n)}};function Ce(r){if(r instanceof ve)return new oe(r.numerator,r.denominator);if(r instanceof We)return r.adjusted;if(r instanceof fe)try{return Ce(r.toExact())}catch{return new oe(Fe)}if(r instanceof oe)return r;let e=String(r),t=dn(e);return new oe(t.numerator,t.denominator)}function Ty(r){var n;if(r instanceof ve)return{fr:new oe(r.numerator,r.denominator)};if(r instanceof We)return{fr:r.adjusted};if(r instanceof fe)return{fr:Ce(r.toExact()),decimals:r.token.decimals};if(r instanceof oe)return{fr:r};let e=String(r),t=dn(e);return{fr:new oe(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Iy(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Fe)}function Fl(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gt(Fe)}function xy(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.lte(Fe)}function By(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gte(Fe)}function Dl(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.eq(Fe)}function Sy(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);try{return t.div(n)}catch{return t}}function Ky(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.sub(n)}function Cy(r){return r==null?!1:!Dl(r,0)}function Ry(r,e){return Fl(e,r)?e:r}function wi(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.mul(n)}function Ly(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.add(n)}var yi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(yi||{}),Fe=new Te(0),ya=new Te(1),Gy=new Te(2),Xy=new Te(3),zy=new Te(5),pn=new Te(10),Yy=new Te(100),Qy=new Te(1e3),jy=new Te(1e4),da=9007199254740991;function z(r){let e=ce("Raydium_parseBigNumberish");if(r instanceof Te)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Te(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=da||r<=-da)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Te(String(r))):typeof r=="bigint"?new Te(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Te(0))}function bi(r){return pn.pow(z(r))}function dn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Te)return{numerator:r.toString(),denominator:"1"};if(r instanceof oe)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",o=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],i="1"+"0".repeat(o.length),s=t+(n==="0"?"":n)+o||"0";return{denominator:i,numerator:s,sign:t,int:n,dec:o}}function io(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function Wl(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function ql(r,e=0){return r instanceof Te?r:new Te(Wl(ba(r).mul(pn.pow(new Te(String(e))))))}function ba(r){if(r instanceof ve)return new oe(r.numerator,r.denominator);if(r instanceof We)return r.adjusted;if(r instanceof fe)try{return ba(r.toExact())}catch{return new oe(Fe)}if(r instanceof oe)return r;let e=String(r),t=dn(e);return new oe(t.numerator,t.denominator)}function Hy(r,e){let{numerator:t,denominator:n}=dn(r);return new ve(new Te(t),new Te(n).mul(e!=null&&e.alreadyDecimaled?new Te(100):new Te(1)))}function Zy(r){let{token:e,numberPrice:t,decimalDone:n}=r,o=new ye({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:i,denominator:s}=dn(t),a=n?new Te(i).mul(pn.pow(new Te(e.decimals))):i,c=new Te(s).mul(pn.pow(new Te(o.decimals)));return new We({baseToken:o,denominator:c.toString(),quoteToken:new ye(v(R({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function pa(r){let e=new Jn({decimals:6,symbol:"usd",name:"usd"}),t=ql(wi(r,10**e.decimals));return new fn(e,t)}function $y(r,e){return pa(!e||!r?0:wi(r,e))}function Ul(r){if(r==null)return;let{numerator:e,denominator:t}=dn(r.toString());return new oe(e,t)}function Gl(r){return r instanceof V}function fa(r){return Gl(r)?Ul(r):Array.isArray(r)?r.map(e=>fa(e)):Ai(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fa(t)])):r}var zl=ce("Raydium_amount"),so=Zn(Xl);function ga(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")):zl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends oe{constructor(t,n,o=!0,i){let s=new en(0),a=pn.pow(new en(t.decimals));if(o)s=z(n);else{let c=new en(0),u=new en(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=ga(n.toString(),t.decimals);c=z(l),u=z(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(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 so.DP=this.token.decimals,new so(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},fn=class extends oe{constructor(t,n,o=!0,i){let s=new en(0),a=pn.pow(new en(t.decimals));if(o)s=z(n);else{let c=new en(0),u=new en(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=ga(n.toString(),t.decimals);c=z(l),u=z(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(i||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new fn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new fn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.currency.decimals,n,o=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return so.DP=this.currency.decimals,new so(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function wa(r){new Promise(e=>setTimeout(e,r))}function kb(){return new Date().getTime()}function Ai(r){return typeof r=="object"&&r!==null&&![ye,fe,Yl,oe,Ql,We,ve].some(e=>typeof e=="object"&&r instanceof e)}function Ie(r){return typeof r=="string"?li(r):Array.isArray(r)?r.map(e=>Ie(e)):Ai(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ie(t)])):r}import{PublicKey as nr,sendAndConfirmTransaction as rr,Transaction as or,TransactionMessage as ir,VersionedTransaction as sr}from"@solana/web3.js";import om from"axios";var yn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(yn||{}),E={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Pa,ComputeBudgetProgram as Aa,Transaction as uo,TransactionMessage as jl,Keypair as ha,VersionedTransaction as ka}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hl}from"@solana/spl-token";var Dt=ce("Raydium_txUtil"),Ta=1644;function co(r){let e=[],t=[];return r.microLamports&&(e.push(Aa.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(Aa.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function _n(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 lo(r,e){r.length<1&&Dt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Dt.logWithError(`no signers provided:, ${e.toString()}`);let t=new uo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ta}catch{return!1}}async function Ia(r,e,t,n=!0){let o=new Pa("RaydiumSimuLateTransaction11111111111111111"),i=[],s=new uo;s.feePayer=o;for(let u of e)lo([...s.instructions,u],[o])||(i.push(s),s=new uo,s.feePayer=o),s.add(u);s.instructions.length>0&&i.push(s);let a=[];try{if(a=await Zl(r,i,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&Dt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(Dt.debug("simulate result:",u),u.logs){let l=u.logs.filter(d=>d&&d.includes(t));Dt.debug("filteredLog:",c),l.length||Dt.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function xa(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Dt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Wt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Dt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ae(r,e){let[t,n]=Pa.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Zl(r,e,t){let n=[];if(t){let o=await r.getLatestBlockhash(),i=[];for(let u of e){u.recentBlockhash=o.blockhash,u.lastValidBlockHeight=o.lastValidBlockHeight;let d=u._compile().serialize(),p=u._serialize(d).toString("base64");i.push(p)}let s=i.map(u=>{let l=r._buildArgs([u],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],c=20;for(let u=0;u<Math.ceil(s.length/c);u++)a.push(s.slice(u*c,(u+1)*c));n=await(await Promise.all(a.map(async u=>(await r._rpcBatchRequest(u)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async o=>await(await r.simulateTransaction(o)).value))}catch(o){o instanceof Error&&Dt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:o.message})}return n}function er({instructions:r,payer:e,signers:t}){return lo(r,[e,...t])}function tr({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ha.generate().publicKey.toString()}){let i=new jl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ka(i).serialize()).toString("base64").length<Ta}catch{return!1}}var ao={time:0,data:void 0};async function Mb(r){if(!ao.data||(Date.now()-ao.time)/1e3>30){let e=await r.getEpochInfo();return ao={time:Date.now(),data:e},e}else return ao.data}var $l=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function bn(r){let e=[];return r.forEach(t=>{t instanceof uo&&(t.recentBlockhash||(t.recentBlockhash=Hl.toBase58()),t.feePayer||(t.feePayer=ha.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof ka&&(n=$l(n));let o=n.toString("base64");e.push(o)}),console.log("simulate tx string:",e),e}import{PublicKey as Ka,AddressLookupTableAccount as mo}from"@solana/web3.js";import{PublicKey as Ba}from"@solana/web3.js";import{MINT_SIZE as Jl,TOKEN_PROGRAM_ID as em,getTransferFeeConfig as tm,unpackMint as nm}from"@solana/spl-token";var Pi=ce("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=R({batchRequest:!1},t),s=hi(e,i),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=r._buildArgs([d.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=hi(c,10);a=(await(await Promise.all(u.map(async d=>await r._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Pi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:y,lamports:f,owner:b,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&Pi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new Ba(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>r.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&Pi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function qe(r,e,t){let n=await Tt(r,e.map(o=>o.pubkey),t);return e.map((o,i)=>v(R({},o),{accountInfo:n[i]}))}var rm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(rm||{}),Ub=1;async function Sa({connection:r,mints:e,config:t}){var i,s,a;if(e.length===0)return{};let n=await qe(r,e.map(c=>({pubkey:ct(c)})),t),o={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Jl){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=nm(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);o[c.pubkey.toString()]=v(R({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||em,feeConfig:(a=tm(u))!=null?a:void 0})}return o[Ba.default.toBase58()]=o[J.toBase58()],o}async function ki({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Ka(o))),n={};for(let o=0;o<e.length;o++){let i=t[o],s=e[o];if(!i)continue;let a=new mo({key:s,state:mo.deserialize(i.data)});n[s.toString()]=a,po[s.toString()]=a}return n}var po={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new mo({key:new Ka("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:mo.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 fo=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 om.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}=co(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!==nr.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(R({},t||{})):this.build(t)}build(e){let t=new or;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:o,skipPreflight:i=!0}=n||{},s=o!=null?o:await _n(this.connection,this.blockhashCommitment);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),bn([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await rr(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:i}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:i}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(u=>u.transaction.instructions.length>0),s=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],c=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{},y=m!=null?m:await _n(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let h=await rr(this.connection,g,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await rr(this.connection,b,a[g].find(h=>h.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((h,A)=>(h.recentBlockhash=y,a[A].length&&h.sign(...a[A]),h));bn(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],k=async()=>{if(!g[h])return;let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:T,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(T,I=>{let S=A.findIndex(B=>B.txId===T);S>-1&&(A[S].status=I.err?"error":"success"),d==null||d([...A]),I.err||k()},"processed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:p});h.push(k)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o}=m,i=Be(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=R(R({},this.cluster==="devnet"?{}:po),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new nr(p));let u=await ki({connection:this.connection,address:c});for(let[p,y]of Object.entries(u))s[p]=y;let l=new ir({payerKey:this.feePayer,recentBlockhash:o?nr.default.toBase58():await _n(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),d=new sr(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(d.message.recentBlockhash=y),bn([d]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))||d.sign([this.owner.signer]);let g=await this.connection.sendTransaction(d,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:g},"confirmed"),{txId:g,signedTx:d}}if(this.signAllTransactions){let g=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(u=>u.builder.instructions.length>0),s=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],c=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var y;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&s.forEach(f=>f.message.recentBlockhash=m),bn(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(s.forEach((g,h)=>{a[h].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),l){let g=[];for(let h of s){let A=await this.connection.sendTransaction(h,{skipPreflight:p}),{lastValidBlockHeight:k,blockhash:T}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:T,lastValidBlockHeight:k,signature:A},"confirmed"),g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let h=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],h=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push({txId:A,status:"sent",signedTx:f[b]}),d==null||d([...g]),b++,this.connection.onSignature(A,k=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=k.err?"error":"success"),d==null||d([...g]),k.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=Be(u,["computeBudgetConfig"]),o=t?co(t):{instructions:[],instructionTypes:[]},i=this.signers.reduce((l,d)=>v(R({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],m=t?[...o.instructions,...d]:d,y=[...new Set(d.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new nr(f));if(c.length<12&&er({instructions:m,payer:this.feePayer,signers:y})||er({instructions:d,payer:this.feePayer,signers:y}))c.push(l);else{if(c.length===0)throw Error("item ins too big");er({instructions:t?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:y})?s.push(new or().add(...o.instructions,...c)):s.push(new or().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>i[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(m=>m.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(m=>i[m]).filter(m=>m!==void 0);er({instructions:t?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(m=>m.publicKey)})?s.push(new or().add(...o.instructions,...c)):s.push(new or().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await _n(this.connection,this.blockhashCommitment);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),bn(s),(b=this.owner)!=null&&b.isKeyPair){if(d){let g=[];for(let h of s){let A=await rr(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 Promise.all(s.map(async(g,h)=>await rr(this.connection,g,a[h].find(A=>A.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(d){let h=0,A=[],k=async()=>{if(!g[h])return;let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(T,I=>{let S=A.findIndex(B=>B.txId===T);S>-1&&(A[S].status=I.err?"error":"success"),m==null||m([...A]),I.err||k()},"processed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let h=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});h.push(k)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:o=[]}=b,i=Be(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=R(R({},this.cluster==="devnet"?{}:po),n),a=Array.from(new Set([...this.lookupTableAddress,...o])),c=[];for(let g of a)s[g]===void 0&&c.push(new nr(g));let u=await ki({connection:this.connection,address:c});for(let[g,h]of Object.entries(u))s[g]=h;let l=t?co(t):{instructions:[],instructionTypes:[]},d=await _n(this.connection,this.blockhashCommitment),m=this.signers.reduce((g,h)=>v(R({},g),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let h=[...f,g],A=t?[...l.instructions,...h]:h;if(f.length<12&&tr({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||tr({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let k={};for(let T of[...new Set(a)])s[T]!==void 0&&(k[T]=s[T]);if(t&&tr({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let T=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new sr(T))}else{let T=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new sr(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>m[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>m[A]).filter(A=>A!==void 0);if(t&&tr({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let A=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new sr(A))}else{let A=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new sr(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:h,onTxUpdate:A,recentBlockHash:k,skipPreflight:T=!0}=g||{};if(p.map(async(S,B)=>{y[B].length&&S.sign(y[B]),k&&(S.message.recentBlockhash=k)}),bn(p),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:S,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((C,x)=>{y[x].find(L=>L.publicKey.equals(this.owner.publicKey))||C.sign([this.owner.signer])}),h){let C=[];for(let x of p){let L=await this.connection.sendTransaction(x,{skipPreflight:T}),{lastValidBlockHeight:G,blockhash:F}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:F,lastValidBlockHeight:G,signature:L},"confirmed"),C.push(L)}return{txIds:C,signedTxs:p}}return{txIds:await Promise.all(p.map(async C=>{let x=await this.connection.sendTransaction(C,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:S,signature:x},"confirmed"),x})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(h){let B=0,C=[],x=async()=>{if(!S[B])return;let L=await this.connection.sendTransaction(S[B],{skipPreflight:T});C.push({txId:L,status:"sent",signedTx:S[B]}),A==null||A([...C]),B++,this.connection.onSignature(L,G=>{let F=C.findIndex(Z=>Z.txId===L);F>-1&&(C[F].status=G.err?"error":"success"),A==null||A([...C]),G.err||x()},"processed"),this.connection.getSignatureStatus(L)};return x(),{txIds:[],signedTxs:S}}else{let B=[];for(let C=0;C<S.length;C+=1){let x=await this.connection.sendTransaction(S[C],{skipPreflight:T});B.push(x)}return{txIds:B,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}};var It=class{constructor(e){this._owner=e}get publicKey(){return It.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return It.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return It.isKeyPair(this._owner)}get isPublicKey(){return It.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!It.isKeyPair(e)}};function hi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function ag(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function ug(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function cg(r){return[...new Set(r)]}var Ca=r=>typeof r=="number",Ra=r=>r?new Date(r):new Date,im=r=>Ra(r).getTime();function La(r,e,t){let n=Ca(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Oa(r,e,t){let n=Ca(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function mg(r,e){let n=im(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return Ra(n)}import{PublicKey as de}from"@solana/web3.js";var Ti=new de("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ii=new de("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new de("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),sm=new de("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),am=new de("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),yo=new de("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ar=new de("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),um=new de("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Na=new de("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xi=new de("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),cm=new de("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fg=new de("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),lm=new de("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),mm=new de("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),dm=new de("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),pm=new de("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Bi=new de("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),fm=new de("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ym=new de("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bm=new de("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),gm=new de("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),wm=new de("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),ur={IDO_PROGRAM_ID_V1:lm,IDO_PROGRAM_ID_V2:mm,IDO_PROGRAM_ID_V3:dm,IDO_PROGRAM_ID_V4:pm},yg={AMM_V4:ar,AMM_STABLE:um,CLMM_PROGRAM_ID:xi,FARM_PROGRAM_ID_V3:Ti,FARM_PROGRAM_ID_V5:Ii,FARM_PROGRAM_ID_V6:Vn,OPEN_BOOK_PROGRAM:am,SERUM_PROGRAM_ID_V3:yo,UTIL1216:sm,Router:cm,CREATE_CPMM_POOL_PROGRAM:Bi,CREATE_CPMM_POOL_AUTH:fm,CREATE_CPMM_POOL_FEE_ACC:ym},bg={SERUM_MARKET:de.default,OPENBOOK_MARKET:new de("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:de.default,FarmV3:new de("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new de("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new de("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new de("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new de("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new de("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new de("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:bm,CREATE_CPMM_POOL_AUTH:gm,CREATE_CPMM_POOL_FEE_ACC:wm,FEE_DESTINATION_ID:new de("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Am}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pm}from"@solana/spl-token";function ge(r,e,t){return ae([r.toBuffer(),(t!=null?t:Pm).toBuffer(),e.toBuffer()],new Am("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ne from"bn.js";var Lt=1e4;function Tg(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Ne(o.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Lt){let a=new Ne(o.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=tn(r.mul(new Ne(Lt)),new Ne(Lt-o.transferFeeBasisPoints)),c=new Ne(o.maximumFee.toString()),u=a.sub(r).gt(c)?r.add(c):a,l=tn(u.mul(new Ne(o.transferFeeBasisPoints)),new Ne(Lt)),d=l.gt(i)?i:l;return{amount:u,fee:d,expirationTime:s}}else{let a=tn(r.mul(new Ne(o.transferFeeBasisPoints)),new Ne(Lt)),c=a.gt(i)?i:a;return{amount:r,fee:c,expirationTime:s}}}function he(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=v(R({},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 Ne(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===Lt){let c=new Ne(i.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=tn(r.mul(new Ne(Lt)),new Ne(Lt-i.transferFeeBasisPoints)),u=new Ne(i.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,d=tn(l.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=tn(r.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function Ot(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function tn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Ne(0))?t.add(new Ne(1)):t}var Si=(t=>(t.ALL="all",t.Strict="strict",t))(Si||{}),Ma=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(Ma||{});var Ye={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"},Ug=R({},Ye);var _a="ray_tab_hash",Ki="ray_req_hash",hm=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(_a);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(_a,r)),r},bo=async n=>{var o=n,{logCount:r=1e3,removeLastLog:e}=o,t=Be(o,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let i=JSON.parse(localStorage.getItem(Ki)||"[]").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(v(R({},t),{time:Date.now(),session:hm()}));try{localStorage.setItem(Ki,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 c=JSON.stringify(t.data).substring(0,100);i[0].data=c+(c.length>100?"...":"");try{localStorage.setItem(Ki,JSON.stringify(i)),s=!0}catch{s=!1}}return new Promise(c=>c())}return bo(v(R({},t),{logCount:r,removeLastLog:!0}))}};var En=ce("Raydium_Api"),Ci=new Map;async function cw(r,e,t=1e3){let n;for(;n==null;)try{En.debug(`Request ${r} through endlessRetry`),n=await e()}catch(o){En.error(`Request ${r} failed, retry after ${t} ms`,o),await wa(t)}return n}var go=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:o,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=o||1e3,this.api=Va.create({baseURL:this.urlConfigs.BASE_HOST||Ye.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:c,url:u}=s;return En.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),s},s=>(En.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:c,status:u}=s,{method:l,baseURL:d,url:m}=a;return n&&bo({status:u,url:`${d}${m}`,params:a.params,data:c,logCount:this.logCount}),En.debug(`${l==null?void 0:l.toUpperCase()} ${d}${m} ${u}`),c},s=>{let{config:a,response:c={}}=s,{status:u}=c,{method:l,baseURL:d,url:m}=a;return n&&bo({status:u,url:`${d}${m}`,params:a.params,data:s.message,logCount:this.logCount}),En.error(`${l.toUpperCase()} ${d}${m} ${u||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ye.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ye.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Va.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||Ye.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ye.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ye.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ye.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ye.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||Ye.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||Ye.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],o=t.filter(s=>Ci.has(s)?(n.push(Ci.get(s)),!1):!0),i=[];return o.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ye.POOL_KEY_BY_ID)+`?ids=${o.join(",")}`)).data.filter(Boolean),i.forEach(a=>{Ci.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,[c,u]=[t&&ct(t).toBase58(),n&&n!=="undefined"?ct(n).toBase58():""],[l,d]=u&&c>u?[u,c]:[c,u];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ye.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${d}&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||Ye.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ye.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ye.CHECK_AVAILABILITY)).data}};import{merge as Af}from"lodash";var wo="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ea="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Ui,TOKEN_PROGRAM_ID as sn,AccountLayout as Fn,TOKEN_2022_PROGRAM_ID as Ld}from"@solana/spl-token";import{PublicKey as xo,SystemProgram as Od}from"@solana/web3.js";var Ri=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Se=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ce(t)}createTxBuilder(e){return this.scope.checkOwner(),new fo({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(Ri(e))}logInfo(...e){this.logger.info(Ri(e))}logAndCreateError(...e){let t=Ri(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as xd,createCloseAccountInstruction as Bd,createTransferInstruction as Sd,TOKEN_PROGRAM_ID as vn}from"@solana/spl-token";import{PublicKey as Kd,SystemProgram as Cd}from"@solana/web3.js";import Rd from"bn.js";import{PublicKey as Ja,Keypair as hd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kd}from"@solana/spl-token";import Td from"bn.js";import{PublicKey as pd}from"@solana/web3.js";import Ga,{isBN as Xa}from"bn.js";import{bits as km,BitStructure as Tm,blob as Im,Blob as xm,cstr as Bm,f32 as Sm,f32be as Km,f64 as Cm,f64be as Rm,greedy as Lm,Layout as Om,ns64 as Nm,ns64be as Mm,nu64 as _m,nu64be as Vm,offset as Em,s16 as vm,s16be as Fm,s24 as Dm,s24be as Wm,s32 as qm,s32be as Um,s40 as Gm,s40be as Xm,s48 as zm,s48be as Ym,s8 as Qm,seq as jm,struct as kw,Structure as Hm,u16 as Zm,u16be as $m,u24 as Jm,u24be as ed,u32 as td,u32be as nd,u40 as rd,u40be as od,u48 as id,u48be as sd,u8 as ad,UInt as ud,union as cd,Union as ld,unionLayoutDiscriminator as md,utf8 as dd}from"@solana/buffer-layout";var cr=Om,va=Hm,Fa=ld,Tw=Tm,Li=ud,Da=xm,Iw=Lm,Ao=ad,Nt=Zm,xw=Jm,lr=td,Bw=rd,Sw=id,Wa=_m,Kw=$m,Cw=ed,Rw=nd,Lw=od,Ow=sd,Nw=Vm,Mw=Qm,_w=vm,Vw=Dm,Qe=qm,Ew=Gm,vw=zm,Fw=Nm,Dw=Fm,Ww=Wm,qw=Um,Uw=Xm,Gw=Ym,Xw=Mm,zw=Sm,Yw=Km,Qw=Cm,jw=Rm;var qa=jm,Ua=cd,Hw=md,be=Im,Zw=Bm,$w=dd,Oi=km,Ni=Em;var gn=class extends cr{constructor(t,n,o){super(t,o);this.blob=be(t),this.signed=n}decode(t,n=0){let o=new Ga(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 Ga(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Po=class extends cr{constructor(t){super(8,t);this._lower=Oi(lr(),!1),this._upper=Oi(lr(),!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 R(R({},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 Li(1,r)}function $e(r){return new Li(4,r)}function P(r){return new gn(8,!1,r)}function Q(r){return new gn(16,!1,r)}function za(r){return new gn(1,!0,r)}function ho(r){return new gn(8,!0,r)}function Ya(r){return new gn(16,!0,r)}var qt=class extends cr{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 qt(be(32),e=>new pd(e),e=>e.toBuffer(),r)}var Mi=class extends cr{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=Ao()}encode(t,n,o=0){return t==null?this.discriminator.encode(0,n,o):(this.discriminator.encode(1,n,o),this.layout.encode(t,n,o+1)+1)}decode(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return null;if(o===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return 1;if(o===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function rA(r,e){return new Mi(r,e)}function je(r){return new qt(Ao(),fd,yd,r)}function fd(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function yd(r){return r?1:0}function oA(r,e){let t=lr("length"),n=M([t,U(r,Ni(t,-t.span),"values")]);return new qt(n,({values:o})=>o,o=>({values:o}),e)}function iA(r,e,t){let n=M([P("tag"),e.replicate("data")]);function o({tag:i,data:s}){if(!i.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+i.toString("hex"));return s}return new qt(n,o,i=>({tag:r,data:i}),t)}function bd(r){let e=lr("length"),t=M([e,be(Ni(e,-e.span),"data")]);return new qt(t,({data:n})=>n,n=>({data:n}),r)}function sA(r){return new qt(bd(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function aA(r,e){let t=Ua(Ao(),e);return r.forEach((n,o)=>t.addVariant(o,n,n.property)),t}function uA(r,e,t){let n=M([U(r,e,"values")]);return new qt(n,({values:o})=>o,o=>({values:o}),t)}var _i=class extends va{decode(e,t){return super.decode(e,t)}};function M(r,e,t){return new _i(r,e,t)}var Vi=class extends Fa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(o=>o.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function cA(r,e,t){return new Vi(r,e,t)}var Ei=class extends Da{decode(e,t){let n=super.decode(e,t);if(!n.every(o=>o===0))throw new Error("nonzero padding bytes");return n}};function lA(r){return new Ei(r)}function U(r,e,t){let n,o=typeof e=="number"?e:Xa(e)?e.toNumber():new Proxy(e,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=Xa(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 qa(r,o,t)}var nn=M([K("mint"),K("owner"),P("amount"),$e("delegateOption"),K("delegate"),D("state"),$e("isNativeOption"),P("isNative"),P("delegatedAmount"),$e("closeAuthorityOption"),K("closeAuthority")]);function gd(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function vi(r,...e){if(!gd(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 Fi(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 Qa(r,e){vi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var To=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),xt=(r,e)=>r<<32-e|r>>>e;var gA=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function wd(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=wd(r)),vi(r),r}var ko=class{clone(){return this._cloneInto()}},wA={}.toString;function ja(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 Ad(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),c=n?4:0,u=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+u,a,n)}var Ha=(r,e,t)=>r&e^~r&t,Za=(r,e,t)=>r&e^r&t^e&t,Io=class extends ko{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=To(this.buffer)}update(e){Fi(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 c=To(e);for(;o<=i-s;s+=o)this.process(c,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){Fi(this),Qa(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 d=s;d<o;d++)t[d]=0;Ad(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=To(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],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 Pd=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]),rn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),on=new Uint32Array(64),Wi=class extends Io{constructor(){super(64,32,8,!1),this.A=rn[0]|0,this.B=rn[1]|0,this.C=rn[2]|0,this.D=rn[3]|0,this.E=rn[4]|0,this.F=rn[5]|0,this.G=rn[6]|0,this.H=rn[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:a,H:c}=this;return[e,t,n,o,i,s,a,c]}set(e,t,n,o,i,s,a,c){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=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)on[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=on[d-15],p=on[d-2],y=xt(m,7)^xt(m,18)^m>>>3,f=xt(p,17)^xt(p,19)^p>>>10;on[d]=f+on[d-7]+y+on[d-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=xt(a,6)^xt(a,11)^xt(a,25),p=l+m+Ha(a,c,u)+Pd[d]+on[d]|0,f=(xt(n,2)^xt(n,13)^xt(n,22))+Za(n,o,i)|0;l=u,u=c,c=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,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,o,i,s,a,c,u,l)}roundClean(){on.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var $a=ja(()=>new Wi);var _A=ce("Raydium_Util");function eu({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],o=[];for(let{pubkey:i,account:s}of t.value){let a=nn.decode(s.data),{mint:c,amount:u}=a;n.push({publicKey:i,mint:c,amount:u,isAssociated:ge(r,c,s.owner).publicKey.equals(i),isNative:!1,programId:s.owner}),o.push({pubkey:i,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Ja.default,amount:new Td(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:o}}function Je({fromPublicKey:r,programId:e=kd}){let t=hd.generate().publicKey.toBase58().slice(0,32);return{publicKey:Id(r,t,e),seed:t}}function Id(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),o=$a(n);return new Ja(o)}function qi(r){let{mint:e,tokenAccount:t,owner:n,programId:o=vn}=r;return xd(t,e,n,o)}function Mt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:i=vn}=r;return Bd(e,t,o,n,i)}async function Ut(r){let{connection:e,amount:t,commitment:n,payer:o,owner:i,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(nn.span,n),c=z(t).add(new Rd(a)),u=Je({fromPublicKey:o,programId:vn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Cd.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:nn.span,programId:vn}),qi({mint:new Kd(Ee.address),tokenAccount:u.publicKey,owner:i,programId:vn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[Mt({tokenAccount:u.publicKey,payer:o,owner:i})]}}function mr({source:r,destination:e,owner:t,amount:n,multiSigners:o=[],tokenProgram:i=vn}){return Sd(r,e,t,BigInt(String(n)),o,i)}var dr=class extends Se{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 ge(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=R(R({},{}),t),[i,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:sn},o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Ld},o.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=eu({owner:this.scope.ownerPubKey,solAccountResp:i,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,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:c,tokenAccountRawInfos:u}}async getCreatedTokenAccount({mint:t,programId:n=sn,associatedOnly:o=!0}){await this.fetchWalletTokenAccounts();let i=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,c)=>a.amount.lt(c.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of i){let{publicKey:c}=a;if(c&&(!o||o&&s.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:o,associatedOnly:i,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1}=t,l=new xo(t.tokenProgram||sn),d=this.getAssociatedTokenAccount(n,new xo(l)),m=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!i||h.pubkey.equals(d))).sort((h,A)=>h.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(o===void 0||m.length>0)return m.length>0?{account:m[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let h=Ui(s,d,s,n,l);if(u){let A=await this.scope.connection.getAccountInfo(d);if(A===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&Fn.decode(A.data).mint.equals(n)&&Fn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${d.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(E.CreateATA);if(n.equals(J)&&o.amount){let A=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:o.payer||this.scope.ownerPubKey,amount:(f=o.amount)!=null?f:0,skipCloseAccount:c});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(mr({source:A.addresses.newAccount,destination:d,owner:this.scope.ownerPubKey,amount:o.amount,tokenProgram:sn})),p.instructionTypes.push(E.TransferAmount))}return c||(p.endInstructions.push(Mt({owner:s,payer:o.payer||s,tokenAccount:d,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:d,instructionParams:p}}else{let h=Je({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(Fn.span),k=Od.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:Fn.span,programId:l});return p.instructions.push(k,qi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),c||(p.endInstructions.push(Mt({owner:s,payer:o.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=sn,autoUnwrapWSOLToSOL:o}){var c;await this.fetchWalletTokenAccounts();let i=(c=this.scope.account.tokenAccounts.find(({mint:u})=>(u==null?void 0:u.toBase58())===t.toBase58()))==null?void 0:c.publicKey,s=this.scope.ownerPubKey,a={};if(!i){let u=this.getAssociatedTokenAccount(t,n),l=await Ui(s,u,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],i=u}return o&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Mt({owner:s,payer:s,tokenAccount:i,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:o,mint:i,programId:s=sn,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:d}=t,m=this.getAssociatedTokenAccount(i,s);if(new xo(J).equals(i)){let p=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:o,skipCloseAccount:l});return R({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!m.equals(a)&&!u){let p=[],y=Ui(this.scope.ownerPubKey,m,this.scope.ownerPubKey,i,s);if(d){let f=await this.scope.connection.getAccountInfo(m);if(f===null)p.push(y);else if(!(f.owner.equals(sn)&&Fn.decode(f.data).mint.equals(i)&&Fn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${m.toString()}`)}else p.push(y);return{tokenAccount:m,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:o=sn,amount:i,useSOLBalance:s,handleTokenAccount:a}=t,c,u=this.createTxBuilder();if(n.equals(new xo(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:m}=l,p=Be(l,["tokenAccount"]);c=m,u.addInstruction(p)}else if(c=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:o}),!c&&a){let d=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:m}=d,p=Be(d,["tokenAccount"]);c=m,u.addInstruction(p)}return R({tokenAccount:c},u.AllTxData)}};import{createAssociatedTokenAccountInstruction as Jd}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as ep}from"@solana/web3.js";import{PublicKey as au}from"@solana/web3.js";var Gi=M([D("instruction")]),Xi=M([D("instruction")]),Nd=M([P("rewardState"),P("rewardOpenTime"),P("rewardEndTime"),P("rewardLastUpdateTime"),P("totalReward"),P("totalRewardEmissioned"),P("rewardClaimed"),P("rewardPerSecond"),Q("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),P("rewardType"),U(P(),15,"padding")]),Md=M([P("state"),P("nonce"),K("lpVault"),K("rewardVault"),K(),K(),P(),P(),P("totalReward"),Q("perShareReward"),P("lastSlot"),P("perSlotReward")]),_d=M([P("state"),P("nonce"),K("lpVault"),K("rewardVaultA"),P("totalRewardA"),Q("perShareRewardA"),P("perSlotRewardA"),D("option"),K("rewardVaultB"),be(7),P("totalRewardB"),Q("perShareRewardB"),P("perSlotRewardB"),P("lastSlot"),K()]),Vd=M([P(),P("state"),P("nonce"),P("validRewardTokenNum"),Q("rewardMultiplier"),P("rewardPeriodMax"),P("rewardPeriodMin"),P("rewardPeriodExtend"),K("lpMint"),K("lpVault"),U(Nd,5,"rewardInfos"),K("creator"),K(),U(P(),32,"padding")]),tu=new Proxy(Md,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return v(R({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(r,e,t)}}),nu=new Proxy(_d,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return v(R({},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)}}),pr=new Proxy(Vd,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return v(R({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var s;return v(R({},i),{rewardType:((s=Object.entries(an).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Ed=M([P("isSet"),P("rewardPerSecond"),P("rewardOpenTime"),P("rewardEndTime"),P("rewardType")]),zi=M([D("instruction"),P("nonce"),U(Ed,5,"rewardTimeInfo")]),Yi=M([D("instruction"),P("rewardReopenTime"),P("rewardEndTime"),P("rewardPerSecond")]),Qi=M([D("instruction"),P("isSet"),P("rewardPerSecond"),P("rewardOpenTime"),P("rewardEndTime"),P("rewardType")]),pP=M([P("state"),K("id"),K("owner"),P("deposited"),U(P(),1,"rewardDebts")]),fr=M([P("state"),K("id"),K("owner"),P("deposited"),U(Q(),1,"rewardDebts"),P(""),P("voteLockedBalance"),U(P(),15)]),fP=M([P("state"),K("id"),K("owner"),P("deposited"),U(P(),2,"rewardDebts")]),ru=M([P("state"),K("id"),K("owner"),P("deposited"),U(Q(),2,"rewardDebts"),U(P(),17)]),ou=M([P(),P("state"),K("id"),K("owner"),P("deposited"),U(Q(),5,"rewardDebts"),U(P(),16)]),rt=M([D("instruction"),P("amount")]),vd=M([K("mint"),K("grantAuthority"),P("baselineVoteWeightScaledFactor"),P("maxExtraLockupVoteWeightScaledFactor"),P("lockupSaturationSecs"),za("digitShift"),U(D(),7,"reserved1"),U(P(),7,"reserved2")]),iu=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),U(D(),32,"reserved1"),U(vd,4,"votingMints"),ho("timeOffset"),D("bump"),U(D(),7,"reserved2"),U(P(),11,"reserved3")]),Fd=M([ho("startTime"),ho("endTime"),D("kind"),U(D(),15,"reserved")]),Dd=M([U(Fd,1,"lockup"),P("amountDeposited_native"),P("amountInitiallyLockedNative"),je("isUsed"),je("allowClawback"),D("votingMintConfigIdx"),U(D(),29,"reserved")]),su=M([be(8),K("voterAuthority"),K("registrar"),U(Dd,32,"deposits"),D("voterBump"),D("voterWweightRecordBump"),U(D(),94,"reserved")]);var kP=ce("Raydium_farm_config"),uu=new au("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cu=new au("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),lu={3:tu,5:nu,6:pr},mu={3:fr,5:ru,6:ou},ji=r=>[3,5,6].indexOf(r)!==-1,Hi=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)},an={"Standard SPL":0,"Option tokens":1},yt={[Ti.toString()]:3,[Ii.toString()]:5,[Vn.toString()]:6};import{PublicKey as se,SystemProgram as wn,SYSVAR_RENT_PUBKEY as Ud,SYSVAR_CLOCK_PUBKEY as gr,TransactionInstruction as Ue}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Gd,TOKEN_PROGRAM_ID as lt,ASSOCIATED_TOKEN_PROGRAM_ID as Xd}from"@solana/spl-token";import Bo from"bn.js";function Zi(r,e,t){return ae([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function $i(r,e){return ae([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Ji(r,e){return ae([e.toBuffer()],r)}function es(r,e,t){return ae([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function ts(r,e,t){return ae([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function ns(r,e,t,n){return ae([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import at from"bn.js";var yr=ce("Raydium.farm.util");function br({programId:r,poolId:e,mint:t,type:n}){let{publicKey:o}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return o}function et({programId:r,poolId:e,owner:t,version:n}){let{publicKey:o}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return o}var du=({programId:r,poolId:e})=>ae([e.toBuffer()],r);function pu(r){return{isSet:new at(1),rewardPerSecond:z(r.perSecond),rewardOpenTime:z(r.openTime),rewardEndTime:z(r.endTime),rewardType:z(an[r.rewardType])}}function rs(r){return z(r.endTime).sub(z(r.openTime)).mul(z(r.perSecond))}function Dn(r){let e=mu[r];return e||yr.logWithError("invalid version",r),e}function Wd(r){let e=lu[r];return e||yr.logWithError("invalid version",r),e}function qd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new at(t)))return r;let o=new at(t).sub(r.lastSlot);r.lastSlot=new at(t);for(let i of r.rewardInfos){if(e.amount.eq(new at(0)))continue;let s=i.perSlotReward.mul(o);i.perShareReward=i.perShareReward.add(s.mul(new at(10).pow(new at(r.version===3?9:15))).div(e.amount)),i.totalReward=i.totalReward.add(s)}}else if(r.version===6)for(let o of r.rewardInfos){if(o.rewardState.eq(new at(0)))continue;let i=at.min(new at(n),o.rewardEndTime);if(o.rewardOpenTime.gte(i))continue;let a=i.sub(o.rewardLastUpdateTime).mul(o.rewardPerSecond),c=o.totalReward.sub(o.totalRewardEmissioned);c.lt(a)?(a=c,o.rewardLastUpdateTime=o.rewardLastUpdateTime.add(c.div(o.rewardPerSecond))):o.rewardLastUpdateTime=i,!e.amount.eq(new at(0))&&(o.accRewardPerShare=o.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),o.totalRewardEmissioned=o.totalRewardEmissioned.add(a))}return r}async function FP({connection:r,farmPools:e,owner:t,config:n,chainTime:o}){let i=!1,s=!1,a=new at(10),c=[];for(let m of e){let p=Ie(m);p.version===6?s=!0:i=!0,c.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&c.push({pubkey:et({programId:p.programId,poolId:p.id,owner:t,version:m.version}),version:p.version,key:"ledger",poolId:p.id})}let u={},l=await qe(r,c,n);for(let{pubkey:m,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(u[g]=R({},u[g]),y==="state"){let h=Wd(p);(!b||!b.data||b.data.length!==h.span)&&yr.logWithError(`invalid farm state account info, pools.id, ${m}`),u[g].state=h.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==nn.span)&&yr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${m}`),u[g].lpVault=nn.decode(b.data);else if(y==="ledger"){let h=Dn(p);b&&b.data&&(b.data.length!==h.span&&yr.logWithError(`invalid farm ledger account info, ledger, ${m}`),u[g].ledger=h.decode(b.data))}}let d=s||i?await r.getSlot():0;for(let m of Object.keys(u))u[m]!==void 0&&(u[m].state=qd(u[m].state,u[m].lpVault,d,o));for(let[m,{state:p,ledger:y}]of Object.entries(u))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new at(9)):a.pow(new at(15)),b=p.rewardInfos.map((g,h)=>{let A=y.rewardDebts[h];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});u[m].wrapped=v(R({},u[m].wrapped),{pendingRewards:b})}return u}function DP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>La(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Oa(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function os(r,e,t,n){let o=await r.getAccountInfo(e);if(o===null)throw Error("registrar info check error");let s=iu.decode(o.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let u=su.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return u===-1?{index:s,isInit:!1}:{index:u,isInit:!0}}var zd=ce("Raydium_farm_instruction"),wr={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 So(r){let{version:e,id:t,ledger:n,programId:o,owner:i}=r,s={3:9,5:10}[e];s||zd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Gi.span);Gi.encode({instruction:s},a);let c=[w({pubkey:t}),w({pubkey:n}),w({pubkey:i,isWritable:!1}),w({pubkey:wn.programId,isWritable:!1}),w({pubkey:Ud,isWritable:!1})];return{instruction:new Ue({programId:o,keys:c,data:a}),instructionType:E.FarmV3CreateLedger}}function fu(r){var n;let e=Buffer.alloc(zi.span);zi.encode({instruction:0,nonce:new Bo(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...ui,w({pubkey:r.farmId}),w({pubkey:r.farmAuthority,isWritable:!1}),w({pubkey:r.lpVault}),w({pubkey:r.lpMint,isWritable:!1}),w({pubkey:r.lockVault}),w({pubkey:r.lockMint,isWritable:!1}),w({pubkey:(n=r.lockUserAccount)!=null?n:Ve}),w({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let o of r.rewardInfo)t.push(w({pubkey:o.rewardMint,isWritable:!1}),w({pubkey:o.rewardVault}),w({pubkey:o.userRewardToken}));return{instruction:new Ue({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function yu(r){let e=Buffer.alloc(Xi.span);Xi.encode({instruction:5},e);let t=[w({pubkey:lt,isWritable:!1}),w({pubkey:r.id}),w({pubkey:r.authority,isWritable:!1}),w({pubkey:r.lpVault,isWritable:!1}),w({pubkey:r.rewardVault}),w({pubkey:r.userRewardToken}),w({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ue({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Yd(r,e,t,n,o,i,s,a,c,u,l,d,m){let p=M([D("depositEntryIndex"),P("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:to,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:d,amount:m},f);let b=Buffer.from([...wr.voterStakeRegistryDeposit,...f]);return new Ue({keys:y,programId:r,data:b})}function Qd(r,e,t,n){let o=M([]),i=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(o.span);o.encode({},s);let a=Buffer.from([...wr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ue({keys:i,programId:r,data:a})}function jd(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([D("depositEntryIndex"),P("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:to,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let h=Buffer.from([...wr.voterStakeRegistryWithdraw,...g]);return new Ue({keys:b,programId:r,data:h})}function Hd(r,e,t,n,o,i){let s=M([D("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({ins:23},c),new Ue({keys:a,programId:r,data:c})}function Zd(r,e,t,n,o,i,s,a){let c=M([D("voterBump"),D("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:to,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:s,voterWeightRecordBump:a},l);let d=Buffer.from([...wr.voterStakeRegistryCreateVoter,...l]);return new Ue({keys:u,programId:r,data:d})}function $d(r,e,t,n,o,i,s,a,c,u,l,d){let m=M([D("depositEntryIndex"),D("kind"),D("option"),P("startTs"),$e("periods"),je("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Xd,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],y=Buffer.alloc(m.span);m.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:d},y);let f=Buffer.from([...wr.voterStakeRegistryCreateDepositEntry,...y]);return new Ue({keys:p,programId:r,data:f})}async function rh({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=Zi(n,o,i).publicKey,l=et({programId:e,poolId:a,owner:s,version:3}),d=await r.getAccountInfo(l);if(d===null)throw Error("user is not staker");let m=fr.decode(d.data),p=m.deposited.sub(m.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new Bo(0)))throw Error("user do not has new stake amount");let y=$i(e,a).publicKey,f=Ji(e,a).publicKey,{publicKey:b,nonce:g}=es(n,u,s),h=ge(b,y,c).publicKey,{publicKey:A,nonce:k}=ts(n,u,s),T=ns(t,o,i,s).publicKey,I=[],S=ge(s,y,c).publicKey;if(await r.getAccountInfo(S)===null&&I.push(Gd(s,S,s,y)),await r.getAccountInfo(b)===null){let G=Hd(t,o,s,i,s,T);I.push(G,Zd(n,u,b,A,s,s,g,k))}let{index:x,isInit:L}=await os(r,u,b,y);return L||I.push($d(n,u,b,h,s,s,y,x,0,void 0,0,!1)),I.push(Yd(n,u,b,h,S,s,l,a,y,f,e,x,p),Qd(n,u,b,A)),I}async function oh({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=Zi(n,o,i).publicKey,l=et({programId:e,poolId:a,owner:s,version:3}),d=await r.getAccountInfo(l);if(d===null)throw Error("user is not staker");let m=fr.decode(d.data);if(m.voteLockedBalance.eq(new Bo(0)))throw Error("user has vote locked balance = 0");let p=$i(e,a).publicKey,y=Ji(e,a).publicKey,{publicKey:f}=es(n,u,s),b=ge(f,p,c).publicKey,{publicKey:g}=ts(n,u,s),h=ns(t,o,i,s).publicKey,A=[],{index:k,isInit:T}=await os(r,u,f,p);if(!T)throw Error("deposit entry index check error");return A.push(jd(n,u,f,s,h,g,b,ge(s,p,c).publicKey,l,a,p,y,e,k,m.voteLockedBalance)),A}function is({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:o}){let i=Buffer.alloc(Yi.span);Yi.encode({instruction:3,rewardReopenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardPerSecond:z(o.perSecond)},i);let s=[w({pubkey:lt,isWritable:!1}),w({pubkey:n.id}),w({pubkey:n.lpVault,isWritable:!1}),w({pubkey:e}),w({pubkey:t}),w({pubkey:r,isWritable:!1,isSigner:!0})];return new Ue({programId:n.programId,keys:s,data:i})}function ss({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:o}){let i=Buffer.alloc(Qi.span);Qi.encode({instruction:4,isSet:new Bo(1),rewardPerSecond:z(o.perSecond),rewardOpenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardType:z(an[o.rewardType])},i);let s=[...ui,w({pubkey:t.id}),w({pubkey:t.authority,isWritable:!1}),w({pubkey:o.mint,isWritable:!1}),w({pubkey:n}),w({pubkey:e}),w({pubkey:r,isWritable:!1,isSigner:!0})];return new Ue({programId:t.programId,keys:s,data:i})}function ih(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:o,rewardAccounts:i,owner:s,instruction:a,amount:c,deposit:u}=r,[l,d]=[new se(e.programId),new se(e.id)],m=et({programId:l,poolId:d,owner:s,version:n}),p=Buffer.alloc(rt.span);rt.encode({instruction:a,amount:c},p);let y=n===6?[w({pubkey:lt,isWritable:!1}),...u?[w({pubkey:wn.programId,isWritable:!1})]:[],w({pubkey:d}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:new se(t.lpVault)}),w({pubkey:m}),w({pubkey:s,isWritable:!1,isSigner:!0}),w({pubkey:o})]:[w({pubkey:d}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:m}),w({pubkey:s,isWritable:!1,isSigner:!0}),w({pubkey:o}),w({pubkey:new se(t.lpVault)}),w({pubkey:i[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:gr,isWritable:!1}),w({pubkey:lt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(w({pubkey:i[f]})),y.push(w({pubkey:new se(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(w({pubkey:new se(t.rewardInfos[f].vault)})),y.push(w({pubkey:i[f]}));return new Ue({programId:l,keys:y,data:p})}function Ar(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=r,[a,c]=[new se(e.programId),new se(e.id)],u=et({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:2,amount:z(s)},l);let d=[w({pubkey:lt,isWritable:!1}),w({pubkey:c}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:new se(t.lpVault)}),w({pubkey:u}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n})];for(let m=0;m<t.rewardInfos.length;m++)d.push(w({pubkey:new se(t.rewardInfos[m].vault)})),d.push(w({pubkey:o[m]}));return new Ue({programId:a,keys:d,data:l})}function Pr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:5}),d=Buffer.alloc(rt.span);rt.encode({instruction:12,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:gr,isWritable:!1}),w({pubkey:lt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)m.push(w({pubkey:o[p]})),m.push(w({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function hr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:3}),d=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:gr,isWritable:!1}),w({pubkey:lt,isWritable:!1})];if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function bu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:3}),d=Buffer.alloc(rt.span);rt.encode({instruction:10,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:gr,isWritable:!1}),w({pubkey:lt,isWritable:!1})];if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function gu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:5}),d=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:gr,isWritable:!1}),w({pubkey:lt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)m.push(w({pubkey:o[p]})),m.push(w({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function wu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=r,[a,c]=[new se(e.programId),new se(e.id)],u=et({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:1,amount:z(s)},l);let d=[w({pubkey:lt,isWritable:!1}),w({pubkey:wn.programId,isWritable:!1}),w({pubkey:c}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:new se(t.lpVault)}),w({pubkey:u}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n})];for(let m=0;m<t.rewardInfos.length;m++)d.push(w({pubkey:new se(t.rewardInfos[m].vault)})),d.push(w({pubkey:o[m]}));return new Ue({programId:a,keys:d,data:l})}var kr=class extends Se{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ve)){let n=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:rs(v(R({},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=Vn,txVersion:i}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:uu,lockVault:cu},version:6,rewardInfos:t,programId:o},c=this.createTxBuilder(),u=n!=null?n:this.scope.ownerPubKey,l=Je({fromPublicKey:u,programId:a.programId}),d=await this.scope.connection.getMinimumBalanceForRentExemption(pr.span);c.addInstruction({instructions:[ep.createAccountWithSeed({fromPubkey:u,basePubkey:u,seed:l.seed,newAccountPubkey:l.publicKey,lamports:d,space:pr.span,programId:a.programId})]});let{publicKey:m,nonce:p}=du({programId:new ke(a.programId),poolId:l.publicKey}),y=br({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(an[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(pu(T));let{rewardPubKey:I,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:T,payer:u});S&&c.addInstruction(S),I||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=T.mint.equals(Ve)?new ke(Ee.address):T.mint;b.push({rewardMint:B,rewardVault:br({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:I})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&c.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=fu({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:m,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 c.addInstruction({instructions:[A],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:l.publicKey,farmAuthority:m,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:o}){var b;let i=yt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((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 c=t||this.scope.ownerPubKey,u=n.mint.equals(Ve)?new ke(Ee.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(u)),d=s.rewardInfos[l];d||this.logAndCreateError("configuration does not exist","rewardMint",u);let m=(b=d.vault)!=null?b:Ve,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:c});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[is({payer:this.scope.ownerPubKey,rewardVault:m,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:o}){var l;let i=yt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(d=>{d.openTime>=d.endTime&&this.logAndCreateError("start time error","newRewardInfo",d)});let c=t||this.scope.ownerPubKey,u=this.createTxBuilder();for(let d of n){let m=d.mint.equals(Ve)?new ke(Ee.address):d.mint,p=a.rewardInfos.findIndex(A=>new ke(A.mint.address).equals(m)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",m);let f=(l=y.vault)!=null?l:Ve,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:d,payer:c});g&&u.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=is({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:d});u.addInstruction({instructions:[h],instructionTypes:[E.FarmV6Restart]})}return u.versionBuild({txVersion:o})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:o,payer:i}=e,s=yt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder(),l=o.mint.equals(Ve)?new ke(Ee.address):o.mint,d=br({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:m,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:o,payer:c});return p&&u.addInstruction(p),m||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=l,u.addInstruction({instructions:[ss({payer:this.scope.ownerPubKey,userRewardTokenPub:m,farmKeys:a,rewardVault:d,rewardInfo:o})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:o,payer:i}=e,s=yt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder();for(let l of o){let d=l.mint.equals(Ve)?new ke(Ee.address):l.mint,m=br({programId:new ke(n.programId),poolId:new ke(n.id),mint:d,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:c});y&&u.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=ss({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:v(R({},l),{mint:d})});u.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return u.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:o,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:d,programId:m}=n,p=yt[m];ji(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=et({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 Z=ge(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&Z.equals(F.publicKey)&&(A[F.mint.toString()]=F.publicKey)}else A[F.mint.toString()]=F.publicKey;let k=b.lpMint,T=A[k.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let F of d){let Z=s&&F.mint.address===J.toString(),$=A[F.mint.address];if(!$){let{account:W,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new ke(F.mint.address),notUseTokenAccount:Z,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!Z,associatedOnly:Z?!1:a,checkCreateATAOwner:c});$=W,ft&&h.addInstruction(ft)}A[F.mint.address]=$,I.push($)}let S,B=await this.scope.connection.getAccountInfo(g);if(B&&(S=Dn(p).decode(B.data)),n.programId!==Vn.toString()&&!S){let{instruction:F,instructionType:Z}=So({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[F],instructionTypes:[Z]})}let C=Hi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:I});C&&this.logAndCreateError(C);let x={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:u==null?void 0:u.map(F=>new ke(F))},L=p===6?wu(x):p===5?gu(x):bu(x),G={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return h.addInstruction({instructions:[L],instructionTypes:[G[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:o,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:d}=e,{rewardInfos:m}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=yt[n.programId];ji(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(d);let b={};for(let C of this.scope.account.tokenAccounts)if(c){let x=ge(this.scope.ownerPubKey,C.mint).publicKey;C.publicKey&&x.equals(C.publicKey)&&(b[C.mint.toString()]=C.publicKey)}else b[C.mint.toString()]=C.publicKey;if(i)i.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let C=et({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),x=await this.scope.connection.getAccountInfo(C);x||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:x}),Dn(p).decode(x.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===J.toString(),A=b[g.toString()];if(!A){let{account:C,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:c,checkCreateATAOwner:u});A=C,x&&f.addInstruction(x)}b[g.toString()]=A;let k=[];for(let C of m){let x=s&&C.mint.address===J.toString(),L=b[C.mint.address];if(!L){let{account:G,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:C.mint.programId,mint:new ke(C.mint.address),notUseTokenAccount:x,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!x,associatedOnly:x?!1:c,checkCreateATAOwner:u});L=G,F&&f.addInstruction(F)}b[C.mint.address]=L,k.push(L)}let T=Hi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:k});T&&this.logAndCreateError(T);let I={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(C=>new ke(C))},S=p===6?Ar(I):p===5?Pr(I):hr(I),B={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[B[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let o=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),i=yt[e.programId];i!==6&&this.logAndCreateError("invalid farm version",i);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ve.toString()?new ke(Ee.address):t),a=o.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let c=(p=a==null?void 0:a.vault)!=null?p:Ve,u=this.createTxBuilder(),l;if(t.equals(Ve)){let y=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:rs(v(R({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,u.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),u.addInstruction({instructions:[Jd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:d,instructionType:m}=yu({programId:o.programId,id:o.id,authority:o.authority,lpVault:o.lpVault,rewardVault:c,userRewardToken:l,owner:this.scope.ownerPubKey});return u.addInstruction({instructions:[d],instructionTypes:[m]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(),d={};for(let y of this.scope.account.tokenAccounts)if(i){let f=ge(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(d[y.mint.toString()]=y.publicKey)}else d[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>v(R({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=yt[f],k=b.address,T=n&&k===J.toString(),I=d[k];if(!I){let{account:G,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(k),notUseTokenAccount:T,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:i,checkCreateATAOwner:s});I=G,F&&l.addInstruction(F)}d[k.toString()]=I;let S=[];for(let G of g){let F=n&&G.mint.address===J.toString(),Z=d[G.mint.address];if(!Z){let{account:$,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:G.mint.programId,mint:new ke(G.mint.address),notUseTokenAccount:F,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:i,checkCreateATAOwner:s});Z=$,W&&l.addInstruction(W)}d[G.mint.address]=Z,S.push(Z)}let B=p[h],C={amount:Fe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:B,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(G=>new ke(G))},x=A===6?Ar(C):A===5?Pr(C):hr(C),L={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[x],instructionTypes:[L[A]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}};import{PublicKey as Me}from"@solana/web3.js";import{AccountLayout as Dp,NATIVE_MINT as rc,TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";var Kh=M([$e("mintAuthorityOption"),K("mintAuthority"),P("supply"),D("decimals"),D("isInitialized"),$e("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as tp}from"@solana/web3.js";import{MintLayout as Au,TOKEN_PROGRAM_ID as np}from"@solana/spl-token";var vh=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new tp(e));return!t||t.data.length!==Au.span?void 0:Au.decode(t.data)},Fh=({mint:r,decimals:e,programId:t=np,logoURI:n="",priority:o=3})=>{let i=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:i,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:i,tags:[],priority:o}},Ko=r=>new ye({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),Tr=o=>{var i=o,{amount:r,isRaw:e,name:t}=i,n=Be(i,["amount","isRaw","name"]);return new fe(new ye({mint:ct(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function Dh(r){return r.address===Rt.address?Ee:r}function Wh(r){return r.address===Ee.address?Rt:r}var bt=o=>{var i=o,{address:r,programId:e,decimals:t}=i,n=Be(i,["address","programId","decimals"]);return R({chainId:101,address:ct(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Wn=r=>r?v(R({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:v(R({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:v(R({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as Gn,ASSOCIATED_TOKEN_PROGRAM_ID as bp}from"@solana/spl-token";import{PublicKey as we,TransactionInstruction as Gt,SystemProgram as Su,SYSVAR_RENT_PUBKEY as gp}from"@solana/web3.js";var as=M([D("instruction"),P("amountIn"),P("minAmountOut")]),us=M([D("instruction"),P("maxAmountIn"),P("amountOut")]),Jh=M([D("instruction"),D("nonce")]),cs=M([D("instruction"),D("nonce"),P("startTime")]),Ir=M([P("status"),P("nonce"),P("maxOrder"),P("depth"),P("baseDecimal"),P("quoteDecimal"),P("state"),P("resetFlag"),P("minSize"),P("volMaxCutRatio"),P("amountWaveRatio"),P("baseLotSize"),P("quoteLotSize"),P("minPriceMultiplier"),P("maxPriceMultiplier"),P("systemDecimalValue"),P("minSeparateNumerator"),P("minSeparateDenominator"),P("tradeFeeNumerator"),P("tradeFeeDenominator"),P("pnlNumerator"),P("pnlDenominator"),P("swapFeeNumerator"),P("swapFeeDenominator"),P("baseNeedTakePnl"),P("quoteNeedTakePnl"),P("quoteTotalPnl"),P("baseTotalPnl"),P("poolOpenTime"),P("punishPcAmount"),P("punishCoinAmount"),P("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),P("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),P("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"),P("lpReserve"),U(P(),3,"padding")]),rp=M([P("accountType"),P("status"),P("nonce"),P("maxOrder"),P("depth"),P("baseDecimal"),P("quoteDecimal"),P("state"),P("resetFlag"),P("minSize"),P("volMaxCutRatio"),P("amountWaveRatio"),P("baseLotSize"),P("quoteLotSize"),P("minPriceMultiplier"),P("maxPriceMultiplier"),P("systemDecimalsValue"),P("abortTradeFactor"),P("priceTickMultiplier"),P("priceTick"),P("minSeparateNumerator"),P("minSeparateDenominator"),P("tradeFeeNumerator"),P("tradeFeeDenominator"),P("pnlNumerator"),P("pnlDenominator"),P("swapFeeNumerator"),P("swapFeeDenominator"),P("baseNeedTakePnl"),P("quoteNeedTakePnl"),P("quoteTotalPnl"),P("baseTotalPnl"),P("poolOpenTime"),P("punishPcAmount"),P("punishCoinAmount"),P("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),P("swapQuote2BaseFee"),P("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),U(P(),64,"padding")]),ls=M([D("instruction"),P("baseAmountIn"),P("quoteAmountIn"),P("fixedSide")]),ms=M([D("instruction"),P("amountIn")]),ek={4:Ir,5:rp},Pu=M([P("fee")]);import{PublicKey as op}from"@solana/web3.js";var Un=new op("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pn=5e4,ip=M([P("x"),P("y"),P("price")]),sp=M([P("accountType"),P("status"),P("multiplier"),P("validDataCount"),U(ip,Pn,"DataElement")]);function ap(r,e){return[0,Pn-2]}function up(r){return[0,Pn-2]}function cp(r){return[0,Pn-2]}function lp(r,e,t){let[n,o]=ap(e,t),i=n,s=o,a=0,c=e*r.multiplier/t;for(;i<=s;){if(a=Math.floor((s+i)/2),a===0||a>=Pn-2)return[a,a,!1];let u=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,d=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(c===u)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===d)return[a+1,a+1,!0];if(c<l)s=a-1;else{if(c>l&&c<u)return[a-1,a,!0];if(c>u&&c<d)return[a,a+1,!0];i=a+1}}return[a,a,!1]}function ds(r,e,t){let[n,o,i]=lp(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,c=r.DataElement[o].x,u=r.DataElement[o].y,l=t*(c*a-s*u),d=s*l,m=(c-s)*(e*a-s*t)*u,p=d+m;return e*r.multiplier*l/p}}function An(r,e,t){return e*r.multiplier/t}function hu(r,e,t){return e*t/r.multiplier}function mp(r,e){let[t,n]=up(e),o=t,i=n,s=0,a=e;for(;o<i;){if(s=Math.floor((i+o)/2),s<=0||s>Pn-2)return[s,s,!1];let c=r.DataElement[s].x,u=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<u)i=s-1;else{if(a>u&&a<c)return[s-1,s,!0];if(a>c&&a<l)return[s,s+1,!0];o=s+1}}return[s,s,!1]}function dp(r,e){let[t,n]=cp(e),o=t,i=n,s=0,a=e;for(;o<=i;){if(s=Math.floor((i+o)/2),s<=0||s>=Pn-2)return[s,s,!1];let c=r.DataElement[s].y,u=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)o=s+1;else{if(a<u&&a>c)return[s-1,s,!0];if(a<c&&a>l)return[s,s+1,!0];i=s-1}}return[s,s,!1]}function ku(r,e,t,n){let o=n?e+t:e-t,[i,s,a]=mp(r,o);if(!a)return[0,0,!1,a];if(i===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let c=r.DataElement[i].x,u=r.DataElement[s].x,l=r.DataElement[i].price,d=r.DataElement[s].price,m=r.DataElement[i].y,p=r.DataElement[s].y;if(e>=c&&e<=u)return n?[d,p,!0,a]:[l,m,!0,a];{let y,f;return n?(y=l+(d-l)*(e-c)/(u-c),f=m-(o-c)*r.multiplier/d):(y=l+(d-l)*(e-c)/(u-c),f=p+(u-o)*r.multiplier/l),[y,f,!1,a]}}}function pp(r,e,t,n){let o=n?e-t:e+t,[i,s,a]=dp(r,o);if(!a)return[0,0,!1,a];if(i===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let c=r.DataElement[i].x,u=r.DataElement[s].x,l=r.DataElement[i].price,d=r.DataElement[s].price,m=r.DataElement[i].y,p=r.DataElement[s].y;if(e>=p&&e<=m)return n?[d,u,!0,a]:[l,c,!0,a];{let y,f;return n?(y=l+(d-l)*(m-e)/(m-p),f=c+d*(m-o)/r.multiplier):(y=l+(d-l)*(m-e)/(m-p),f=u-l*(o-p)/r.multiplier),[y,f,!1,a]}}}function fp(r,e){let t=ku(r,e,0,!1);return t[3]?t[0]:0}function Tu(r,e,t,n){let o=ds(r,e,t),i=An(r,e,o),s=An(r,t,o),a=An(r,n,o),c=!0,[u,l,d,m]=ku(r,i,a,c);if(!m)return 0;if(d)return n*r.multiplier/u;{let p=s-l;return hu(r,p,o)}}function Iu(r,e,t,n){let o=ds(r,e,t),i=An(r,e,o),s=An(r,t,o),a=An(r,n,o),c=!1,[u,l,d,m]=pp(r,s,a,c);if(!m)return 0;if(d)return n*u/r.multiplier;{let p=i-l;return hu(r,p,o)}}function yp(r){let e=sp.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 xu(r,e,t,n){let o=fp(r,An(r,e,ds(r,e,t)))/r.multiplier;return n?o:1/o}var qn=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(Un);e&&(this._layoutData=yp(e==null?void 0:e.data))}}};var Bu=ce("Raydium_liquidity_instruction");function Ku(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:i,fixedSide:s}=r,a=Buffer.alloc(ls.span);ls.encode({instruction:3,baseAmountIn:z(o),quoteAmountIn:z(i),fixedSide:s==="base"?Fe:ya},a);let c=[w({pubkey:Gn,isWritable:!1}),w({pubkey:new we(e.id)}),w({pubkey:new we(t.authority),isWritable:!1}),w({pubkey:new we(t.openOrders),isWritable:!1}),w({pubkey:new we(t.targetOrders)}),w({pubkey:new we(e.lpMint.address)}),w({pubkey:new we(t.vault.A)}),w({pubkey:new we(t.vault.B)})];return e.pooltype.includes("StablePool")&&c.push(w({pubkey:Un})),c.push(w({pubkey:new we(e.marketId),isWritable:!1}),w({pubkey:n.baseTokenAccount}),w({pubkey:n.quoteTokenAccount}),w({pubkey:n.lpTokenAccount}),w({pubkey:n.owner,isWritable:!1,isSigner:!0}),w({pubkey:new we(t.marketEventQueue),isWritable:!1})),new Gt({programId:new we(e.programId),keys:c,data:a})}function ps(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:o}=r,i=Ie(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(ms.span);ms.encode({instruction:4,amountIn:z(o)},a);let c=[w({pubkey:Gn,isWritable:!1}),w({pubkey:i.id}),w({pubkey:i.authority,isWritable:!1}),w({pubkey:i.openOrders}),w({pubkey:i.targetOrders}),w({pubkey:i.mintLp.address}),w({pubkey:i.vault.A}),w({pubkey:i.vault.B})];return s===5?c.push(w({pubkey:Un})):(c.push(w({pubkey:i.id})),c.push(w({pubkey:i.id}))),c.push(w({pubkey:i.marketProgramId,isWritable:!1}),w({pubkey:i.marketId}),w({pubkey:i.marketBaseVault}),w({pubkey:i.marketQuoteVault}),w({pubkey:i.marketAuthority,isWritable:!1}),w({pubkey:n.lpTokenAccount}),w({pubkey:n.baseTokenAccount}),w({pubkey:n.quoteTokenAccount}),w({pubkey:n.owner,isWritable:!1,isSigner:!0}),w({pubkey:i.marketEventQueue}),w({pubkey:i.marketBids}),w({pubkey:i.marketAsks})),new Gt({programId:i.programId,keys:c,data:a})}return new Gt({programId:i.programId,keys:[]})}function Cu({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:i,pcMint:s,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:d,marketProgramId:m,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:A,coinAmount:k,pcAmount:T,ammConfigId:I,feeDestinationId:S}){let B=M([D("instruction"),D("nonce"),P("openTime"),P("pcAmount"),P("coinAmount")]),C=[{pubkey:Gn,isSigner:!1,isWritable:!1},{pubkey:bp,isSigner:!1,isWritable:!1},{pubkey:Su.programId,isSigner:!1,isWritable:!1},{pubkey:st,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:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:m,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}],x=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:T},x),{instruction:new Gt({keys:C,programId:r,data:x}),instructionType:E.AmmV4CreatePool}}function bk(r){let e=M([D("instruction"),D("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[w({pubkey:new we(r.id),isWritable:!1}),w({pubkey:new we(r.authority),isWritable:!1}),w({pubkey:new we(r.openOrders),isWritable:!1}),w({pubkey:new we(r.vault.A),isWritable:!1}),w({pubkey:new we(r.vault.B),isWritable:!1}),w({pubkey:new we(r.mintLp.address),isWritable:!1}),w({pubkey:new we(r.marketId),isWritable:!1}),w({pubkey:new we(r.marketEventQueue),isWritable:!1})];return new Gt({programId:new we(r.programId),keys:n,data:t})}function wp({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},o){let i=Ie(r),s=Buffer.alloc(as.span);as.encode({instruction:9,amountIn:z(t),minAmountOut:z(n)},s);let a=[w({pubkey:Gn,isWritable:!1}),w({pubkey:i.id}),w({pubkey:i.authority,isWritable:!1}),w({pubkey:i.openOrders})];return o===4&&a.push(w({pubkey:i.targetOrders})),a.push(w({pubkey:i.vault.A}),w({pubkey:i.vault.B})),o===5&&a.push(w({pubkey:Un})),a.push(w({pubkey:i.marketProgramId,isWritable:!1}),w({pubkey:i.marketId}),w({pubkey:i.marketBids}),w({pubkey:i.marketAsks}),w({pubkey:i.marketEventQueue}),w({pubkey:i.marketBaseVault}),w({pubkey:i.marketQuoteVault}),w({pubkey:i.marketAuthority,isWritable:!1}),w({pubkey:e.tokenAccountIn}),w({pubkey:e.tokenAccountOut}),w({pubkey:e.owner,isWritable:!1})),new Gt({programId:i.programId,keys:a,data:s})}function Ap({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},o){let i=Ie(r),s=Buffer.alloc(us.span);us.encode({instruction:11,maxAmountIn:z(t),amountOut:z(n)},s);let a=[w({pubkey:Gn,isWritable:!1}),w({pubkey:i.id}),w({pubkey:i.authority,isWritable:!1}),w({pubkey:i.openOrders}),w({pubkey:i.targetOrders}),w({pubkey:i.vault.A}),w({pubkey:i.vault.B})];return o===5&&a.push(w({pubkey:Un})),a.push(w({pubkey:i.marketProgramId,isWritable:!1}),w({pubkey:i.marketId}),w({pubkey:i.marketBids}),w({pubkey:i.marketAsks}),w({pubkey:i.marketEventQueue}),w({pubkey:i.marketBaseVault}),w({pubkey:i.marketQuoteVault}),w({pubkey:i.marketAuthority,isWritable:!1}),w({pubkey:e.tokenAccountIn}),w({pubkey:e.tokenAccountOut}),w({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Gt({programId:i.programId,keys:a,data:s})}function Co(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 wp(v(R({},a),{amountIn:o,minAmountOut:i}),t);if(s==="out")return Ap(v(R({},a),{maxAmountIn:o,amountOut:i}),t);Bu.logWithError("invalid params","params",r)}throw Bu.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function gk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(cs.span);cs.encode({instruction:0,nonce:5,startTime:z(t)},n);let o=Ie(r),i=[w({pubkey:Gn,isWritable:!1}),w({pubkey:Su.programId,isWritable:!1}),w({pubkey:gp,isWritable:!1}),w({pubkey:o.id}),w({pubkey:o.authority,isWritable:!1}),w({pubkey:o.openOrders}),w({pubkey:o.mintLp.address}),w({pubkey:o.mintA.address,isWritable:!1}),w({pubkey:o.mintB.address,isWritable:!1}),w({pubkey:o.vault.A,isWritable:!1}),w({pubkey:o.vault.B,isWritable:!1}),w({pubkey:o.id}),w({pubkey:o.targetOrders}),w({pubkey:e.lpTokenAccount}),w({pubkey:o.id,isWritable:!1}),w({pubkey:o.marketProgramId,isWritable:!1}),w({pubkey:o.marketId,isWritable:!1}),w({pubkey:e.payer,isSigner:!0})];return new Gt({programId:o.programId,keys:i,data:n})}function Ru({poolKeys:r}){let e=M([D("instruction"),D("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[w({pubkey:new we(r.id),isWritable:!1}),w({pubkey:new we(r.authority),isWritable:!1}),w({pubkey:new we(r.openOrders),isWritable:!1}),w({pubkey:new we(r.vault.A),isWritable:!1}),w({pubkey:new we(r.vault.B),isWritable:!1}),w({pubkey:new we(r.mintLp.address),isWritable:!1}),w({pubkey:new we(r.marketId),isWritable:!1}),w({pubkey:new we(r.marketEventQueue),isWritable:!1})];return{instruction:new Gt({programId:new we(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as He,TOKEN_2022_PROGRAM_ID as un,ASSOCIATED_TOKEN_PROGRAM_ID as Yu}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as St,SystemProgram as Xn,Keypair as hs}from"@solana/web3.js";import Qu from"bn.js";import Rp from"bn.js";function Lu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Ak(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function Pk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function Ro(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function fs(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function ys(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function xr(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ou(r,e){return xr(r,e)?null:fs(r,e)}function Nu(r,e){return xr(r,e)?null:ys(r,e)}var Pp=Buffer.from("amm_config","utf8"),hp=Buffer.from("pool","utf8"),kp=Buffer.from("pool_vault","utf8"),Tp=Buffer.from("pool_reward_vault","utf8"),Mu=Buffer.from("position","utf8"),Ip=Buffer.from("tick_array","utf8"),xp=Buffer.from("operation","utf8"),Bp=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ik(r,e){return ae([Pp,Lu(e)],r)}function _u(r,e,t,n){return ae([hp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function bs(r,e,t){return ae([kp,e.toBuffer(),t.toBuffer()],r)}function Vu(r,e,t){return ae([Tp,e.toBuffer(),t.toBuffer()],r)}function Ae(r,e,t){return ae([Ip,e.toBuffer(),Ro(t)],r)}function hn(r,e,t,n){return ae([Mu,e.toBuffer(),Ro(t),Ro(n)],r)}function gt(r,e){return ae([Mu,e.toBuffer()],r)}function Lo(r){return ae([Buffer.from("metadata","utf8"),Mn.toBuffer(),r.toBuffer()],Mn)}function Br(r){return ae([xp],r)}function mt(r,e){return ae([Bp,e.toBuffer()],r)}import wt from"bn.js";var pe=new wt(0),dt=new wt(1),Xt=new wt(-1),pt=new wt(1).shln(64),Oo=new wt(1).shln(128),gs=pt.sub(dt),Sr=64,Eu=Oo.subn(1),tt=-443636,ot=-tt,_t=new wt("4295048016"),Vt=new wt("79226673521066979257578248091"),No=new wt("4295048017"),Mo=new wt("79226673521066979257578248090"),vu=16,Fu="59543866431248",Du="184467440737095516",Wu="15793534762490258745",_o=new wt(10).pow(new wt(6)),Sp=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Sp||{}),Sk={[500]:10,[3e3]:60,[1e4]:200},Kk={version:6,liquidity:pe,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:pe,feeGrowthGlobalX64B:pe,protocolFeesTokenA:pe,protocolFeesTokenB:pe,swapInAmountTokenA:pe,swapOutAmountTokenB:pe,swapInAmountTokenB:pe,swapOutAmountTokenA:pe,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},qu={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:[]},Ck=new wt("18446744073700000000");var Kp=15,me=class{static async getTickArrays(e,t,n,o,i,s,a){let c=[],u=j.getTickArrayStartIndexByTick(o,i),l=j.getInitializedTickArrayInRange(s,a,i,u,Math.floor(Kp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=Ae(t,n,l[p]);c.push(y)}let d=(await Tt(e,c)).map(p=>p!==null?Kr.decode(p.data):null),m={};for(let p=0;p<c.length;p++){let y=d[p];y!==null&&(m[y.startTickIndex]=v(R({},y),{address:c[p]}))}return m}static nextInitializedTick(e,t,n,o,i,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,o,i,s);for(;a==null||a.liquidityGross.lten(0);){if(u=j.getNextTickArrayStartIndex(u,i,s),this.checkIsValidStartIndex(u,i))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,o,i){let s=Math.floor(e/me.tickCount(t)),a=n?j.searchLowBitFromStart(o,i,s-1,1,t):j.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=De-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a-1}}else{let a=0;for(;a<De;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a+1}}let{publicKey:s}=Ae(e,t,n.startTickIndex);return{nextTick:i,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,o,i,s){let a=j.getTickArrayStartIndexByTick(o,i),c=Math.floor((o-a)/i),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<De;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=Ae(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(j.checkIsOutOfBoundary(e)){if(e>ot)return!1;let n=j.getTickArrayStartIndexByTick(tt,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return De*e}};import ie from"bn.js";import{PublicKey as Bt}from"@solana/web3.js";import Re from"bn.js";var ws=14,zt=class{static maxTickInTickarrayBitmap(e){return e*De*kn}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(!me.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let i=this.maxTickInTickarrayBitmap(n),s=o?t-me.tickCount(n):t+me.tickCount(n);if(s<-i||s>=i)return{isInit:!1,tickIndex:t};let a=n*De,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(o){let l=e.shln(1024-u-1),d=Ou(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-i}}else{let l=e.shrn(u),d=Nu(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:i-me.tickCount(n)}}}},Cr=class{static getBitmapOffset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=zt.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=zt.maxTickInTickarrayBitmap(e),n=-t;if(ot<=t)throw Error(`extensionTickBoundary check error: ${ot}, ${t}`);if(n<=tt)throw Error(`extensionTickBoundary check error: ${n}, ${tt}`);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:j.mergeTickArrayBitmap(o).testn(i),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,o){let i=me.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}=zt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(o){let c=j.mergeTickArrayBitmap(e).shln(kn-1-a),u=xr(512,c)?null:fs(512,c);if(u!==null){let l=t-u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i}}else{let c=j.mergeTickArrayBitmap(e).shrn(a),u=xr(512,c)?null:ys(512,c);if(u!==null){let l=t+u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-me.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%zt.maxTickInTickarrayBitmap(t),o=Math.floor(n/me.tickCount(t));return e<0&&n!=0&&(o=kn-o),o}};import Et from"bn.js";var Rr=class{static getfeeGrowthInside(e,t,n){let o=new Et(0),i=new Et(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 Et(0),a=new Et(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64A,o),s),u=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,pt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,pt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,pt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,pt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),d=ne.mulDivFloor(l,t.liquidity,pt),m=u.rewardAmountOwed.add(d);i.push(m)}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 c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),d=ne.mulDivFloor(l,t.liquidity,pt),m=u.rewardAmountOwed.add(d);i.push(m)}return i}static getRewardGrowthInside(e,t,n,o){let i=[];for(let s=0;s<o.length;s++){let a=new Et(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 c=new Et(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=o[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(o[s].rewardGrowthGlobalX64,a),c))}return i}static getRewardGrowthInsideV2(e,t,n,o){let i=[];for(let s=0;s<o.length;s++){let a=new Et(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 c=new Et(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=o[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(o[s].rewardGrowthGlobalX64,a),c))}return i}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:o,add:i,epochInfo:s}){var b,g,h,A;let a=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),c=te.getSqrtPriceX64FromTick(t.tickLower),u=te.getSqrtPriceX64FromTick(t.tickUpper),l=i?1+o:1-o,d=le.getAmountsFromLiquidity(a,c,u,n,i),[m,p]=[he(d.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),he(d.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[he(new Et(new V(d.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),he(new Et(new V(d.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(m.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Uu}from"@solana/spl-token";var Le=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:b}=Tn.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 c.push(...y),{allTrade:m,expectedAmountOut:p.mul(Xt),remainingAccounts:c,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,o,i){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=Ae(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:y}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o.mul(Xt),u,i);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:o}=Le.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Cr.checkTickArrayIsInit(me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):j.checkTickArrayIsInitialized(j.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Ae(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}let{isExist:i,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(i){let{publicKey:a}=Ae(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/me.tickCount(e.tickSpacing)),o=t?j.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):j.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=me.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:o,tickIndex:i}=zt.nextInitializedTickArrayStartIndex(j.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(o)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<tt||t>ot)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,c,u;let s=[];for(let l=0;l<i.length;l++){let d=i[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=v(R({},d),{perSecond:ne.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Bt(m)});if(p.tokenMint.equals(Bt.default))continue;if(n<=p.openTime.toNumber()||o.eq(pe)){s.push(p);continue}let y=new Re(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=ne.mulDivFloor(f,p.emissionsPerSecondX64,o),g=p.rewardGrowthGlobalX64.add(b),h=ne.mulDivFloor(f,p.emissionsPerSecondX64,pt),A=p.rewardTotalEmissioned.add(h);s.push(v(R({},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=j.getTickArrayStartIndexByTick(i,e);if(s>=n||s<o)return!0}return!1}static tickRange(e){let t=zt.maxTickInTickarrayBitmap(e),n=-t;return t>ot&&(t=me.getArrayStartIndex(ot,e)+me.tickCount(e)),n<tt&&(n=me.getArrayStartIndex(tt,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/me.tickCount(t)*kn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await qe(e,t.map(s=>({pubkey:s})),{batchRequest:n}),i={};for(let s of o)s.accountInfo!==null&&(i[s.pubkey.toString()]=Gu.decode(s.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let c of t){let u=j.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=j.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=Ae(c.programId,c.id,d);i.push({pubkey:m}),o[m.toString()]=c.id}}let s=await qe(e,i,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=o[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Kr.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=v(R({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:o=!1,updateOwnerRewardAndFee:i=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let p of s)u.push(gt(p,m).publicKey);let l=await Tt(t,u,{batchRequest:o}),d={};for(let m of l){if(m===null)continue;let p=Vo.decode(m.data),y=p.poolId.toString(),f=e.find(B=>B.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=j._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=j._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=le.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),T=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(B=>v(R({},B),{pendingReward:new Re(0)})),leverage:T,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let I=await j.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await j.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(i){let m=Object.values(d),p=await Tt(t,m,{batchRequest:o}),y={};for(let f=0;f<m.length;f++){let b=p[f];if(b===null)continue;let g=m[f].toString();y[g]=Kr.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[d[h].toString()],T=y[d[A].toString()],I=k.ticks[j.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=T.ticks[j.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:C}=await Rr.GetPositionFees(f,g,I,S),x=await Rr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=B.gte(new Re(0))?B:new Re(0),g.tokenFeeAmountB=C.gte(new Re(0))?C:new Re(0);for(let L=0;L<x.length;L++)g.rewardInfos[L].pendingReward=x[L].gte(new Re(0))?x[L]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:o,amountIn:i,slippage:s,priceLimit:a=new V(0),catchLiquidityInsufficient:c=!1}){var G;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new V(0))?u=l?_t.add(new Re(1)):Vt.sub(new Re(1)):u=te.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(i,d,o,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:h}=Le.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((G=p.fee)!=null?G:pe),u,c),A=he(f,m,o,!1),k=te.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?k:new V(1).div(k),I=f.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),S=he(I,m,o,!1),B=l?e.currentPrice:new V(1).div(e.currentPrice),C=new V(T).sub(B).abs(),x=B,L=new ve(new V(C).mul(10**15).toFixed(0),new V(x).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:Ot(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:T,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 c=o.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new ye(v(R({},u),{mint:u.address,isToken2022:u.programId===Uu.toBase58()})),new ye(v(R({},l),{mint:l.address,isToken2022:l.programId===Uu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:h,executionPrice:A,priceImpact:k,fee:T,remainingAccounts:I,executionPriceX64:S}=Le.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Bt(u.address),amountIn:n,slippage:i,epochInfo:s,catchLiquidityInsufficient:a}),B=v(R({},y),{amount:new fe(d,y.amount),fee:y.fee===void 0?void 0:new fe(d,y.fee)}),C=v(R({},f),{amount:new fe(m,f.amount),fee:f.fee===void 0?void 0:new fe(m,f.fee)}),x=v(R({},b),{amount:new fe(m,b.amount),fee:b.fee===void 0?void 0:new fe(m,b.fee)}),L=new We({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:m,numerator:h.mul(new V(10**(20+m.decimals))).toFixed(0)}),G=new We({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:m,numerator:A.mul(new V(10**(20+m.decimals))).toFixed(0)}),F=new fe(d,T);return{allTrade:p,realAmountIn:B,amountOut:C,minAmountOut:x,expirationTime:g,currentPrice:L,executionPrice:G,priceImpact:k,fee:F,remainingAccounts:I,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var y,f,b;let i=e[t],s=j.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=j.getTickPrice({poolInfo:e,tick:o,baseIn:!0}).price.toNumber(),c=Math.max(s,i.priceMin),l=Math.min(a,i.priceMax)-c,d=a-s,m=i.priceMax-i.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{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:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=o[ct(e.mintA.address).toString()],m=o[ct(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),b=te.getSqrtPriceX64FromTick(s),g=te.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=le.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:T}=le.getAmountsFromLiquidityWithSlippage(f,b,g,i,!1,!1,0),I=new V(h.toString()).div(new V(10).pow(p)).mul(d.value).add(new V(A.toString()).div(new V(10).pow(y)).mul(m.value)),S=new V(k.toString()).div(new V(10).pow(p)).mul(d.value).add(new V(T.toString()).div(new V(10).pow(y)).mul(m.value)),B=S.div(I.add(S)).div(S),x=new V(l.volumeFee).mul(365).div(u).mul(B).mul(100).toNumber(),L=3600*24*365,G=e.rewardDefaultInfos.map(F=>{var W,ft;let Z=F.mint.decimals,$=o[F.mint.address];return c<((W=F.startTime)!=null?W:0)||c>((ft=F.endTime)!=null?ft:0)||!F.perSecond||!$||Z===void 0?0:new V($.value).mul(new V(F.perSecond).mul(L)).div(new V(10).pow(Z)).mul(B).mul(100).toNumber()});return{feeApr:x,rewardsApr:G,apr:x+G.reduce((F,Z)=>F+Z,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,h;let l=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),d=te.getSqrtPriceX64FromTick(n),m=te.getSqrtPriceX64FromTick(o),p=a?1-s:1+s,y=he(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new Re(new V(y.amount.sub((h=y.fee)!=null?h:pe).toString()).mul(p).toFixed(0)),b;if(l.lte(d))b=t?le.getLiquidityFromTokenAmountA(d,m,f,!a):new Re(0);else if(l.lte(m)){let A=le.getLiquidityFromTokenAmountA(l,m,f,!a),k=le.getLiquidityFromTokenAmountB(d,l,f);b=t?A:k}else b=t?new Re(0):le.getLiquidityFromTokenAmountB(d,m,f);return Le.getAmountsFromLiquidity({epochInfo:c,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 c=te.getSqrtPriceX64FromTick(n),u=te.getSqrtPriceX64FromTick(o),l=a?1+s:1-s,d=le.getAmountsFromLiquidity(te.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),c,u,i,a),[m,p]=[he(d.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),he(d.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[he(d.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),he(d.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:i,amountA:m,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(c=>!n[c.id]).map(c=>new Bt(c.id));(await Tt(e,o)).forEach((c,u)=>{!c||(n[o[u].toBase58()]=In.decode(c.data))});let s=t.map(c=>mt(new Bt(c.programId),new Bt(c.id)).publicKey),a=await Le.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>v(R({},c),{[u.id]:v(R({},n[u.id]),{id:new Bt(u.id),version:6,programId:new Bt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:v(R({},u.config),{id:new Bt(u.config.id),fundOwner:""}),currentPrice:new V(u.price),exBitmapInfo:a[mt(new Bt(u.programId),new Bt(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function fT({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:o,slippage:i,add:s,epochInfo:a,amountHasFee:c}){var A,k,T,I;let[u,l,d,m]=e<t?[e,t,n,o]:[t,e,o,n],p=te.priceToSqrtPriceX64(new V(r.price),r.mintA.decimals,r.mintB.decimals),y=te.getSqrtPriceX64FromTick(u),f=te.getSqrtPriceX64FromTick(l),[b,g]=[he(d,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!c),he(m,(k=r.mintB.extensions)==null?void 0:k.feeConfig,a,!c)],h=le.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((T=b.fee)!=null?T:pe),g.amount.sub((I=g.fee)!=null?I:pe));return le.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:h,slippage:i,add:s,epochInfo:a,amountAddFee:!c})}var ne=class{static mulDivRoundingUp(e,t,n){let o=e.mul(t),i=o.div(n);return o.mod(n).eq(pe)||(i=i.add(dt)),i}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(dt)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ie(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Oo).sub(t).mod(Oo)}};function Ge(r,e){return As(r.mul(e),64,256)}function Cp(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function As(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var te=class{static sqrtPriceX64ToPrice(e,t,n){return ne.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return ne.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,o){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))return e;let i=t.shln(Sr);if(o){let s=i,a=i.add(n.mul(e));return a.gte(s)?ne.mulDivCeil(s,e,a):ne.mulDivRoundingUp(s,dt,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 ne.mulDivCeil(i,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,o){let i=n.shln(Sr);if(o)return e.add(i.div(t));{let s=ne.mulDivRoundingUp(i,dt,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<tt||e>ot)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ie("18445821805675395072"):new ie("18446744073709551616");return(t&2)!=0&&(n=Ge(n,new ie("18444899583751176192"))),(t&4)!=0&&(n=Ge(n,new ie("18443055278223355904"))),(t&8)!=0&&(n=Ge(n,new ie("18439367220385607680"))),(t&16)!=0&&(n=Ge(n,new ie("18431993317065453568"))),(t&32)!=0&&(n=Ge(n,new ie("18417254355718170624"))),(t&64)!=0&&(n=Ge(n,new ie("18387811781193609216"))),(t&128)!=0&&(n=Ge(n,new ie("18329067761203558400"))),(t&256)!=0&&(n=Ge(n,new ie("18212142134806163456"))),(t&512)!=0&&(n=Ge(n,new ie("17980523815641700352"))),(t&1024)!=0&&(n=Ge(n,new ie("17526086738831433728"))),(t&2048)!=0&&(n=Ge(n,new ie("16651378430235570176"))),(t&4096)!=0&&(n=Ge(n,new ie("15030750278694412288"))),(t&8192)!=0&&(n=Ge(n,new ie("12247334978884435968"))),(t&16384)!=0&&(n=Ge(n,new ie("8131365268886854656"))),(t&32768)!=0&&(n=Ge(n,new ie("3584323654725218816"))),(t&65536)!=0&&(n=Ge(n,new ie("696457651848324352"))),(t&131072)!=0&&(n=Ge(n,new ie("26294789957507116"))),(t&262144)!=0&&(n=Ge(n,new ie("37481735321082"))),e>0&&(n=Eu.div(n)),n}static getTickFromPrice(e,t,n){return te.getTickFromSqrtPriceX64(te.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Vt)||e.lt(_t))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ie(t-64),o=Cp(n,32,128),i=new ie("8000000000000000","hex"),s=0,a=new ie(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new ie(0))&&s<vu;){c=c.mul(c);let y=c.shrn(127);c=c.shrn(63+y.toNumber()),a=a.add(i.mul(y)),i=i.shrn(1),s+=1}let u=a.shrn(32),d=o.add(u).mul(new ie(Fu)),m=As(d.sub(new ie(Du)),64,128).toNumber(),p=As(d.add(new ie(Wu)),64,128).toNumber();return m==p?m:te.getSqrtPriceX64FromTick(p).lte(e)?p:m}},xn=class{static getTickWithPriceAndTickspacing(e,t,n,o){let s=te.getTickFromSqrtPriceX64(te.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=xn.getTickWithPriceAndTickspacing(e,t,n,o),s=te.getSqrtPriceX64FromTick(i);return te.sqrtPriceX64ToPrice(s,n,o)}},le=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(pe))throw new Error("sqrtPriceX64A must greater than 0");let i=n.ushln(Sr),s=t.sub(e);return o?ne.mulDivRoundingUp(ne.mulDivCeil(i,s,t),dt,e):ne.mulDivFloor(i,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return o?ne.mulDivCeil(n,t.sub(e),pt):ne.mulDivFloor(n,t.sub(e),pt)}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?ne.mulDivRoundingUp(a,dt,gs):a.shrn(Sr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),ne.mulDivFloor(n,gs,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return le.getLiquidityFromTokenAmountA(t,n,o,!1);if(e.lt(n)){let s=le.getLiquidityFromTokenAmountA(e,n,o,!1),a=le.getLiquidityFromTokenAmountB(t,e,i);return s.lt(a)?s:a}else return le.getLiquidityFromTokenAmountB(t,n,i)}static getAmountsFromLiquidity(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:le.getTokenAmountAFromLiquidity(t,n,o,i),amountB:new ie(0)};if(e.lt(n)){let s=le.getTokenAmountAFromLiquidity(e,n,o,i),a=le.getTokenAmountBFromLiquidity(t,e,o,i);return{amountA:s,amountB:a}}else return{amountA:new ie(0),amountB:le.getTokenAmountBFromLiquidity(t,n,o,i)}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,i,s,a){let{amountA:c,amountB:u}=le.getAmountsFromLiquidity(e,t,n,o,s),l=i?1+a:1-a,d=new ie(new V(c.toString()).mul(l).toFixed(0)),m=new ie(new V(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:o,slippage:i,add:s,epochInfo:a,amountAddFee:c}){var h,A,k,T;let u=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=te.getSqrtPriceX64FromTick(t),d=te.getSqrtPriceX64FromTick(n),m=s?1+i:1-i,p=le.getAmountsFromLiquidity(u,l,d,o,s),[y,f]=[he(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),he(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)],[b,g]=[he(new ie(new V(p.amountA.toString()).mul(m).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),he(new ie(new V(p.amountB.toString()).mul(m).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)];return{liquidity:o,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Ot(y.expirationTime,f.expirationTime)}}},Tn=class{static swapCompute(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f=!1){if(m.eq(pe))throw new Error("amountSpecified must not be 0");if(y||(y=s?_t.add(dt):Vt.sub(dt)),s){if(y.lt(_t))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Vt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let b=m.gt(pe),g={amountSpecifiedRemaining:m,amountCalculated:pe,sqrtPriceX64:d,tick:u>p?Math.min(p+me.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new ie(0)},h=p,A=n[p],k=0,T=!s&&A.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(pe)&&!g.sqrtPriceX64.eq(y);){k>10;let I={};I.sqrtPriceStartX64=g.sqrtPriceX64;let S=j.nextInitTick(A,g.tick,l,s,T),B=S||null,C=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let L=Le.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:G}=Ae(e,t,h);C=G,A=n[h];try{B=j.firstInitializedTick(A,s)}catch{throw Error("not found next tick info")}}I.tickNext=B.tick,I.initialized=B.liquidityGross.gtn(0),p!==h&&C&&(g.accounts.push(C),p=h),I.tickNext<tt?I.tickNext=tt:I.tickNext>ot&&(I.tickNext=ot),I.sqrtPriceNextX64=te.getSqrtPriceX64FromTick(I.tickNext);let x;if(s&&I.sqrtPriceNextX64.lt(y)||!s&&I.sqrtPriceNextX64.gt(y)?x=y:x=I.sqrtPriceNextX64,[g.sqrtPriceX64,I.amountIn,I.amountOut,I.feeAmount]=Tn.swapStepCompute(g.sqrtPriceX64,x,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(I.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(I.amountIn.add(I.feeAmount)),g.amountCalculated=g.amountCalculated.sub(I.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(I.amountOut),g.amountCalculated=g.amountCalculated.add(I.amountIn.add(I.feeAmount))),g.sqrtPriceX64.eq(I.sqrtPriceNextX64)){if(I.initialized){let L=B.liquidityNet;s&&(L=L.mul(Xt)),g.liquidity=le.addDelta(g.liquidity,L)}T=I.tickNext!=g.tick&&!s&&A.startTickIndex===I.tickNext,g.tick=s?I.tickNext-1:I.tickNext}else if(g.sqrtPriceX64!=I.sqrtPriceStartX64){let L=te.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=L!=g.tick&&!s&&A.startTickIndex===L,g.tick=L}++k}try{let{nextStartIndex:I,isExist:S}=me.nextInitializedTickArray(g.tick,l,s,o,i);S&&p!==I&&(g.accounts.push(Ae(e,t,I).publicKey),p=I)}catch{}return{allTrade:!0,amountSpecifiedRemaining:pe,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 ie(0),amountIn:new ie(0),amountOut:new ie(0),feeAmount:new ie(0)},a=e.gte(t),c=o.gte(pe);if(c){let l=ne.mulDivFloor(o,_o.sub(new ie(i.toString())),_o);s.amountIn=a?le.getTokenAmountAFromLiquidity(t,e,n,!0):le.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?le.getTokenAmountBFromLiquidity(t,e,n,!1):le.getTokenAmountAFromLiquidity(e,t,n,!1),o.mul(Xt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromOutput(e,n,o.mul(Xt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=le.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=le.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:le.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:le.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(o.mul(Xt))&&(s.amountOut=o.mul(Xt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=o.sub(s.amountIn):s.feeAmount=ne.mulDivCeil(s.amountIn,new ie(i),_o.sub(new ie(i))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var De=60,kn=512,j=class{static getTickArrayAddressByTick(e,t,n,o){let i=j.getTickArrayStartIndexByTick(n,o),{publicKey:s}=Ae(e,t,i);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=j.getTickArrayStartIndexByTick(e,t),o=Math.floor((e-n)/t);if(o<0||o>=De)throw new Error("tick offset in array overflow");return o}static getTickArrayBitIndex(e,t){let n=me.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)*me.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*De,o=Math.floor(e/n)+512;return Math.abs(o)}static checkTickArrayIsInitialized(e,t,n){let o=n*De,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*De:e+t*De}static mergeTickArrayBitmap(e){let t=new Rp(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*De));return[...j.searchLowBitFromStart(e,t,s-1,i,n),...j.searchHightBitFromStart(e,t,s,i,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return j.searchHightBitFromStart(e,t,0,kn,n)}static getAllInitializedTickArrayInfo(e,t,n,o,i){let s=[],a=j.getAllInitializedTickArrayStartIndex(n,o,i);for(let c of a){let{publicKey:u}=Ae(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>j.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===o)break}let c=me.tickCount(i);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,o,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>j.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===o)break}let c=me.tickCount(i);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<tt||e>ot}static nextInitTick(e,t,n,o,i){if(me.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<De;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=De-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<De;){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=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:o}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),i=xn.getTickWithPriceAndTickspacing(o,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let o=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:o}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),i=xn.getTickWithPriceAndTickspacing(o,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}};var Xu=M([be(8),D("bump"),Nt("index"),K(""),$e("protocolFeeRate"),$e("tradeFeeRate"),Nt("tickSpacing"),U(P(),8,"")]),Lp=M([$e("blockTimestamp"),Q("sqrtPriceX64"),Q("cumulativeTimePriceX64"),U(Q(),1,"")]),Ps=M([be(8),je("initialized"),K("poolId"),U(Lp,1e3,"observations"),U(Q(),5,"")]),Op=M([D("rewardState"),P("openTime"),P("endTime"),P("lastUpdateTime"),Q("emissionsPerSecondX64"),P("rewardTotalEmissioned"),P("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),Q("rewardGrowthGlobalX64")]),In=M([be(8),D("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),D("mintDecimalsA"),D("mintDecimalsB"),Nt("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Qe("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),P("protocolFeesTokenA"),P("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),D("status"),U(D(),7,""),U(Op,3,"rewardInfos"),U(P(),16,"tickArrayBitmap"),P("totalFeesTokenA"),P("totalFeesClaimedTokenA"),P("totalFeesTokenB"),P("totalFeesClaimedTokenB"),P("fundFeesTokenA"),P("fundFeesTokenB"),P("startTime"),U(P(),15*4-3,"padding")]),Np=M([Q("growthInsideLastX64"),P("rewardAmountOwed")]),Vo=M([be(8),D("bump"),K("nftMint"),K("poolId"),Qe("tickLower"),Qe("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),P("tokenFeesOwedA"),P("tokenFeesOwedB"),U(Np,3,"rewardInfos"),U(P(),8,"")]),vT=M([be(8),D("bump"),K("poolId"),Qe("tickLowerIndex"),Qe("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),P("tokenFeesOwedA"),P("tokenFeesOwedB"),U(Q(),3,"rewardGrowthInside"),U(P(),8,"")]),Mp=M([Qe("tick"),Ya("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),U(Q(),3,"rewardGrowthsOutsideX64"),U($e(),13,"")]),Kr=M([be(8),K("poolId"),Qe("startTickIndex"),U(Mp,De,"ticks"),D("initializedTickCount"),U(D(),115,"")]),zu=M([be(329),U(K(),100,"whitelistMints")]),Gu=M([be(8),K("poolId"),U(U(P(),8),ws,"positiveTickArrayBitmap"),U(U(P(),8),ws,"negativeTickArrayBitmap")]);var ju=ce("Raydium_Clmm"),Kt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ke=class{static createPoolInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([Q("sqrtPriceX64"),P("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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...Kt.createPool,...g]);return new St({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:o,mintA:i,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=Je({fromPublicKey:o,programId:n}),[m,p]=[new q(i.address),new q(s.address)],y=[Xn.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ps.span),space:Ps.span,programId:n})],{publicKey:f}=_u(n,a,m,p),{publicKey:b}=bs(n,f,m),{publicKey:g}=bs(n,f,p);return y.push(this.createPoolInstruction(n,f,o,a,d.publicKey,m,b,new q(i.programId||He),p,g,new q(s.programId||He),mt(n,f).publicKey,c,u)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:d.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,A,k,T,I,S,B,C,x){let L=M([Qe("tickLowerIndex"),Qe("tickUpperIndex"),Qe("tickArrayLowerStartIndex"),Qe("tickArrayUpperStartIndex"),Q("liquidity"),P("amountMaxA"),P("amountMaxB"),je("withMetadata"),D("optionBaseFlag"),je("baseFlag")]),G=[...x?[{pubkey:x,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Yu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...G],Z=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:S,amountMaxB:B,withMetadata:C==="create",baseFlag:!1,optionBaseFlag:0},Z);let $=Buffer.from([...Kt.openPosition,...Z]);return new St({keys:F,programId:e,data:$})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let B=hs.generate();d.push(B),y=B.publicKey}let f=j.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=j.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=Ae(m,p,f),{publicKey:h}=Ae(m,p,b),{publicKey:A}=ge(n.wallet,y,He),{publicKey:k}=Lo(y),{publicKey:T}=gt(m,y),{publicKey:I}=hn(m,p,o,i),S=this.openPositionFromLiquidityInstruction(m,n.feePayer,p,n.wallet,y,A,k,I,g,h,T,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,c,u);return{signers:d,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:T,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let B=hs.generate();d.push(B),y=B.publicKey}let f=j.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=j.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=Ae(m,p,f),{publicKey:h}=Ae(m,p,b),{publicKey:A}=ge(n.wallet,y,He),{publicKey:k}=Lo(y),{publicKey:T}=gt(m,y),{publicKey:I}=hn(m,p,o,i),S=this.openPositionFromBaseInstruction(m,n.feePayer,p,n.wallet,y,A,k,I,g,h,T,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,u,s,a,c,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?mt(m,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:T,protocolPosition:I},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,A,k,T,I,S,B,C,x){let L=M([Qe("tickLowerIndex"),Qe("tickUpperIndex"),Qe("tickArrayLowerStartIndex"),Qe("tickArrayUpperStartIndex"),Q("liquidity"),P("amountMaxA"),P("amountMaxB"),je("withMetadata"),D("optionBaseFlag"),je("baseFlag")]),G=[...x?[{pubkey:x,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Yu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...G],Z=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:new Qu(0),amountMaxA:S==="MintA"?B:C,amountMaxB:S==="MintA"?C:B,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},Z);let $=Buffer.from([...Kt.openPosition,...Z]);return new St({keys:F,programId:e,data:$})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new q((await l(1))[0]);else{let B=hs.generate();m.push(B),d=B.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=j.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=j.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=Ae(p,y,f),{publicKey:h}=Ae(p,y,b),{publicKey:A}=ge(n.wallet,d,He),{publicKey:k}=Lo(d),{publicKey:T}=gt(p,d),{publicKey:I}=hn(p,y,o,i),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,d,A,k,I,g,h,T,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,c,u,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?mt(p,y).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:T,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,o,i){let s=M([]),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:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Kt.closePosition,...c]);return new St({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o}){let i=new q(e.programId),{publicKey:s}=ge(n.wallet,o.nftMint,He),{publicKey:a}=gt(i,o.nftMint),c=[];return c.push(this.closePositionInstruction(i,n.wallet,o.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h){let A=M([Q("liquidity"),P("amountMaxA"),P("amountMaxB"),D("optionBaseFlag"),je("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...Kt.increaseLiquidity,...I]);return new St({keys:T,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:s,amountMaxB:a}){let[c,u]=[new q(e.programId),new q(e.id)],l=j.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=j.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Ae(c,u,l),{publicKey:p}=Ae(c,u,d),{publicKey:y}=ge(o.wallet,n.nftMint,He),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(c,o.wallet,y,f,u,b,m,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,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?mt(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:i,baseAmount:s,otherAmountMax:a}){let[c,u]=[new q(e.programId),new q(e.id)],l=j.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=j.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Ae(c,u,l),{publicKey:p}=Ae(c,u,d),{publicKey:y}=ge(o.wallet,n.nftMint,He),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,o.wallet,y,f,u,b,m,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,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?mt(c,u).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h){let A=M([Q("liquidity"),P("amountMaxA"),P("amountMaxB"),D("optionBaseFlag"),je("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],I=Buffer.alloc(A.span);A.encode({liquidity:new Qu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...Kt.increaseLiquidity,...I]);return new St({keys:T,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,A){let k=M([Q("liquidity"),P("amountMinA"),P("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{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:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:Jr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let B=Buffer.from([...Kt.decreaseLiquidity,...S]);return new St({keys:I,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new q(e.programId),new q(e.id)],d=j.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=j.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Ae(u,l,d),{publicKey:y}=Ae(u,l,m),{publicKey:f}=ge(o.wallet,n.nftMint,c),{publicKey:b}=gt(u,n.nftMint),{publicKey:g}=hn(u,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(u,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,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?mt(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g){let h=M([P("amount"),P("otherAmountThreshold"),Q("sqrtPriceLimitX64"),je("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...d.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:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:Jr,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...Kt.swap,...T]);return new St({keys:k,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new q(e.programId),new q(e.id)],[m,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,d,new q(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?m:p,b?p:m,b?y:f,b?f:y,u,n,s,a,c,!0,mt(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,o,i,s,a,c,u,l,d,m){let p=M([P("openTime"),P("endTime"),Q("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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:z(l),endTime:z(d),emissionsPerSecondX64:m},f);let b=Buffer.from([...Kt.initReward,...f]);return new St({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=Vu(i,s,o.mint).publicKey,c=Br(i).publicKey,u=[this.initRewardInstruction(i,n.wallet,s,c,new q(e.config.id),n.tokenAccount,o.programId,o.mint,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,o,i,s,a,c,u,l,d,m){let p=M([D("rewardIndex"),Q("emissionsPerSecondX64"),P("openTime"),P("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:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:z(l),endTime:z(d)},f);let b=Buffer.from([...Kt.setRewardEmissions,...f]);return new St({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,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===o.mint.toString()&&(a=m,c=new q(t.rewardInfos[m].vault),u=new q(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&ju.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Br(i).publicKey,d=[this.setRewardInstruction(i,n.wallet,s,l,new q(e.config.id),n.tokenAccount,c,u,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,o,i,s,a){let c=M([D("rewardIndex")]),u=[{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:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:Jr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...Kt.collectReward,...l]);return new St({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,s]=[new q(e.programId),new q(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,c=new q(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&ju.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(i,n.wallet,s,n.tokenAccount,c,o,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:o,amountOut:i,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new q(e.programId),new q(e.id)],[d,m]=[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(u,n.wallet,l,new q(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?m:d,f?d:m,f?p:y,f?y:p,c,d,i,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as ec}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vp}from"@solana/spl-token";import{PublicKey as Vp}from"@solana/web3.js";import Hu from"bn.js";var Zu=new Hu(25),$u=new Hu(1e4),_p={4:3,5:3};var Ep=ce("Raydium_liquidity_serum");function Ju({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=Vp.createProgramAddressSync(i,r)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:o,nonce:n}}throw Ep.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 Lr from"bn.js";function Is({programId:r}){let{publicKey:e}=ae([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function Bn({name:r,programId:e,marketId:t}){let{publicKey:n}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Fp({programId:r,marketId:e}){let{publicKey:t}=ae([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function xs({programId:r}){return ae([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tc({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:i,quoteDecimals:s,programId:a,marketProgramId:c}){let u=Bn({name:"amm_associated_seed",programId:a,marketId:t}),l=Bn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:d,nonce:m}=xs({programId:a}),p=Bn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Bn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Bn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Fp({programId:a,marketId:t}),g=Bn({name:"target_associated_seed",programId:a,marketId:t}),h=Bn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=Ju({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:i,quoteDecimals:s,lpDecimals:i,version:r,programId:a,authority:d,nonce:m,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:A,lookupTableAccount:ec.default,configId:Is({programId:a})}}var ks;async function bI({connection:r,poolKeysList:e,config:t}){ks||(ks=new qn({connection:r}),await ks.initStableModelLayout());let n=e.map(s=>Ru({poolKeys:s}));return(await Ia(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=xa(s,"GetPoolData"),c=new Lr(Wt(a,"status")),u=Number(Wt(a,"coin_decimals")),l=Number(Wt(a,"pc_decimals")),d=Number(Wt(a,"lp_decimals")),m=new Lr(Wt(a,"pool_coin_amount")),p=new Lr(Wt(a,"pool_pc_amount")),y=new Lr(Wt(a,"pool_lp_supply")),f="0";try{f=Wt(a,"pool_open_time")}catch{}return{status:c,baseDecimals:u,quoteDecimals:l,lpDecimals:d,baseReserve:m,quoteReserve:p,lpSupply:y,startTime:new Lr(f)}})}var Ts={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},nc=r=>{let e={},t=vp.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:bt({address:i,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:bt({address:s,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new V(o.baseReserve.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(o.quoteReserve.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new V(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:Ts,week:Ts,month:Ts,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:ec.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:bt({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())})}}),e};import ut from"bn.js";var Or=class extends Se{constructor(t){super(t);this.stableLayout=new qn({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 ut(new V(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=Ko(t[i?"mintB":"mintA"]),[c,u]=[new ut(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ut(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ut(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.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",c.toString(),"quoteReserve",u.toString());let d=i?"base":"quote";this.logDebug("input side:",d);let m=Fe;s.isZero()||(m=d==="base"?io(s.mul(u),c):io(s.mul(c),u)),this.logDebug("amountRaw:",m.toString(),"lpAmount:",l.toString());let p=io(s.mul(l),d==="base"?c:u);this.logDebug("liquidity:",p.toString());let f=new ve(new ut(1)).add(o).mul(m).quotient,b=new fe(a,m),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,amountInA:o,amountInB:i,fixedSide:s,config:a,txVersion:c,computeBudgetConfig:u}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",i),(o.isZero()||i.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:i.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:m}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[o.token,i.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new Me(n.lpMint.address)}),h=[p,y],A=[f,b],k=[o.raw,i.raw],T=o.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(h.reverse(),A.reverse(),k.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[S,B]=h,[C,x]=A,[L,G]=k,F=await this.getAmmPoolKeys(n.id),Z=this.createTxBuilder(),mn=await l.handleTokenAccount({side:"in",amount:L,mint:S.mint,tokenAccount:C,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:$}=mn,W=Be(mn,["tokenAccount"]);Z.addInstruction(W);let vt=await l.handleTokenAccount({side:"in",amount:G,mint:B.mint,tokenAccount:x,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:ft}=vt,Rn=Be(vt,["tokenAccount"]);Z.addInstruction(Rn);let Ln=await l.handleTokenAccount({side:"out",amount:0,mint:new Me(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:ln}=Ln,Qt=Be(Ln,["tokenAccount"]);return Z.addInstruction(Qt),Z.addInstruction({instructions:[Ku({poolInfo:n,poolKeys:F,userKeys:{baseTokenAccount:$,quoteTokenAccount:ft,lpTokenAccount:ln,owner:this.scope.ownerPubKey},baseAmountIn:L,quoteAmountIn:G,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),Z.addCustomComputeBudget(u),c===0&&await Z.buildV0(),Z.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:o,config:i,txVersion:s,computeBudgetConfig:a}=t,c=await this.getAmmPoolKeys(n.id),[u,l,d]=[new Me(n.mintA.address),new Me(n.mintB.address),new Me(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:m}=this.scope,p=await m.getCreatedTokenAccount({mint:d,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",m.tokenAccounts);let y=await m.getCreatedTokenAccount({mint:u}),f=await m.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:h}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},i),S=await m.handleTokenAccount({side:"out",amount:0,mint:u,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=S,k=Be(S,["tokenAccount"]);b.addInstruction(k);let B=await m.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:T}=B,I=Be(B,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[ps({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:i,farmInfo:s,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:d,tokenProgram:m=Eo,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(u);let g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||ge(this.scope.ownerPubKey,W.accountInfo.mint,Eo).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 ut(0)),k=t.mintA.address===ye.WSOL.mint.toString(),T=t.mintB.address===ye.WSOL.mint.toString(),{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Eo,mint:new Me(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||{}),I===void 0)throw new Error("base token account not found");let{account:B,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Eo,mint:new Me(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(C||{}),B===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=I,g[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let W=yt[s.programId],ft=et({programId:new Me(s.programId),poolId:new Me(s.id),owner:this.scope.ownerPubKey,version:W}),Rn,ln=await this.scope.connection.getAccountInfo(ft);if(ln&&(Rn=Dn(W).decode(ln.data)),W!==6&&!Rn){let{instruction:jt,instructionType:$o}=So({id:new Me(s.id),programId:new Me(s.programId),version:W,ledger:ft,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[jt],instructionTypes:[$o]})}let Qt=[];for(let jt of s.rewardInfos){let $o=jt.mint.address===ye.WSOL.mint.toString();if(g[jt.mint.address])Qt.push(g[jt.mint.address]);else{let{account:Ws,instructionParams:qs}=await this.scope.account.getOrCreateTokenAccount({mint:new Me(jt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!$o,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Ws||this.logAndCreateError("farm reward account not found:",jt.mint.address),qs&&b.addInstruction(qs),Qt.push(Ws)}}let mn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],vt={userAuxiliaryLedgers:d,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:mn,lpAccount:h,rewardAccounts:Qt},Ln=yt[s.programId],Kc=Ln===6?Ar(vt):Ln===5?Pr(vt):hr(vt),Cc={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};b.addInstruction({instructions:[Kc],instructionTypes:[Cc[Ln]]})}let x=await this.getAmmPoolKeys(t.id),L=ps({poolInfo:t,poolKeys:x,userKeys:{lpTokenAccount:h,baseTokenAccount:I,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:A});b.addInstruction({instructions:[L],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]});let[G,F]=t.mintA.address===n.mintA.address?[I,B]:[B,I],Z=await this.scope.clmm.getClmmPoolKeys(t.id),$=await Ke.openPositionFromBaseInstructions(v(R({poolInfo:n,poolKeys:Z,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:G,tokenAccountB:F},withMetadata:"create"},i),{base:c,getEphemeralSigners:y}));return b.addInstruction({instructions:[...$.instructions],signers:$.signers,instructionTypes:[...$.instructionTypes],lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:i,baseAmount:s,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:d=!1,tokenProgram:m,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var G;let b=u.feePayer||((G=this.scope.owner)==null?void 0:G.publicKey),g=u.useSOLBalance&&o.mint.equals(rc),h=u.useSOLBalance&&i.mint.equals(rc),A=this.createTxBuilder(),{account:k,instructionParams:T}=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:d});A.addInstruction(T||{});let{account:I,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:d});if(A.addInstruction(S||{}),k===void 0||I===void 0)throw Error("you don't has some token account");let B=tc({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:i.mint,baseDecimals:o.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),C={programId:t,ammId:B.id,ammAuthority:B.authority,ammOpenOrders:B.openOrders,lpMint:B.lpMint,coinMint:B.baseMint,pcMint:B.quoteMint,coinVault:B.baseVault,pcVault:B.quoteVault,withdrawQueue:B.withdrawQueue,ammTargetOrders:B.targetOrders,poolTempLp:B.lpVault,marketProgramId:B.marketProgramId,marketId:B.marketId,ammConfigId:B.configId,feeDestinationId:y},{instruction:x,instructionType:L}=Cu(v(R({},C),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:I,userLpVault:ge(this.scope.ownerPubKey,B.lpMint,m).publicKey,nonce:B.nonce,openTime:c,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[x],instructionTypes:[L]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:C}})}async getCreatePoolFee({programId:t}){let n=Is({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return Pu.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:i,slippage:s}){let[a,c]=[o.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:u,quoteReserve:l}=t,d=[u,l],m=a==t.mintA.address?"base":"quote";m==="quote"&&d.reverse();let[p,y]=d,f=t.programId===ar.toBase58(),b;if(f)b=new V(y.toString()).div(p.toString());else{let x=xu(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);m==="quote"?b=new V(1e6).div(x*1e6):b=new V(x*1e6).div(1e6)}let g=n,h=new ut(0),A=new ut(0);if(!g.isZero())if(f){A=tn(g.mul(Zu),$u);let x=g.sub(A),L=p.add(x);h=y.mul(x).div(L)}else{A=g.mul(new ut(2)).div(new ut(1e4));let x=g.sub(A);m==="quote"?h=new ut(Tu(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),x.toNumber())):h=new ut(Iu(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),x.toNumber()))}let k=new ut(new V(h.toString()).mul(1-s).toFixed(0)),T=h,I=k,S=new V(h.toString()).div(new V(g.sub(A).toString()).toFixed(0));!g.isZero()&&!h.isZero()&&(S=new V(h.toString()).div(g.sub(A).toString()));let B=b.sub(S).div(b).mul(100);return{amountOut:T,minAmountOut:I,currentPrice:b,executionPrice:S,priceImpact:B,fee:A}}async swap({poolInfo:t,amountIn:n,amountOut:o,inputMint:i,fixedSide:s,txVersion:a,computeBudgetConfig:c}){let u=this.createTxBuilder(),[l,d]=i===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],m=await this.scope.account.getCreatedTokenAccount({mint:new Me(l.address),programId:new Me(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new Me(d.address),programId:new Me(d.programId),associatedOnly:!1}),k=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new Me(l.address),tokenAccount:m,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=k,f=Be(k,["tokenAccount"]);u.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Me(d.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Be(T,["tokenAccount"]);u.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),u.addInstruction({instructions:[Co({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:o,fixedSide:s})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),u.addCustomComputeBudget(c),u.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await qe(this.scope.connection,t.map(l=>({pubkey:new Me(l)})),n),i={},s=[];for(let l=0;l<t.length;l++){let d=o[l];if(d===null||!d.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let m=Ir.decode(d.accountInfo.data);i[String(t[l])]=v(R({},m),{programId:d.accountInfo.owner}),s.push(m.baseVault,m.quoteVault)}let a={},c=await qe(this.scope.connection,s.map(l=>({pubkey:new Me(l)})),n);for(let l=0;l<s.length;l++){let d=c[l].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new ut(Dp.decode(d.data).amount.toString())}let u={};for(let[l,d]of Object.entries(i)){let m=a[d.baseVault.toString()].sub(d.baseNeedTakePnl),p=a[d.quoteVault.toString()].sub(d.quoteNeedTakePnl);u[l]=v(R({},d),{baseReserve:m,quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(d.quoteDecimal.toString())).div(new V(m.toString()).div(new V(10).pow(d.baseDecimal.toString())))})}return u}};import{PublicKey as ue}from"@solana/web3.js";import At from"bn.js";import{TOKEN_PROGRAM_ID as oc}from"@solana/spl-token";var Nr=class extends Se{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)||ue.default,mint1:o,mint2:i,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:d}=e,m=this.createTxBuilder(),[p,y,f]=new At(new ue(o.address).toBuffer()).gt(new At(new ue(i.address).toBuffer()))?[i,o,new V(1).div(a)]:[o,i,a],b=te.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ke.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return m.addInstruction(g),m.addCustomComputeBudget(u),m.versionBuild({txVersion:d,extInfo:{address:v(R({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:c.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:R({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:c.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:[]}},qu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",getEphemeralSigners:m,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===J.toString(),A=n.useSOLBalance&&e.mintB.address===J.toString(),[k,T]=s==="MintA"?[a,c]:[c,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:B,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:u,checkCreateATAOwner:l});B&&(g=B),f.addInstruction(C||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=t||await this.getClmmPoolKeys(e.id),L=await Ke.openPositionFromBaseInstructions({poolInfo:e,poolKeys:x,ownerInfo:v(R({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:d,getEphemeralSigners:m});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:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",txVersion:m,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===J.toBase58(),h=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(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:u,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),B=await Ke.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:o,amountMaxB:i,withMetadata:d,getEphemeralSigners:p});return y.addInstruction(B),y.versionBuild({txVersion:m,extInfo:{address:B.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:o,amountMaxB:i,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});g&&(p=g),m.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});A&&(y=A),m.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ke.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:o,amountMaxB:i});return m.addInstruction(I),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(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:c,checkCreateATAOwner:u});g&&(p=g),m.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(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:c,checkCreateATAOwner:u});A&&(y=A),m.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ke.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:o,baseAmount:i,otherAmountMax:s});return m.addInstruction(I),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:o,amountMinA:i,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let m=this.createTxBuilder(),p=o.useSOLBalance&&t.mintA.address===J.toString(),y=o.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});f=g,h&&m.addInstruction(h);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});b=A,k&&m.addInstruction(k);let T=[];for(let C of t.rewardDefaultInfos){let x=o.useSOLBalance&&C.mint.address===J.toString(),L;if(C.mint.address===t.mintA.address)L=f;else if(C.mint.address===t.mintB.address)L=b;else{let{account:G,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(C.mint.programId),mint:new ue(C.mint.address),notUseTokenAccount:x,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!x,associatedOnly:x?!1:c,checkCreateATAOwner:u});L=G,F&&m.addInstruction(F)}T.push(L)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await Ke.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:i,amountMinB:s});m.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let B=R({},S.address);if(o.closePosition){let C=await Ke.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});m.addInstruction({endInstructions:C.instructions,endInstructionTypes:C.instructionTypes}),B=R(R({},B),C.address)}return m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:B}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),i=await this.getClmmPoolKeys(e.id),s=Ke.closePositionInstructions({poolInfo:e,poolKeys:i,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return o.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.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 c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});m&&c.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ke.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(y),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let c=this.createTxBuilder(),u={};for(let l of n){let d=t.useSOLBalance&&l.mint.address===J.toString(),m=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:i});y&&c.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ke.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:ne.decimalToX64(l.perSecond)}});u=R(R({},u),b.address),c.addInstruction(b)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}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 c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(J),{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});d&&c.addInstruction(d),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Ke.setRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){let c=this.createTxBuilder(),u={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let d=t.useSOLBalance&&l.mint.address===J.toString(),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:i});p&&c.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ke.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:ne.decimalToX64(l.perSecond)}});c.addInstruction(f),u=R(R({},u),f.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}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(),c=t.useSOLBalance&&n.equals(J),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:o,checkCreateATAOwner:i});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),m=Ke.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(m),a.build({address:m.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(J),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:o,checkCreateATAOwner:i});d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),m&&s.addInstruction(m);let p=await this.getClmmPoolKeys(e.id),y=Ke.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardMint:c});s.addInstruction(y),a=R(R({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:o,priceLimit:i,observationId:s,ownerInfo:a,remainingAccounts:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,txVersion:d}){let m=this.createTxBuilder(),p=t.toString()===e.mintA.address,y=a.useSOLBalance&&e.mintA.address===J.toBase58(),f=a.useSOLBalance&&e.mintB.address===J.toBase58(),b;!i||i.equals(new V(0))?b=p?_t.add(new At(1)):Vt.sub(new At(1)):b=te.priceToSqrtPriceX64(i,e.mintA.decimals,e.mintB.decimals);let g;if(!g){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:y||!p?{payer:a.feePayer||this.scope.ownerPubKey,amount:y?n:0}:void 0,associatedOnly:y?!1:u,checkCreateATAOwner:l});g=k,T&&m.addInstruction(T)}let h;if(!h){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||p?{payer:a.feePayer||this.scope.ownerPubKey,amount:p?0:n}:void 0,associatedOnly:f?!1:u,checkCreateATAOwner:l});h=k,T&&m.addInstruction(T)}(!g||!h)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let A=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ke.makeSwapBaseInInstructions({poolInfo:e,poolKeys:A,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:h},inputMint:new ue(t),amountIn:n,amountOutMin:o,sqrtPriceLimitX64:b,remainingAccounts:c})),m.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let d of this.scope.account.tokenAccountRawInfos)o?ge(this.scope.ownerPubKey,d.accountInfo.mint,s).publicKey.equals(d.pubkey)&&(u[d.accountInfo.mint.toString()]=d.pubkey):u[d.accountInfo.mint.toString()]=d.pubkey;let l=this.createTxBuilder();for(let d of Object.values(e)){if(t[d.id]===void 0||!t[d.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(k=>!k.rewardAmountOwed.isZero())))continue;let m=d,p=n.useSOLBalance&&m.mintA.address===J.toString(),y=n.useSOLBalance&&m.mintB.address===J.toString(),f=u[m.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintA.programId,mint:new ue(m.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=u[m.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintB.programId,mint:new ue(m.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)}u[m.mintA.address]=f,u[m.mintB.address]=b;let g=[];for(let A of m.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===J.toString(),T=u[A.mint.address];if(!T){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(A.mint.programId),mint:new ue(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:o});T=I,S&&l.addInstruction(S)}u[A.mint.address]=T,g.push(T)}let h=await this.getClmmPoolKeys(m.id);for(let A of t[d.id]){let k=Ke.decreaseLiquidityInstructions({poolInfo:m,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new At(0),amountMinA:new At(0),amountMinB:new At(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Br(e).publicKey);return t?zu.decode(t.data).whitelistMints.filter(o=>!o.equals(ue.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new At(1))).map(s=>gt(new ue(e),s.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(s=>{if(!s)return;let a=Vo.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 qe(this.scope.connection,e.map(i=>({pubkey:new ue(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=In.decode(s.accountInfo.data),c=te.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=v(R({},a),{currentPrice:c,programId:s.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),o=await qe(this.scope.connection,Array.from(n).map(c=>({pubkey:new ue(c)}))),i={};o.forEach(c=>{!c.accountInfo||(i[c.pubkey.toBase58()]=Xu.decode(c.accountInfo.data))});let s=await Le.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var d,m,p,y;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:bt({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||oc.toBase58(),extensions:{feeConfig:(d=t[u])!=null&&d.feeConfig?Wn((m=t[u])==null?void 0:m.feeConfig):void 0}}),mintB:bt({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||oc.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Wn((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[c].currentPrice,config:v(R({},i[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Le.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as zo,TOKEN_PROGRAM_ID as cn,AccountLayout as tf}from"@solana/spl-token";import sc from"bn.js";var Bs=new sc(1e6);function Wp(r,e,t){return r.mul(e).add(t).sub(new sc(1)).div(t)}function ic(r,e,t){return r.mul(e).div(t)}var vo=class{static tradingFee(e,t){return Wp(e,t,Bs)}static protocolFee(e,t){return ic(e,t,Bs)}static fundFee(e,t){return ic(e,t,Bs)}};import Mr from"bn.js";function Fo(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function qp(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=Fo(r,e);return n.gt(zn)&&(t=t.add(new Mr(1)),e=r.div(t),n=Fo(r,t),n.gt(zn)&&(e=e.add(new Mr(1)))),[t,e]}var zn=new Mr(0),Do=class{static swapWithoutFees(e,t,n){let o=t.mul(n),i=t.add(e),[s,a]=qp(o,i),c=a.sub(t),u=n.sub(s);if(u.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:c,destinationAmountSwapped:u}}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 Fo(e.mul(n),t).gt(zn)&&s.gt(zn)&&(s=s.add(new Mr(1))),Fo(e.mul(o),t).gt(zn)&&a.gt(zn)&&(a=a.add(new Mr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var ac=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(ac||{}),Wo=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=vo.tradingFee(e,o),s=e.sub(i),{sourceAmountSwapped:a,destinationAmountSwapped:c}=Do.swapWithoutFees(s,t,n),u=a.add(i);return{newSwapSourceAmount:t.add(u),newSwapDestinationAmount:n.sub(c),sourceAmountSwapped:u,destinationAmountSwapped:c,tradeFee:i}}};var Up=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Gp=Buffer.from("amm_config","utf8"),Xp=Buffer.from("pool","utf8"),zp=Buffer.from("pool_lp_mint","utf8"),Yp=Buffer.from("pool_vault","utf8"),Qp=Buffer.from("observation","utf8");function _r(r){return ae([Up],r)}function jp(r,e){return ae([Gp,$p(e)],r)}function Hp(r,e,t,n){return ae([Xp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Zp(r,e){return ae([zp,e.toBuffer()],r)}function uc(r,e,t){return ae([Yp,e.toBuffer(),t.toBuffer()],r)}function qo(r,e){return ae([Qp,e.toBuffer()],r)}function $p(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function cc({programId:r,mintA:e,mintB:t}){let n=jp(r,0).publicKey,o=_r(r).publicKey,i=Hp(r,n,e,t).publicKey,s=Zp(r,i).publicKey,a=uc(r,i,e).publicKey,c=uc(r,i,t).publicKey,u=qo(r,i).publicKey;return{poolId:i,configId:n,authority:o,lpMint:s,vaultA:a,vaultB:c,observationId:u}}import{TransactionInstruction as Vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ss,TOKEN_2022_PROGRAM_ID as lc,ASSOCIATED_TOKEN_PROGRAM_ID as Jp}from"@solana/spl-token";var ef=ce("Raydium_cpmm"),Er={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 mc(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,A){let k=M([P("amountMaxA"),P("amountMaxB"),P("openTime")]),T=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Jp,isSigner:!1,isWritable:!1},{pubkey:no,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],I=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},I),new Vr({keys:T,programId:r,data:Buffer.from([...Er.initialize,...I])})}function dc(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([P("lpAmount"),P("amountMaxA"),P("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:c,isSigner:!1,isWritable:!0},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:lc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return ef.debug("cpmm deposit data",{lpAmount:m.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:m,amountMaxA:p,amountMaxB:y},g),new Vr({keys:b,programId:r,data:Buffer.from([...Er.deposit,...g])})}function pc(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([P("lpAmount"),P("amountMinA"),P("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:c,isSigner:!1,isWritable:!0},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:lc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:eo,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:m,amountMinA:p,amountMinB:y},g),new Vr({keys:b,programId:r,data:Buffer.from([...Er.withdraw,...g])})}function Uo(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y,f){let b=M([P("amountIn"),P("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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Vr({keys:g,programId:r,data:Buffer.from([...Er.swapBaseInput,...h])})}function Go(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y,f){let b=M([P("amountInMax"),P("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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Vr({keys:g,programId:r,data:Buffer.from([...Er.swapBaseOutput,...h])})}import Xe from"bn.js";var fc=M([be(8),D("bump"),je("disableCreatePool"),Nt("index"),P("tradeFeeRate"),P("protocolFeeRate"),P("fundFeeRate"),P("createPoolFee"),K("protocolOwner"),K("fundOwner"),U(P(),16)]),Xo=M([be(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"),P("lpAmount"),P("protocolFeesMintA"),P("protocolFeesMintB"),P("fundFeesMintA"),P("fundFeesMintB"),P("openTime"),U(P(),32)]);var vr=class extends Se{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 qe(this.scope.connection,e.map(d=>({pubkey:new Y(d)}))),o={},i=new Set,s=[];for(let d=0;d<e.length;d++){let m=n[d];if(m.accountInfo===null)throw Error("fetch pool info error: "+String(e[d]));let p=Xo.decode(m.accountInfo.data);o[String(e[d])]=v(R({},p),{programId:m.accountInfo.owner}),i.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let d=[...i],m=await qe(this.scope.connection,d.map(p=>({pubkey:new Y(p)})));for(let p=0;p<d.length;p++){let y=m[p].accountInfo;if(y===null)throw Error("fetch pool config error: "+d[p]);a[d[p]]=fc.decode(y.data)}}let c={},u=await qe(this.scope.connection,s.map(d=>({pubkey:new Y(d)})));for(let d=0;d<s.length;d++){let m=u[d].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[d]);c[String(s[d])]=new Xe(tf.decode(m.data).amount.toString())}let l={};for(let[d,m]of Object.entries(o)){let p=c[m.vaultA.toString()].sub(m.protocolFeesMintA).sub(m.fundFeesMintA),y=c[m.vaultB.toString()].sub(m.protocolFeesMintB).sub(m.fundFeesMintB);l[d]=v(R({},m),{baseReserve:p,quoteReserve:y,configInfo:a[m.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(m.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(m.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,o)=>{var c,u,l,d;let i=e[o],[s,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return v(R({},n),{[o]:v(R({},i),{id:new Y(o),configInfo:i.configInfo,version:7,authority:_r(i.programId).publicKey,mintA:bt({address:s,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?Wn((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:bt({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?Wn((d=t[a])==null?void 0:d.feeConfig):void 0}})})})},{})}async createPool(l){var d=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:o,associatedOnly:i=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:c}=d,u=Be(d,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var G,F,Z;let m=o.feePayer||((G=this.scope.owner)==null?void 0:G.publicKey),p=new Xe(new Y(u.mintA.address).toBuffer()).lte(new Xe(new Y(u.mintB.address).toBuffer())),[y,f]=p?[u.mintA,u.mintB]:[u.mintB,u.mintA],[b,g]=p?[u.mintAAmount,u.mintBAmount]:[u.mintBAmount,u.mintAAmount],h=o.useSOLBalance&&y.address===zo.toBase58(),A=o.useSOLBalance&&f.address===zo.toBase58(),[k,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:m,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:i,checkCreateATAOwner:s});I.addInstruction(B||{});let{account:C,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:m,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:i,checkCreateATAOwner:s});if(I.addInstruction(x||{}),S===void 0||C===void 0)throw Error("you don't has some token account");let L=cc({programId:e,mintA:k,mintB:T});return I.addInstruction({instructions:[mc(e,this.scope.ownerPubKey,L.configId,L.authority,L.poolId,k,T,L.lpMint,S,C,ge(this.scope.ownerPubKey,L.lpMint).publicKey,L.vaultA,L.vaultB,t,new Y((F=y.programId)!=null?F:cn),new Y((Z=f.programId)!=null?Z:cn),L.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),I.addCustomComputeBudget(c),I.versionBuild({txVersion:a,extInfo:{address:v(R({},L),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:o,slippage:i,computeResult:s,computeBudgetConfig:a,config:c,txVersion:u}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:m}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),p=s?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:v(R({},t),{lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new ve(0),baseIn:o,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(o?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===zo.toString(),A=t.mintB.address===zo.toString(),k=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(o?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:o?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:m});k.addInstruction(B||{});let{account:C,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(o?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:o?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:m});k.addInstruction(x||{}),!S&&!C&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let L=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),W=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:L,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:G}=W,F=Be(W,["tokenAccount"]);k.addInstruction(F);let Z=await this.getCpmmPoolKeys(t.id),$=new ve(new Xe(1)).sub(i);return k.addInstruction({instructions:[dc(new Y(t.programId),this.scope.ownerPubKey,new Y(Z.authority),new Y(t.id),G,S,C,new Y(Z.vault.A),new Y(Z.vault.B),T,I,new Y(t.lpMint.address),s?s==null?void 0:s.liquidity:$.mul(y).quotient,o?f.amount:g,o?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:[]}),k.addCustomComputeBudget(a),k.versionBuild({txVersion:u})}async withdrawLiquidity(e){var G,F;let{poolInfo:t,lpAmount:n,slippage:o,computeBudgetConfig:i,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new Xe(1)).sub(o),c=await this.getRpcPoolInfo(t.id),[u,l]=[a.mul(n.mul(c.baseReserve).div(c.lpAmount)).quotient,a.mul(n.mul(c.quoteReserve).div(c.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[m,p]=[he(u,t.mintA.extensions.feeConfig,d,!0),he(l,t.mintB.extensions.feeConfig,d,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],h=b.equals(J),A=g.equals(J),k,T,{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});k=I,S&&f.addInstruction(S);let{account:B,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=B,C&&f.addInstruction(C),(!k||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let x=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});x||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let L=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[pc(new Y(t.programId),this.scope.ownerPubKey,new Y(L.authority),new Y(t.id),x,k,T,new Y(L.vault.A),new Y(L.vault.B),b,g,new Y(t.lpMint.address),n,u.sub((G=m.fee)!=null?G:new Xe(0)),l.sub((F=p.fee)!=null?F:new Xe(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]}),f.addCustomComputeBudget(i),f.versionBuild({txVersion:s})}async swap(e){var I,S,B,C,x,L;let{poolInfo:t,baseIn:n,swapResult:o,slippage:i=0,config:s,computeBudgetConfig:a,txVersion:c}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:l,associatedOnly:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},s),m=this.createTxBuilder(),[p,y]=[new Y(t.mintA.address),new Y(t.mintB.address)];o.destinationAmountSwapped=o.destinationAmountSwapped.mul(new Xe((1-i)*1e4)).div(new Xe(1e4));let f=t.mintA.address===J.toBase58(),b=t.mintB.address===J.toBase58(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:p,tokenProgram:new Y((I=t.mintA.programId)!=null?I:cn),owner:this.scope.ownerPubKey,createInfo:f||!n?{payer:this.scope.ownerPubKey,amount:n?o.sourceAmountSwapped:0}:void 0,notUseTokenAccount:f,skipCloseAccount:!f,associatedOnly:f?!1:d,checkCreateATAOwner:l});h&&m.addInstruction(h);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:y,tokenProgram:new Y((S=t.mintB.programId)!=null?S:cn),owner:this.scope.ownerPubKey,createInfo:b||n?{payer:this.scope.ownerPubKey,amount:n?0:o.sourceAmountSwapped}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:d,checkCreateATAOwner:l});k&&m.addInstruction(k),!g&&!A&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?Uo(new Y(t.programId),this.scope.ownerPubKey,new Y(T.authority),new Y(T.config.id),new Y(t.id),g,A,new Y(T.vault.A),new Y(T.vault.B),new Y((B=t.mintA.programId)!=null?B:cn),new Y((C=t.mintB.programId)!=null?C:cn),p,y,qo(new Y(t.programId),new Y(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped):Go(new Y(t.programId),this.scope.ownerPubKey,new Y(T.authority),new Y(T.config.id),new Y(t.id),A,g,new Y(T.vault.B),new Y(T.vault.A),new Y((x=t.mintB.programId)!=null?x:cn),new Y((L=t.mintA.programId)!=null?L:cn),y,p,qo(new Y(t.programId),new Y(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:c})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:o}){let i=n.toString()===e.mintB.address,s=Wo.swap(t,i?e.baseReserve:e.quoteReserve,i?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new V(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new Xe((1-o)*1e4)).div(new Xe(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:c,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,T,I,S,B,C;let c=1-Number(i.toSignificant())/100,u=new Xe(new V(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=he(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),d=u.sub((h=l.fee)!=null?h:new Xe(0)),m=new Xe(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.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=d.mul(m).div(p==="base"?t:n),f={amount:Fe,fee:void 0,expirationTime:void 0};if(!d.isZero()){let x=nf(y,t,n,m);this.logDebug("lpAmountData:",{amountA:x.amountA.toString(),amountB:x.amountB.toString()}),f=he(x[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new ve(new Xe(1)).add(i),g=he(b.mul(f.amount.sub((T=f.fee)!=null?T:new Xe(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(I=f.fee)==null?void 0:I.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(C=(B=g.fee)==null?void 0:B.toString())!=null?C:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function nf(r,e,t,n){let o=r.mul(e).div(n);!o.isZero()&&!r.mul(e).mod(n).isZero()&&(o=o.add(new Xe(1)));let i=r.mul(t).div(n);return!i.isZero()&&!r.mul(t).mod(n).isZero()&&(i=i.add(new Xe(1))),{amountA:o,amountB:i}}import{PublicKey as Kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oe,TOKEN_2022_PROGRAM_ID as Os,createTransferInstruction as Pc}from"@solana/spl-token";import jo from"bn.js";import{TOKEN_PROGRAM_ID as Ks,TOKEN_2022_PROGRAM_ID as rf,ASSOCIATED_TOKEN_PROGRAM_ID as of}from"@solana/spl-token";import{PublicKey as X,TransactionInstruction as Cs,SystemProgram as Rs}from"@solana/web3.js";import Sn from"bn.js";function GB(r,e,t,n,o,i,s,a,c,u,l,d){let m=M([D("instruction"),P("amountIn"),P("amountOut")]),p=[{pubkey:Rs.programId,isSigner:!1,isWritable:!1},{pubkey:Ks,isSigner:!1,isWritable:!1},{pubkey:new X(t.programId),isSigner:!1,isWritable:!1},{pubkey:new X(t.id),isSigner:!1,isWritable:!0},{pubkey:new X(n.id),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=Ie(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...d.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(m.span);return m.encode({instruction:4,amountIn:u,amountOut:l},y),new Cs({keys:p,programId:r,data:y})}function XB(r,e,t,n,o,i,s,a,c,u){let l=M([D("instruction")]),d=[{pubkey:Rs.programId,isSigner:!1,isWritable:!1},{pubkey:Ks,isSigner:!1,isWritable:!1},{pubkey:new X(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new X(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new X(String(t.id)),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=Ie(n);d.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...u.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=Ie(n);d.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=Ie(n);d.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let m=Buffer.alloc(l.span);return l.encode({instruction:5},m),new Cs({keys:d,programId:r,data:m})}function sf(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){var I;let f=[],b=[w({pubkey:Ks,isWritable:!1}),w({pubkey:rf,isWritable:!1}),w({pubkey:of,isWritable:!1}),w({pubkey:Rs.programId,isWritable:!1}),w({pubkey:e,isSigner:!0})];b.push(w({pubkey:t})),b.push(w({pubkey:o}));let g=[c,u],h=[l,d],A=[i,s,a];for(let S=0;S<g.length;S++){let B=g[S],C=A[S]===B.mintA.address;if(b.push(w({pubkey:new X(B.programId),isWritable:!1})),S===g.length-1?b.push(w({pubkey:o})):b.push(w({pubkey:n})),b.push(w({pubkey:new X(A[S])})),b.push(w({pubkey:new X(A[S+1])})),B.version===6){let x=h[S];b.push(w({pubkey:new X(x.config.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(C?x.vault.A:x.vault.B)})),b.push(w({pubkey:new X(C?x.vault.B:x.vault.A)})),b.push(w({pubkey:new X(B.observationId)})),b.push(w({pubkey:eo})),b.push(w({pubkey:mt(new X(B.programId),new X(B.id)).publicKey})),f.push(af(B.sqrtPriceX64.toString(),C));for(let L of(I=y[S])!=null?I:[])b.push(w({pubkey:new X(L)}))}else if(B.version===5){let x=h[S];b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.authority),isWritable:!1})),b.push(w({pubkey:new X(x.marketProgramId)})),b.push(w({pubkey:new X(x.marketAuthority)})),b.push(w({pubkey:Na,isWritable:!1})),b.push(w({pubkey:new X(x.openOrders)})),b.push(w({pubkey:new X(x.vault.A)})),b.push(w({pubkey:new X(x.vault.B)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.marketId)})),b.push(w({pubkey:new X(x.marketBids)})),b.push(w({pubkey:new X(x.marketAsks)})),b.push(w({pubkey:new X(x.marketEventQueue)})),b.push(w({pubkey:new X(x.marketBaseVault)})),b.push(w({pubkey:new X(x.marketQuoteVault)}))}else if(B.version===4){let x=h[S],L=B.status!==1;b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.authority),isWritable:!1})),b.push(w({pubkey:new X(L?x.id:x.marketProgramId)})),b.push(w({pubkey:new X(L?x.id:x.marketAuthority)})),b.push(w({pubkey:new X(L?x.id:x.openOrders)})),b.push(w({pubkey:new X(x.vault.A)})),b.push(w({pubkey:new X(x.vault.B)})),b.push(w({pubkey:new X(L?x.id:x.marketId)})),b.push(w({pubkey:new X(L?x.id:x.marketBids)})),b.push(w({pubkey:new X(L?x.id:x.marketAsks)})),b.push(w({pubkey:new X(L?x.id:x.marketEventQueue)})),b.push(w({pubkey:new X(L?x.id:x.marketBaseVault)})),b.push(w({pubkey:new X(L?x.id:x.marketQuoteVault)}))}else if(B.version===7){let x=h[S];b.push(w({pubkey:new X(x.authority)})),b.push(w({pubkey:new X(x.config.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(C?x.vault.A:x.vault.B)})),b.push(w({pubkey:new X(C?x.vault.B:x.vault.A)})),b.push(w({pubkey:new X(B.observationId)}))}else throw Error("pool type error")}let k=M([D("insId"),P("amountIn"),P("amountOut"),U(Q(),f.length,"clmmPriceLimit")]),T=Buffer.alloc(k.span);return k.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},T),new Cs({keys:b,programId:r,data:T})}function af(r,e){if(r)if(e){let t=new Sn(r).div(new Sn(25));return t.gt(No)?t:No}else{let t=new Sn(r).mul(new Sn(25));return t.lt(Mo)?t:Mo}else return e?No:Mo}function yc({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var o,i,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],m=Ie(d),p=t.equals(m.mintA.address)?_t.add(dt):Vt.sub(dt);return Ke.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.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 Sn(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[m?Uo(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,d.vaultA,d.vaultB,d.mintProgramA,d.mintProgramA,new X(d.mintA.address),new X(d.mintB.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):Go(d.programId,e.wallet,d.authority,d.configId,d.id,e.destinationToken,e.sourceToken,d.vaultB,d.vaultA,d.mintProgramB,d.mintProgramA,new X(d.mintB.address),new X(d.mintA.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[Co({poolKeys:d,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((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Sn(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],m=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:[sf(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,m,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Sn(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var bc={[yo.toBase58()]:3},gc={3:yo};var Ls=M([be(5),be(8),K("ownAddress"),P("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),P("baseDepositsTotal"),P("baseFeesAccrued"),K("quoteVault"),P("quoteDepositsTotal"),P("quoteFeesAccrued"),P("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),P("baseLotSize"),P("quoteLotSize"),P("feeRateBps"),P("referrerRebatesAccrued"),be(7)]),wc={3:Ls};import{PublicKey as Ac}from"@solana/web3.js";var Yo=ce("Serum"),Qo=class{static getProgramId(e){let t=gc[e];return t||Yo.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=bc[t];return n||Yo.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=wc[e];return t||Yo.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=Ac.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;o++;continue}return{publicKey:i,nonce:o}}return Yo.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ac.default,nonce:o}}};var Yt=new jo(0),Fr=class extends Se{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(J));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:o=1}=e,i=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=z(t);for(let u=0;u<i.length;u++)c.gte(i[u].amount)?(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(i[u].amount)):(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),mr({destination:a.addresses.newAccount,source:i[u].publicKey,amount:c,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 Ut({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:[mr({destination:o[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Mt({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(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(J),d=u.amount.token.mint.equals(J),m=c.amount.token.mint,p=u.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Os:Oe,mint:m,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.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,u.amount.token.isToken2022?Os:Oe);d&&a.addInstruction({endInstructions:[Mt({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Oe})],endInstructionTypes:[E.CloseAccount]});let g;if(e.routeType==="route"){let k=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(k.mint,k.isToken2022?Os:Oe)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),A=yc({routeProgram:i,inputMint:m,swapInfo:v(R({},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:[Pc(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]}),k.addInstruction(A);let{transactions:T}=s===0?await k.sizeCheckBuildV0():await k.sizeCheckBuild();T.length<2&&a.addInstruction({instructions:[Pc(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.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=ar,clmm:n=xi,cpmm:o=Bi}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Ir.offsetOf("baseMint"),length:64}}),s=M([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})),c=M([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:In.span}],dataSlice:{offset:In.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),m=(await this.scope.connection.getProgramAccounts(o,{dataSlice:{offset:Xo.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:o,cpmmPools:i}){e=e.toString()===Kn.default.toString()?J:e,t=t.toString()===Kn.default.toString()?J:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}}let d=[];for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,d.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of i)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let p=l[m];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?c[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?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}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=nc(i),a={};Object.values(s).forEach(f=>{o.delete(f.mintA.address),a[f.mintA.address]={address:new Kn(f.mintA.address),programId:Oe,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 Kn(f.mintB.address),programId:Oe,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 c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Oe)?(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(Oe)?(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 u=await Sa({connection:this.scope.connection,mints:Array.from(o).map(f=>new Kn(f))});a=R(R({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>v(R({},f),{[b]:v(R({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:s,clmmPoolsRpcInfo:d,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:i,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,h,A,k,T,I,S,B,C;let d=l===void 0?new jo(0):e.raw.mul(new jo(l.feeBps.toNumber())).div(new jo(1e4)),m=e.raw.sub(d),p=new fe(e.token,m),y=l===void 0?void 0:{feeAmount:d,feeAccount:l.feeAccount},f=v(R({},t),{address:ct(t.address).toString()}),b=[];for(let x of n)try{b.push(v(R({},this.computeAmountOut({itemPool:x,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(L){this.logDebug("direct error",x.version,x.id.toString(),L.message)}this.logDebug("direct done");for(let[x,L]of Object.entries(o)){let G={chainId:101,address:x,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},F=L.in.map($=>{try{return{pool:$,data:this.computeAmountOut({itemPool:$,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:G,amountIn:p})}}catch(W){this.logDebug("route in error",$.version,$.id.toString(),W.message);return}}).sort(($,W)=>{var ln,Qt,mn,vt;let ft=$===void 0?Yt:$.data.amountOut.amount.raw.sub((Qt=(ln=$.data.amountOut.fee)==null?void 0:ln.raw)!=null?Qt:Yt),Rn=W===void 0?Yt:W.data.amountOut.amount.raw.sub((vt=(mn=W.data.amountOut.fee)==null?void 0:mn.raw)!=null?vt:Yt);return ft.lt(Rn)?1:-1})[0];if(F===void 0)continue;let Z=new fe(Ko(G),F.data.amountOut.amount.raw.sub((h=(g=F.data.amountOut.fee)==null?void 0:g.raw)!=null?h:Yt));for(let $ of L.out)try{let W=this.computeAmountOut({itemPool:$,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:Z});b.push(v(R({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new We({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:Yt)}).toFixed()),priceImpact:new V(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,$],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(T=W.amountOut.fee)!=null&&T.raw?new fe(F.data.amountOut.amount.token,((S=(I=F.data.amountOut.fee)==null?void 0:I.raw)!=null?S:Yt).add((C=(B=W.amountOut.fee)==null?void 0:B.raw)!=null?C:Yt)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:Ot(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",$.version,$.id.toString(),W.message)}}return b.filter(x=>x.allTrade).sort((x,L)=>x.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(Yt)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:d,minAmountOut:m,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:h,executionPriceX64:A}=Le.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:i,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:d,minAmountOut:m,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(b.toFixed()),fee:[g],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:s,clmmExPriceX64:[A],expirationTime:Ot(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:d,minAmountOut:m,priceImpact:p,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Tr(v(R({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Tr(v(R({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new fe(c.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:u,minAmountOut:l,currentPrice:d,executionPrice:m,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Tr(v(R({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Tr(v(R({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:d,executionPrice:m,priceImpact:p,fee:[new fe(c.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(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(o.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(o));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await qe(this.scope.connection,Array.from(s).map(l=>({pubkey:new Kn(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Ls.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Qo.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:v(R({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=R({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:xs({programId:new Kn(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(d)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:_r(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:bt({address:u.mintLp.toBase58(),programId:Oe.toBase58(),decimals:u.lpDecimals}),config:v(R({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};import{TOKEN_PROGRAM_ID as uf}from"@solana/spl-token";import{PublicKey as cf,Transaction as Ns,TransactionInstruction as lf}from"@solana/web3.js";import hc from"bn.js";var nt=class extends Se{static getPdaPoolId(e,t){return ae([nt.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return ae([nt.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new hc(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=>nt.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<nt.VERSION_PROJECT.length;l++)a.push(...s.map(d=>nt.getPdaOwnerId(t,d,o,l).publicKey));let c=await Tt(e,[...s,...a]),u=[];for(let l=0;l<c.length;l++){let d=Math.floor(l/n.length),m=l%n.length,p=s[m],y=a[l],f=c[m],b=c[n.length+l];if(!(f&&b)||f.data.length!==nt.POOL_LAYOUT.span||b.data.length!==nt.OWNER_LAYOUT.span)continue;let g=nt.POOL_LAYOUT.decode(f.data),h=nt.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),T=h.tokenInfo.map(B=>B.debtAmount.gt(new hc(0))).filter(B=>!B).length!==3,I=i>A&&i<k&&g.status===1,S=T&&I;u.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:nt.VERSION_PROJECT[d],openTime:A,endTime:k,canClaim:S,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((B,C)=>({mintAddress:B.mintAddress,mintVault:B.mintVault,mintDecimals:B.mintDecimals,perLpLoss:B.perLpLoss,debtAmount:h.tokenInfo[C].debtAmount.add(h.tokenInfo[C].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,i=[];for(let c of e.tokenInfo){let{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!c.mintAddress.equals(ye.WSOL.mint),associatedOnly:c.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),i.push(u)}n.addInstruction({instructions:[nt.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 u of e){let l=[];for(let d of u.tokenInfo){let{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!d.mintAddress.equals(ye.WSOL.mint),associatedOnly:d.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),m&&(i[d.mintAddress.toString()]=m,l.push(m))}n.addInstruction({instructions:[nt.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:o,ownerPda:u.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),c=n.allInstructions;return lo(c,[o,...a.map(u=>u.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Ns().add(...c.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Ns().add(...c.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ns().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=M([]),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(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:uf,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 lf({keys:i,programId:e,data:a})}},Pt=nt;Pt.CLAIMED_NUM=3,Pt.POOL_LAYOUT=M([be(8),D("bump"),D("status"),P("openTime"),P("endTime"),K("ammId"),U(M([D("mintDecimals"),K("mintAddress"),K("mintVault"),P("perLpLoss"),P("totalClaimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),U(P(),10,"padding")]),Pt.OWNER_LAYOUT=M([be(8),D("bump"),D("version"),K("poolId"),K("owner"),P("lpAmount"),U(M([K("mintAddress"),P("debtAmount"),P("claimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),U(P(),4,"padding")]),Pt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cf(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 Dr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bc}from"@solana/spl-token";import Wr from"bn.js";import{TransactionInstruction as df,SYSVAR_RENT_PUBKEY as pf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kc}from"@solana/spl-token";import{createInitializeAccountInstruction as Tc}from"@solana/spl-token";import{SystemProgram as Cn,Transaction as Ic}from"@solana/web3.js";function mf(r="accountFlags"){let e=new Po(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 Ms=M([be(5),mf("accountFlags"),K("ownAddress"),P("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),P("baseDepositsTotal"),P("baseFeesAccrued"),K("quoteVault"),P("quoteDepositsTotal"),P("quoteFeesAccrued"),P("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),P("baseLotSize"),P("quoteLotSize"),P("feeRateBps"),P("referrerRebatesAccrued"),be(7)]);function ff({programId:r,marketInfo:e}){let t=M([D("version"),$e("instruction"),P("baseLotSize"),P("quoteLotSize"),Nt("feeRateBps"),P("vaultSignerNonce"),P("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:pf,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 df({keys:n,programId:r,data:o})}async function xc({connection:r,wallet:e,marketInfo:t}){let n=new Ic,o=await r.getMinimumBalanceForRentExemption(165);n.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:kc}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:kc}),Tc(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Tc(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let i=new Ic;return i.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Ms.span),space:Ms.span,programId:t.programId}),Cn.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}),Cn.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}),Cn.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}),Cn.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}),ff({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:i,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var Yn=class extends Se{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:o,dexProgramId:i,txVersion:s,computeBudgetConfig:a}){let c=this.scope.ownerPubKey,u=Je({fromPublicKey:c,programId:i}),l=Je({fromPublicKey:c,programId:i}),d=Je({fromPublicKey:c,programId:i}),m=Je({fromPublicKey:c,programId:i}),p=Je({fromPublicKey:c,programId:i}),y=Je({fromPublicKey:c,programId:Bc}),f=Je({fromPublicKey:c,programId:Bc}),b=0,g=new Wr(100);function h(){let C=new Wr(0);for(;;)try{return{vaultOwner:Dr.createProgramAddressSync([u.publicKey.toBuffer(),C.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:C}}catch{if(C.iaddn(1),C.gt(new Wr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),T=new Wr(Math.round(10**e.decimals*n)),I=new Wr(Math.round(n*10**t.decimals*o));if(T.eq(Fe))throw Error("lot size is too small");if(I.eq(Fe))throw Error("tick size or lot size is too small");let S=await xc({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:u,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:d,bids:m,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:T,quoteLotSize:I}}),B=this.createTxBuilder();B.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let C of S.slice(1,S.length))B.addInstruction({instructions:C.transaction.instructions,signers:C.signer,instructionTypes:C.instructionTypes});return s===0?B.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:d.publicKey,bids:m.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Dr(e.mint),quoteMin:new Dr(t.mint)}}):B.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:d.publicKey,bids:m.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Dr(e.mint),quoteMin:new Dr(t.mint)}})}};import{PublicKey as Ur}from"@solana/web3.js";import{TransactionInstruction as Vs,SYSVAR_CLOCK_PUBKEY as yf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var _s=M([D("instruction"),Wa("amount")]),qr=M([D("instruction")]);function KK({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:no,isSigner:!1,isWritable:!1},{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:mi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([i,s])=>({pubkey:s,isSigner:i==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(i)}))],o=Buffer.alloc(_s.span);return _s.encode({instruction:1,amount:Number(e)},o),new Vs({keys:n,programId:r,data:o})}function Ho({programId:r},e){let t=[{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:mi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([o,i])=>({pubkey:i,isSigner:o==="userOwner",isWritable:!["authority","userOwner"].includes(o)}))],n=Buffer.alloc(qr.span);return qr.encode({instruction:2},n),new Vs({keys:t,programId:r,data:n})}function vs(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(qr.span);qr.encode({instruction:2},s);let a=[{pubkey:Es,isWritable:!1,isSigner:!1},{pubkey:yf,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 Vs({programId:e.programId,keys:a,data:s})}import Sc from"bn.js";var bf={[ur.IDO_PROGRAM_ID_V1.toString()]:1,[ur.IDO_PROGRAM_ID_V2.toString()]:2,[ur.IDO_PROGRAM_ID_V3.toString()]:3,[ur.IDO_PROGRAM_ID_V4.toString()]:4},Qn=class extends Se{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:o=!1,txVersion:i}){let s=this.createTxBuilder(),a=bf[t.programId];a||this.logAndCreateError("invalid version",a);let c=Ie(t),[u,l]=[!new Sc(e.coin).isZero(),!new Sc(e.pc).isZero()],d=c.projectInfo.mint.address.equals(J),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.projectInfo.mint.programId,mint:c.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,notUseTokenAccount:d,associatedOnly:d?!1:n,checkCreateATAOwner:o});!m&&u&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),u&&p&&s.addInstruction(p);let y=c.buyInfo.mint.address.equals(J),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.buyInfo.mint.programId,mint:c.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(!m&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!m||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...u?[Ho({programId:c.programId},{idoId:c.id,authority:c.authority,poolTokenAccount:c.projectInfo.vault,userTokenAccount:m,userIdoInfo:new Ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Ho({programId:new Ur(t.programId)},{idoId:c.id,authority:c.authority,poolTokenAccount:c.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:i});if(a<3)return!u&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Ho({programId:c.programId},{idoId:c.id,authority:c.authority,poolQuoteTokenAccount:c.buyInfo.vault,poolBaseTokenAccount:c.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:m,userIdoInfo:new Ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:i});let g={poolConfig:{id:c.id,programId:c.programId,authority:c.authority,baseVault:c.projectInfo.vault,quoteVault:c.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:m,quoteTokenAccount:f,ledgerAccount:new Ur(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...u?[vs(v(R({},g),{side:"base"}))]:[],...l?[vs(v(R({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:i})}};import{PublicKey as gf}from"@solana/web3.js";import{MintLayout as wf,TOKEN_2022_PROGRAM_ID as Fs,TOKEN_PROGRAM_ID as Ds}from"@solana/spl-token";var Gr=class extends Se{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),c=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(Rt.address,Rt),this._mintGroup.official.add(Rt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,v(R({},u),{priority:-1}))}),i.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,v(R({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Fs.toBase58():Ds.toBase58()})),this._mintGroup.official.add(u.address))}),c.forEach(u=>{var l;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,v(R({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Fs.toBase58():Ds.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,v(R({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Fs.toBase58():Ds.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}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 Rt;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,v(R({},i),{priority:2})),i;let s=await this.scope.connection.getAccountInfo(new gf(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=wf.decode(s.data),c=n.toString().substring(0,6),u={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:c,name:c,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,u),u}};var Zo=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:o,api:i,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=o?new It(o):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.api=i,this._apiCacheTime=c||5*60*1e3,this.logger=ce("Raydium"),this.farm=new kr({scope:this,moduleName:"Raydium_Farm"}),this.account=new dr({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Or({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Gr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Fr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Nr({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new vr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new Pt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Yn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Qn({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=Af({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:o,logCount:i,logRequests:s,urlConfigs:a}=t,c=new go({cluster:n,timeout:o,urlConfigs:a,logCount:i,logRequests:s}),u=new Zo(v(R({},t),{api:c}));return await u.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await u.token.load({type:e.jupTokenType}),u}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(wo);return this._owner.publicKey}setOwner(e){return this._owner=e?new It(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ea);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(wo),new Error(wo)}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=v(R({},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{}}}};var R0=r=>r;export{Ub as ACCOUNT_TYPE_SIZE,yg as ALL_PROGRAM_ID,Pp as AMM_CONFIG_SEED,um as AMM_STABLE,ar as AMM_V4,Ff as ANAMint,Ye as API_URLS,rm as AccountType,go as Api,vu as BIT_PRECISION,tn as BNDivCeil,gn as BNLayout,Yy as BN_100,Qy as BN_1000,jy as BN_10000,zy as BN_FIVE,ya as BN_ONE,pn as BN_TEN,Xy as BN_THREE,Gy as BN_TWO,Fe as BN_ZERO,Tw as BitStructure,Da as Blob,xi as CLMM_PROGRAM_ID,mi as CLOCK_PROGRAM_ID,fm as CREATE_CPMM_POOL_AUTH,ym as CREATE_CPMM_POOL_FEE_ACC,Bi as CREATE_CPMM_POOL_PROGRAM,Nr as Clmm,Xu as ClmmConfigLayout,Ke as ClmmInstrument,Do as ConstantProductCurve,fc as CpmmConfigInfoLayout,vo as CpmmFee,Xo as CpmmPoolInfoLayout,Jn as Currency,fn as CurrencyAmount,Wo as CurveCalculator,bg as DEVNET_PROGRAM_ID,Ug as DEV_API_URLS,gm as DEV_CREATE_CPMM_POOL_AUTH,wm as DEV_CREATE_CPMM_POOL_FEE_ACC,bm as DEV_CREATE_CPMM_POOL_PROGRAM,ip as DataElement,Df as ETHMint,ws as EXTENSION_TICKARRAY_BITMAP_SIZE,uu as FARM_LOCK_MINT,cu as FARM_LOCK_VAULT,Ti as FARM_PROGRAM_ID_V3,Ii as FARM_PROGRAM_ID_V5,Vn as FARM_PROGRAM_ID_V6,yt as FARM_PROGRAM_TO_VERSION,mu as FARM_VERSION_TO_LEDGER_LAYOUT,lu as FARM_VERSION_TO_STATE_LAYOUT,fg as FEE_DESTINATION_ID,_o as FEE_RATE_DENOMINATOR,Bs as FEE_RATE_DENOMINATOR_VALUE,Kp as FETCH_TICKARRAY_COUNT,Sp as Fee,oe as Fraction,ur as IDO_ALL_PROGRAM,lm as IDO_PROGRAM_ID_V1,mm as IDO_PROGRAM_ID_V2,dm as IDO_PROGRAM_ID_V3,pm as IDO_PROGRAM_ID_V4,to as INSTRUCTION_PROGRAM_ID,E as InstructionType,Si as JupTokenType,$u as LIQUIDITY_FEES_DENOMINATOR,Zu as LIQUIDITY_FEES_NUMERATOR,Na as LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,_p as LIQUIDITY_VERSION_TO_SERUM_VERSION,ek as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Fu as LOG_B_2_X32,Du as LOG_B_P_ERR_MARGIN_LOWER_X64,Wu as LOG_B_P_ERR_MARGIN_UPPER_X64,po as LOOKUP_TABLE_CACHE,cr as Layout,le as LiquidityMath,Mc as LogLevel,ei as Logger,Ms as MARKET_STATE_LAYOUT_V2,Ls as MARKET_STATE_LAYOUT_V3,wc as MARKET_VERSION_TO_STATE_LAYOUT,Ta as MAX_BASE64_SIZE,Vt as MAX_SQRT_PRICE_X64,Mo as MAX_SQRT_PRICE_X64_SUB_ONE,ot as MAX_TICK,Jr as MEMO_PROGRAM_ID,eo as MEMO_PROGRAM_ID2,Mn as METADATA_PROGRAM_ID,_t as MIN_SQRT_PRICE_X64,No as MIN_SQRT_PRICE_X64_ADD_ONE,tt as MIN_TICK,Un as MODEL_DATA_PUBKEY,Qo as Market,ne as MathUtil,gs as MaxU64,Eu as MaxUint128,Xt as NEGATIVE_ONE,vf as NRVMint,dt as ONE,am as OPEN_BOOK_PROGRAM,xp as OPERATION_SEED,Ps as ObservationInfoLayout,Lp as ObservationLayout,zu as OperationLayout,Mi as OptionLayout,It as Owner,Lf as PAIMint,Tp as POOL_REWARD_VAULT_SEED,hp as POOL_SEED,Bp as POOL_TICK_ARRAY_BITMAP_SEED,kp as POOL_VAULT_SEED,Mu as POSITION_SEED,ve as Percent,Ma as PoolFetchType,In as PoolInfoLayout,Le as PoolUtils,Vo as PositionInfoLayout,Np as PositionRewardInfoLayout,Rr as PositionUtils,We as Price,vT as ProtocolPositionLayout,Oo as Q128,pt as Q64,Rf as RAYMint,st as RENT_PROGRAM_ID,Zo as Raydium,Op as RewardInfo,ac as RoundDirection,yi as Rounding,cm as Router,bc as SERUM_PROGRAMID_TO_VERSION,yo as SERUM_PROGRAM_ID_V3,gc as SERUM_VERSION_TO_PROGRAMID,_a as SESSION_KEY,Ve as SOLMint,Rt as SOL_INFO,Kh as SPL_MINT_LAYOUT,Of as SRMMint,Ki as STORAGE_KEY,no as SYSTEM_PROGRAM_ID,te as SqrtPriceMath,qn as StableLayout,_i as Structure,Tn as SwapMath,kn as TICK_ARRAY_BITMAP_SIZE,Ip as TICK_ARRAY_SEED,De as TICK_ARRAY_SIZE,Sk as TICK_SPACINGS,Ee as TOKEN_WSOL,zt as TickArrayBitmap,Gu as TickArrayBitmapExtensionLayout,Cr as TickArrayBitmapExtensionUtils,Kr as TickArrayLayout,Mp as TickLayout,xn as TickMath,me as TickQuery,j as TickUtils,ye as Token,fe as TokenAmount,fo as TxBuilder,yn as TxVersion,Sr as U64Resolution,Ck as U64_IGNORE_RANGE,Li as UInt,Nf as USDCMint,Ef as USDHMint,Mf as USDTMint,sm as UTIL1216,Vi as Union,su as Voter,Dd as VoterDepositEntry,Fd as VoterLockup,iu as VoterRegistrar,vd as VoterVotingMintConfig,J as WSOLMint,Po as WideBits,qt as WrappedLayout,pe as ZERO,ma as _100_PERCENT,w as accountMeta,Ly as add,co as addComputeBudget,ls as addLiquidityLayout,uA as array,Gi as associatedLedgerAccountLayout,Oi as bits,be as blob,je as bool,rs as calFarmRewardAmount,Wp as ceilDiv,er as checkLegacyTxSize,tr as checkV0TxSize,hi as chunkArray,qr as claimLayout,Mt as closeAccountInstruction,ui as commonSystemAccountMeta,So as createAssociatedLedgerAccountInstruction,ce as createLogger,Pu as createPoolFeeLayout,Cu as createPoolV4InstructionV2,Jh as createPoolV4Layout,Ut as createWSolAccountInstructions,Zw as cstr,yy as currencyEquals,Ul as decimalToFraction,fd as decodeBool,Sy as div,io as divCeil,rt as dwLayout,yd as encodeBool,cw as endlessRetry,Dl as eq,zw as f32,Yw as f32be,Qw as f64,jw as f64be,Qi as farmAddRewardLayout,pP as farmLedgerLayoutV3_1,fr as farmLedgerLayoutV3_2,fP as farmLedgerLayoutV5_1,ru as farmLedgerLayoutV5_2,ou as farmLedgerLayoutV6_1,pu as farmRewardInfoToConfig,zi as farmRewardLayout,Yi as farmRewardRestartLayout,Ed as farmRewardTimeInfoLayout,tu as farmStateV3Layout,nu as farmStateV5Layout,pr as farmStateV6Layout,FP as fetchMultipleFarmInfoAndUpdate,bI as fetchMultipleInfo,Sa as fetchMultipleMintInfos,ae as findProgramAddress,as as fixedSwapInLayout,us as fixedSwapOutLayout,ic as floorDiv,lo as forecastTransactionSize,yp as formatLayout,Je as generatePubKey,ge as getATAAddress,du as getAssociatedAuthority,Is as getAssociatedConfigId,et as getAssociatedLedgerAccount,br as getAssociatedLedgerPoolAccount,Fp as getAssociatedOpenOrders,tc as getAssociatedPoolKeys,jp as getCpmmPdaAmmConfigId,Hp as getCpmmPdaPoolId,cc as getCreatePoolKeys,Ra as getDate,os as getDepositEntryIndex,Iu as getDxByDyBaseIn,Tu as getDyByDxBaseIn,Mb as getEpochInfo,Dn as getFarmLedgerLayout,Wd as getFarmStateLayout,xs as getLiquidityAssociatedAuthority,Bn as getLiquidityAssociatedId,fT as getLiquidityFromAmounts,Ry as getMax,Tt as getMultipleAccountsInfo,qe as getMultipleAccountsInfoWithCustomFlags,ki as getMultipleLookupTableInfo,Ik as getPdaAmmConfigId,mt as getPdaExBitmapAccount,Zp as getPdaLpMint,Lo as getPdaMetadataKey,qo as getPdaObservationId,Br as getPdaOperationAccount,gt as getPdaPersonalPositionAddress,_r as getPdaPoolAuthority,_u as getPdaPoolId,Vu as getPdaPoolRewardVaulId,bs as getPdaPoolVaultId,hn as getPdaProtocolPositionAddress,Ae as getPdaTickArrayAddress,uc as getPdaVault,_n as getRecentBlockHash,Zi as getRegistrarAddress,hm as getSessionKey,xu as getStablePrice,im as getTime,kb as getTimestamp,ns as getTokenOwnerRecordAddress,Tg as getTransferAmountFee,he as getTransferAmountFeeV2,es as getVoterAddress,ts as getVoterWeightRecordAddress,Ji as getVotingMintAuthority,$i as getVotingTokenMint,Hd as governanceCreateTokenOwnerRecord,Iw as greedy,Fl as gt,By as gte,Ya as i128,Ak as i16ToBytes,Ro as i32ToBytes,ho as i64,za as i8,cs as initPoolLayout,qi as initTokenAccountInstruction,ff as initializeMarket,ag as intersection,Oa as isDateAfter,La as isDateBefore,Gl as isDecimal,Cy as isMeaningfulNumber,Ca as isNumber,ji as isValidFarmVersion,xr as isZero,Ie as jsonInfo2PoolKeys,DP as judgeFarmType,fs as leadingZeros,Nu as leastSignificantBit,Ir as liquidityStateV4Layout,rp as liquidityStateV5Layout,Iy as lt,xy as lte,_f as mSOLMint,Co as makeAMMSwapInstruction,Ku as makeAddLiquidityInstruction,ss as makeAddNewRewardInstruction,Ho as makeClaimInstruction,vs as makeClaimInstructionV4,mc as makeCreateCpmmPoolInInstruction,fu as makeCreateFarmInstruction,xc as makeCreateMarketInstruction,yu as makeCreatorWithdrawFarmRewardInstruction,dc as makeDepositCpmmInInstruction,bu as makeDepositInstructionV3,gu as makeDepositInstructionV5,wu as makeDepositInstructionV6,rh as makeDepositTokenInstruction,ih as makeDepositWithdrawInstruction,gk as makeInitPoolInstructionV4,KK as makePurchaseInstruction,is as makeRestartRewardInstruction,Ru as makeSimulatePoolInfoInstruction,Uo as makeSwapCpmmBaseInInInstruction,Go as makeSwapCpmmBaseOutInInstruction,wp as makeSwapFixedInInstruction,Ap as makeSwapFixedOutInstruction,yc as makeSwapInstruction,mr as makeTransferInstruction,pc as makeWithdrawCpmmInInstruction,hr as makeWithdrawInstructionV3,Pr as makeWithdrawInstructionV5,Ar as makeWithdrawInstructionV6,oh as makeWithdrawTokenInstruction,Ot as minExpirationTime,Kk as mockCreatePoolInfo,qu as mockV3CreatePoolInfo,sp as modelDataInfoLayout,Ou as mostSignificantBit,wi as mul,Ai as notInnerObject,Fw as ns64,Xw as ns64be,Wa as nu64,Nw as nu64be,Ni as offset,mg as offsetDateTime,rA as option,z as parseBigNumberish,dn as parseNumberInfo,xa as parseSimulateLogToJson,Wt as parseSimulateValue,eu as parseTokenAccountResp,vh as parseTokenInfo,an as poolTypeV6,bn as printSimulate,K as publicKey,_s as purchaseLayout,Md as realFarmStateV3Layout,_d as realFarmStateV5Layout,Vd as realFarmV6Layout,fa as recursivelyDecimalToFraction,ps as removeLiquidityInstruction,ms as removeLiquidityLayout,GB as route1Instruction,XB as route2Instruction,sf as routeInstruction,aA as rustEnum,_w as s16,Dw as s16be,Vw as s24,Ww as s24be,Qe as s32,qw as s32be,Ew as s40,Uw as s40be,vw as s48,Gw as s48be,Mw as s8,U as seq,If as setLoggerLevel,Wl as shakeFractionDecimal,Ia as simulateMultipleInstruction,bk as simulatePoolInfoInstruction,Zl as simulateTransaction,wa as sleep,ct as solToWSol,Dh as solToWSolToken,nn as splAccountLayout,ga as splitNumber,Vf as stSOLMint,sA as str,M as struct,Ky as sub,iA as tagged,bi as tenExponential,nc as toAmmComputePoolInfo,bt as toApiV3Token,ql as toBN,$l as toBuffer,Wn as toFeeConfig,ba as toFraction,Ty as toFractionWithDecimals,Hy as toPercent,Ko as toToken,Tr as toTokenAmount,Fh as toTokenInfo,Zy as toTokenPrice,$y as toTotalPrice,pa as toUsdCurrency,ys as trailingZeros,li as tryParsePublicKey,Q as u128,Nt as u16,Lu as u16ToBytes,Kw as u16be,xw as u24,Cw as u24be,$e as u32,Pk as u32ToBytes,Rw as u32be,Bw as u40,Lw as u40be,Sw as u48,Ow as u48be,P as u64,D as u8,cA as union,R0 as unionArr,Hw as unionLayoutDiscriminator,cg as uniq,qd as updateFarmPoolInfo,bo as updateReqHistory,$w as utf8,ci as validateAndParsePublicKey,Hi as validateFarmRewards,oA as vec,bd as vecU8,$d as voterStakeRegistryCreateDepositEntry,Zd as voterStakeRegistryCreateVoter,Yd as voterStakeRegistryDeposit,Qd as voterStakeRegistryUpdateVoterWeightRecord,jd as voterStakeRegistryWithdraw,Wh as wSolToSolToken,Xi as withdrawRewardLayout,ug as xor,lA as zeros};
|
|
1
|
+
var Rc=Object.defineProperty,Lc=Object.defineProperties;var Oc=Object.getOwnPropertyDescriptors;var Gr=Object.getOwnPropertySymbols;var Gs=Object.prototype.hasOwnProperty,Xs=Object.prototype.propertyIsEnumerable;var Us=(r,e,t)=>e in r?Rc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,R=(r,e)=>{for(var t in e||(e={}))Gs.call(e,t)&&Us(r,t,e[t]);if(Gr)for(var t of Gr(e))Xs.call(e,t)&&Us(r,t,e[t]);return r},v=(r,e)=>Lc(r,Oc(e));var Be=(r,e)=>{var t={};for(var n in r)Gs.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Gr)for(var n of Gr(r))e.indexOf(n)<0&&Xs.call(r,n)&&(t[n]=r[n]);return t};import Va from"axios";import{get as $o,set as zs}from"lodash";import Ys from"dayjs";import Nc from"dayjs/plugin/utc";Ys.extend(Nc);var Mc=(o=>(o[o.Error=0]="Error",o[o.Warning=1]="Warning",o[o.Info=2]="Info",o[o.Debug=3]="Debug",o))(Mc||{}),Jo=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 Ys().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}},ei={},Qs={};function ce(r){let e=$o(ei,r);if(!e){let t=$o(Qs,r);e=new Jo({name:r,logLevel:t}),zs(ei,r,e)}return e}function If(r,e){zs(Qs,r,e);let t=$o(ei,r);t&&(t.level=e)}import{PublicKey as Yl}from"@solana/web3.js";import Ql from"bn.js";import Xl from"big.js";import en from"bn.js";import Te from"bn.js";var On=9e15,Jt=1e9,ti="0123456789abcdef",zr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ni={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-On,maxE:On,crypto:!1},$s,Ft,re=!0,jr="[DecimalError] ",$t=jr+"Invalid argument: ",Js=jr+"Precision limit exceeded",ea=jr+"crypto unavailable",ta="[object Decimal]",Ze=Math.floor,_e=Math.pow,_c=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Vc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ec=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,na=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,kt=1e7,ee=7,vc=9007199254740991,Fc=zr.length-1,ri=Yr.length-1,_={toStringTag:ta};_.absoluteValue=_.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),H(r)};_.ceil=function(){return H(new this.constructor(this),this.e+1,2)};_.clampedTo=_.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($t+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new o(n)};_.comparedTo=_.cmp=function(r){var e,t,n,o,i=this,s=i.d,a=(r=new i.constructor(r)).d,c=i.s,u=r.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(i.e!==r.e)return i.e>r.e^c<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]^c<0?1:-1;return n===o?0:n>o^c<0?1:-1};_.cosine=_.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=Dc(n,aa(n,t)),n.precision=r,n.rounding=e,H(Ft==2||Ft==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};_.cubeRoot=_.cbrt=function(){var r,e,t,n,o,i,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(re=!1,i=l.s*_e(l.s*l,1/3),!i||Math.abs(i)==1/0?(t=ze(l.d),r=l.e,(i=(r-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=_e(t,1/3),r=Ze((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 d(t),n.s=l.s):n=new d(i.toString()),s=(r=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Pe(u.plus(l).times(a),u.plus(c),s+2,1),ze(a.d).slice(0,s)===(t=ze(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!o&&t=="4999"){if(!o&&(H(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")&&(H(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return re=!0,H(n,r,d.rounding,e)};_.decimalPlaces=_.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ze(this.e/ee))*ee,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};_.dividedBy=_.div=function(r){return Pe(this,new this.constructor(r))};_.dividedToIntegerBy=_.divToInt=function(r){var e=this,t=e.constructor;return H(Pe(e,new t(r),0,1,1),t.precision,t.rounding)};_.equals=_.eq=function(r){return this.cmp(r)===0};_.floor=function(){return H(new this.constructor(this),this.e+1,3)};_.greaterThan=_.gt=function(r){return this.cmp(r)>0};_.greaterThanOrEqualTo=_.gte=function(r){var e=this.cmp(r);return e==1||e===0};_.hyperbolicCosine=_.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/Zr(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),i=Nn(s,1,i.times(e),new s(1),!0);for(var c,u=r,l=new s(8);u--;)c=i.times(i),i=a.minus(c.times(l.minus(c.times(l))));return H(i,s.precision=t,s.rounding=n,!0)};_.hyperbolicSine=_.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=Nn(i,2,o,o,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,o=o.times(1/Zr(5,r)),o=Nn(i,2,o,o,!0);for(var s,a=new i(5),c=new i(16),u=new i(20);r--;)s=o.times(o),o=o.times(a.plus(s.times(c.times(s).plus(u))))}return i.precision=e,i.rounding=t,H(o,e,t,!0)};_.hyperbolicTangent=_.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,Pe(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};_.inverseCosine=_.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()?ht(t,o,i):new t(0):new t(NaN):e.isZero()?ht(t,o+4,i).times(.5):(t.precision=o+6,t.rounding=1,e=e.asin(),r=ht(t,o+4,i).times(.5),t.precision=o,t.rounding=i,r.minus(e))};_.inverseHyperbolicCosine=_.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,re=!1,t=t.times(t).minus(1).sqrt().plus(t),re=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};_.inverseHyperbolicSine=_.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,re=!1,t=t.times(t).plus(1).sqrt().plus(t),re=!0,n.precision=r,n.rounding=e,t.ln())};_.inverseHyperbolicTangent=_.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?H(new i(o),r,e,!0):(i.precision=t=n-o.e,o=Pe(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)};_.inverseSine=_.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=ht(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)))};_.inverseTangent=_.atan=function(){var r,e,t,n,o,i,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=ri)return s=ht(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=ri)return s=ht(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/ee+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(re=!1,e=Math.ceil(a/ee),n=1,c=u.times(u),s=new l(u),o=u;r!==-1;)if(o=o.times(c),i=s.minus(o.div(n+=2)),o=o.times(c),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)),re=!0,H(s,l.precision=d,l.rounding=m,!0)};_.isFinite=function(){return!!this.d};_.isInteger=_.isInt=function(){return!!this.d&&Ze(this.e/ee)>this.d.length-2};_.isNaN=function(){return!this.s};_.isNegative=_.isNeg=function(){return this.s<0};_.isPositive=_.isPos=function(){return this.s>0};_.isZero=function(){return!!this.d&&this.d[0]===0};_.lessThan=_.lt=function(r){return this.cmp(r)<0};_.lessThanOrEqualTo=_.lte=function(r){return this.cmp(r)<1};_.logarithm=_.log=function(r){var e,t,n,o,i,s,a,c,u=this,l=u.constructor,d=l.precision,m=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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(re=!1,a=d+p,s=Zt(u,a),n=e?Qr(l,a+10):Zt(r,a),c=Pe(s,n,a,1),jn(c.d,o=d,m))do if(a+=10,s=Zt(u,a),n=e?Qr(l,a+10):Zt(r,a),c=Pe(s,n,a,1),!i){+ze(c.d).slice(o+1,o+15)+1==1e14&&(c=H(c,d+1,0));break}while(jn(c.d,o+=10,m));return re=!0,H(c,d,m)};_.minus=_.sub=function(r){var e,t,n,o,i,s,a,c,u,l,d,m,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(u=p.d,m=r.d,a=y.precision,c=y.rounding,!u[0]||!m[0]){if(m[0])r.s=-r.s;else if(u[0])r=new y(p);else return new y(c===3?-0:0);return re?H(r,a,c):r}if(t=Ze(r.e/ee),l=Ze(p.e/ee),u=u.slice(),i=l-t,i){for(d=i<0,d?(e=u,i=-i,s=m.length):(e=m,t=l,s=u.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=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}i=0}for(d&&(e=u,u=m,m=e,r.s=-r.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>i;){if(u[--n]<m[n]){for(o=n;o&&u[--o]===0;)u[o]=kt-1;--u[o],u[n]+=kt}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=Hr(u,t),re?H(r,a,c):r):new y(c===3?-0:0)};_.modulo=_.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]?H(new n(t),n.precision,n.rounding):(re=!1,n.modulo==9?(e=Pe(t,r.abs(),0,3,1),e.s*=r.s):e=Pe(t,r,0,n.modulo,1),e=e.times(r),re=!0,t.minus(e))};_.naturalExponential=_.exp=function(){return oi(this)};_.naturalLogarithm=_.ln=function(){return Zt(this)};_.negated=_.neg=function(){var r=new this.constructor(this);return r.s=-r.s,H(r)};_.plus=_.add=function(r){var e,t,n,o,i,s,a,c,u,l,d=this,m=d.constructor;if(r=new m(r),!d.d||!r.d)return!d.s||!r.s?r=new m(NaN):d.d||(r=new m(r.d||d.s===r.s?d:NaN)),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,l=r.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(r=new m(d)),re?H(r,a,c):r;if(i=Ze(d.e/ee),n=Ze(r.e/ee),u=u.slice(),o=i-n,o){for(o<0?(t=u,o=-o,s=l.length):(t=l,n=i,s=u.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=u.length,o=l.length,s-o<0&&(o=s,t=l,l=u,u=t),e=0;o;)e=(u[--o]=u[o]+l[o]+e)/kt|0,u[o]%=kt;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=Hr(u,n),re?H(r,a,c):r};_.precision=_.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error($t+r);return t.d?(e=ra(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};_.round=function(){var r=this,e=r.constructor;return H(new e(r),r.e+1,e.rounding)};_.sine=_.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=qc(n,aa(n,t)),n.precision=r,n.rounding=e,H(Ft>2?t.neg():t,r,e,!0)):new n(NaN)};_.squareRoot=_.sqrt=function(){var r,e,t,n,o,i,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(re=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ze(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Ze((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(i=n,n=i.plus(Pe(s,i,t+2,1)).times(.5),ze(i.d).slice(0,t)===(e=ze(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(H(i,c+1,0),i.times(i).eq(s))){n=i;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(H(n,c+1,1),r=!n.times(n).eq(s));break}return re=!0,H(n,c,l.rounding,r)};_.tangent=_.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=Pe(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,H(Ft==2||Ft==4?t.neg():t,r,e,!0)):new n(NaN)};_.times=_.mul=function(r){var e,t,n,o,i,s,a,c,u,l=this,d=l.constructor,m=l.d,p=(r=new d(r)).d;if(r.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!r.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?r.s/0:r.s*0);for(t=Ze(l.e/ee)+Ze(r.e/ee),c=m.length,u=p.length,c<u&&(i=m,m=p,p=i,s=c,c=u,u=s),i=[],s=c+u,n=s;n--;)i.push(0);for(n=u;--n>=0;){for(e=0,o=c+n;o>n;)a=i[o]+p[n]*m[o-n-1]+e,i[o--]=a%kt|0,e=a/kt|0;i[o]=(i[o]+e)%kt|0}for(;!i[--s];)i.pop();return e?++t:i.shift(),r.d=i,r.e=Hr(i,t),re?H(r,d.precision,d.rounding):r};_.toBinary=function(r,e){return si(this,2,r,e)};_.toDecimalPlaces=_.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(it(r,0,Jt),e===void 0?e=n.rounding:it(e,0,8),H(t,r+t.e+1,e))};_.toExponential=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=Ct(n,!0):(it(r,0,Jt),e===void 0?e=o.rounding:it(e,0,8),n=H(new o(n),r+1,e),t=Ct(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toFixed=function(r,e){var t,n,o=this,i=o.constructor;return r===void 0?t=Ct(o):(it(r,0,Jt),e===void 0?e=i.rounding:it(e,0,8),n=H(new i(o),r+o.e+1,e),t=Ct(n,!1,r+n.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};_.toFraction=function(r){var e,t,n,o,i,s,a,c,u,l,d,m,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),i=e.e=ra(y)-p.e-1,s=i%ee,e.d[0]=_e(10,s<0?ee+s:s),r==null)r=i>0?e:u;else{if(a=new f(r),!a.isInt()||a.lt(u))throw Error($t+a);r=a.gt(e)?i>0?e:u:a}for(re=!1,a=new f(ze(y)),l=f.precision,f.precision=i=y.length*ee*2;d=Pe(a,e,0,1,1),o=t.plus(d.times(n)),o.cmp(r)!=1;)t=n,n=o,o=u,u=c.plus(d.times(o)),c=o,o=e,e=a.minus(d.times(o)),a=o;return o=Pe(r.minus(t),n,0,1,1),c=c.plus(o.times(u)),t=t.plus(o.times(n)),c.s=u.s=p.s,m=Pe(u,n,i,1).minus(p).abs().cmp(Pe(c,t,i,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,re=!0,m};_.toHexadecimal=_.toHex=function(r,e){return si(this,16,r,e)};_.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:it(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]?(re=!1,t=Pe(t,r,0,e,1).times(r),re=!0,H(t)):(r.s=t.s,t=r),t};_.toNumber=function(){return+this};_.toOctal=function(r,e){return si(this,8,r,e)};_.toPower=_.pow=function(r){var e,t,n,o,i,s,a=this,c=a.constructor,u=+(r=new c(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new c(_e(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,i=c.rounding,r.eq(1))return H(a,n,i);if(e=Ze(r.e/ee),e>=r.d.length-1&&(t=u<0?-u:u)<=vc)return o=oa(c,a,t,n),r.s<0?new c(1).div(o):H(o,n,i);if(s=a.s,s<0){if(e<r.d.length-1)return new c(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=_e(+a,u),e=t==0||!isFinite(t)?Ze(u*(Math.log("0."+ze(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(re=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),o=oi(r.times(Zt(a,n+t)),n),o.d&&(o=H(o,n+5,1),jn(o.d,n,i)&&(e=n+10,o=H(oi(r.times(Zt(a,e+t)),e),e+5,1),+ze(o.d).slice(n+1,n+15)+1==1e14&&(o=H(o,n+1,0)))),o.s=s,re=!0,c.rounding=i,H(o,n,i))};_.toPrecision=function(r,e){var t,n=this,o=n.constructor;return r===void 0?t=Ct(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):(it(r,1,Jt),e===void 0?e=o.rounding:it(e,0,8),n=H(new o(n),r,e),t=Ct(n,r<=n.e||n.e<=o.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toSignificantDigits=_.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(it(r,1,Jt),e===void 0?e=n.rounding:it(e,0,8)),H(new n(t),r,e)};_.toString=function(){var r=this,e=r.constructor,t=Ct(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};_.truncated=_.trunc=function(){return H(new this.constructor(this),this.e+1,1)};_.valueOf=_.toJSON=function(){var r=this,e=r.constructor,t=Ct(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function ze(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+=Ht(t)),i+=n;s=r[e],n=s+"",t=ee-n.length,t&&(i+=Ht(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function it(r,e,t){if(r!==~~r||r<e||r>t)throw Error($t+r)}function jn(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=_e(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)==_e(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)==_e(10,e-3)-1,s}function Xr(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]+=ti.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 Dc(r,e){var t,n,o;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),o=(1/Zr(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),r.precision+=t,e=Nn(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 Pe=function(){function r(n,o,i){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*o+a,n[c]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function e(n,o,i,s){var a,c;if(i!=s)c=i>s?1:-1;else for(a=c=0;a<i;a++)if(n[a]!=o[a]){c=n[a]>o[a]?1:-1;break}return c}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,c){var u,l,d,m,p,y,f,b,g,h,P,k,T,I,S,B,C,x,L,G,F=n.constructor,Z=n.s==o.s?1:-1,$=n.d,W=o.d;if(!$||!$[0]||!W||!W[0])return new F(!n.s||!o.s||($?W&&$[0]==W[0]:!W)?NaN:$&&$[0]==0||!W?Z*0:Z/0);for(c?(p=1,l=n.e-o.e):(c=kt,p=ee,l=Ze(n.e/p)-Ze(o.e/p)),L=W.length,C=$.length,g=new F(Z),h=g.d=[],d=0;W[d]==($[d]||0);d++);if(W[d]>($[d]||0)&&l--,i==null?(I=i=F.precision,s=F.rounding):a?I=i+(n.e-o.e)+1:I=i,I<0)h.push(1),y=!0;else{if(I=I/p+2|0,d=0,L==1){for(m=0,W=W[0],I++;(d<C||m)&&I--;d++)S=m*c+($[d]||0),h[d]=S/W|0,m=S%W|0;y=m||d<C}else{for(m=c/(W[0]+1)|0,m>1&&(W=r(W,m,c),$=r($,m,c),L=W.length,C=$.length),B=L,P=$.slice(0,L),k=P.length;k<L;)P[k++]=0;G=W.slice(),G.unshift(0),x=W[0],W[1]>=c/2&&++x;do m=0,u=e(W,P,L,k),u<0?(T=P[0],L!=k&&(T=T*c+(P[1]||0)),m=T/x|0,m>1?(m>=c&&(m=c-1),f=r(W,m,c),b=f.length,k=P.length,u=e(f,P,b,k),u==1&&(m--,t(f,L<b?G:W,b,c))):(m==0&&(u=m=1),f=W.slice()),b=f.length,b<k&&f.unshift(0),t(P,f,k,c),u==-1&&(k=P.length,u=e(W,P,L,k),u<1&&(m++,t(P,L<k?G:W,k,c))),k=P.length):u===0&&(m++,P=[0]),h[d++]=m,u&&P[0]?P[k++]=$[B]||0:(P=[$[B]],k=1);while((B++<C||P[0]!==void 0)&&I--);y=P[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,$s=y;else{for(d=1,m=h[0];m>=10;m/=10)d++;g.e=d+l*p-1,H(g,a?i+g.e+1:i,s,y)}return g}}();function H(r,e,t,n){var o,i,s,a,c,u,l,d,m,p=r.constructor;e:if(e!=null){if(d=r.d,!d)return r;for(o=1,a=d[0];a>=10;a/=10)o++;if(i=e-o,i<0)i+=ee,s=e,l=d[m=0],c=l/_e(10,o-s-1)%10|0;else if(m=Math.ceil((i+1)/ee),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,o=1,i%=ee,s=i-ee+1}else break e;else{for(l=a=d[m],o=1;a>=10;a/=10)o++;i%=ee,s=i-ee+o,c=s<0?0:l/_e(10,o-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%_e(10,o-s-1)),u=t<4?(c||n)&&(t==0||t==(r.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(i>0?s>0?l/_e(10,o-s):0:d[m-1])%10&1||t==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=_e(10,(ee-e%ee)%ee),r.e=-e||0):d[0]=r.e=0,r;if(i==0?(d.length=m,a=1,m--):(d.length=m+1,a=_e(10,ee-i),d[m]=s>0?(l/_e(10,o-s)%_e(10,s)|0)*a:0),u)for(;;)if(m==0){for(i=1,s=d[0];s>=10;s/=10)i++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(r.e++,d[0]==kt&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=kt)break;d[m--]=0,a=1}for(i=d.length;d[--i]===0;)d.pop()}return re&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ct(r,e,t){if(!r.isFinite())return sa(r);var n,o=r.e,i=ze(r.d),s=i.length;return e?(t&&(n=t-s)>0?i=i.charAt(0)+"."+i.slice(1)+Ht(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(r.e<0?"e":"e+")+r.e):o<0?(i="0."+Ht(-o-1)+i,t&&(n=t-s)>0&&(i+=Ht(n))):o>=s?(i+=Ht(o+1-s),t&&(n=t-o-1)>0&&(i=i+"."+Ht(n))):((n=o+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),t&&(n=t-s)>0&&(o+1===s&&(i+="."),i+=Ht(n))),i}function Hr(r,e){var t=r[0];for(e*=ee;t>=10;t/=10)e++;return e}function Qr(r,e,t){if(e>Fc)throw re=!0,t&&(r.precision=t),Error(Js);return H(new r(zr),e,1,!0)}function ht(r,e,t){if(e>ri)throw Error(Js);return H(new r(Yr),e,t,!0)}function ra(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 Ht(r){for(var e="";r--;)e+="0";return e}function oa(r,e,t,n){var o,i=new r(1),s=Math.ceil(n/ee+4);for(re=!1;;){if(t%2&&(i=i.times(e),Hs(i.d,s)&&(o=!0)),t=Ze(t/2),t===0){t=i.d.length-1,o&&i.d[t]===0&&++i.d[t];break}e=e.times(e),Hs(e.d,s)}return re=!0,i}function js(r){return r.d[r.d.length-1]&1}function ia(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 oi(r,e){var t,n,o,i,s,a,c,u=0,l=0,d=0,m=r.constructor,p=m.rounding,y=m.precision;if(!r.d||!r.d[0]||r.e>17)return new m(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(re=!1,c=y):c=e,a=new m(.03125);r.e>-2;)r=r.times(a),d+=5;for(n=Math.log(_e(2,d))/Math.LN10*2+5|0,c+=n,t=i=s=new m(1),m.precision=c;;){if(i=H(i.times(r),c,1),t=t.times(++l),a=s.plus(Pe(i,t,c,1)),ze(a.d).slice(0,c)===ze(s.d).slice(0,c)){for(o=d;o--;)s=H(s.times(s),c,1);if(e==null)if(u<3&&jn(s.d,c-n,p,u))m.precision=c+=10,t=i=a=new m(1),l=0,u++;else return H(s,m.precision=y,p,re=!0);else return m.precision=y,s}s=a}}function Zt(r,e){var t,n,o,i,s,a,c,u,l,d,m,p=1,y=10,f=r,b=f.d,g=f.constructor,h=g.rounding,P=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?(re=!1,l=P):l=e,g.precision=l+=y,t=ze(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=ze(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 u=Qr(g,l+2,P).times(i+""),f=Zt(new g(n+"."+t.slice(1)),l-y).plus(u),g.precision=P,e==null?H(f,P,h,re=!0):f;for(d=f,c=s=f=Pe(f.minus(1),f.plus(1),l,1),m=H(f.times(f),l,1),o=3;;){if(s=H(s.times(m),l,1),u=c.plus(Pe(s,new g(o),l,1)),ze(u.d).slice(0,l)===ze(c.d).slice(0,l))if(c=c.times(2),i!==0&&(c=c.plus(Qr(g,l+2,P).times(i+""))),c=Pe(c,new g(p),l,1),e==null)if(jn(c.d,l-y,h,a))g.precision=l+=y,u=s=f=Pe(d.minus(1),d.plus(1),l,1),m=H(f.times(f),l,1),o=a=1;else return H(c,g.precision=P,h,re=!0);else return g.precision=P,c;c=u,o+=2}}function sa(r){return String(r.s*r.s/0)}function ii(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),re&&(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 Wc(r,e){var t,n,o,i,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),na.test(e))return ii(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Vc.test(e))t=16,e=e.toLowerCase();else if(_c.test(e))t=2;else if(Ec.test(e))t=8;else throw Error($t+e);for(i=e.search(/p/i),i>0?(c=+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=oa(n,new n(t),i,i*2)),u=Xr(e,t,kt),l=u.length-1,i=l;u[i]===0;--i)u.pop();return i<0?new n(r.s*0):(r.e=Hr(u,l),r.d=u,re=!1,s&&(r=Pe(r,o,a*4)),c&&(r=r.times(Math.abs(c)<54?_e(2,c):Hn.pow(2,c))),re=!0,r)}function qc(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Nn(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Zr(5,t)),e=Nn(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 Nn(r,e,t,n,o){var i,s,a,c,u=1,l=r.precision,d=Math.ceil(l/ee);for(re=!1,c=t.times(t),a=new r(n);;){if(s=Pe(a.times(c),new r(e++*e++),l,1),a=o?n.plus(s):n.minus(s),n=Pe(s.times(c),new r(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(i=d;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,u++}return re=!0,s.d.length=d+1,s}function Zr(r,e){for(var t=r;--e;)t*=r;return t}function aa(r,e){var t,n=e.s<0,o=ht(r,r.precision,1),i=o.times(.5);if(e=e.abs(),e.lte(i))return Ft=n?4:1,e;if(t=e.divToInt(o),t.isZero())Ft=n?3:2;else{if(e=e.minus(t.times(o)),e.lte(i))return Ft=js(t)?n?2:3:n?4:1,e;Ft=js(t)?n?1:4:n?3:2}return e.minus(o).abs()}function si(r,e,t,n){var o,i,s,a,c,u,l,d,m,p=r.constructor,y=t!==void 0;if(y?(it(t,1,Jt),n===void 0?n=p.rounding:it(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=sa(r);else{for(l=Ct(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(".",""),m=new p(1),m.e=l.length-s,m.d=Xr(Ct(m),10,o),m.e=m.d.length),d=Xr(l,10,o),i=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=y?"0p+0":"0";else{if(s<0?i--:(r=new p(r),r.d=d,r.e=i,r=Pe(r,m,t,n,0,o),d=r.d,i=r.e,u=$s),s=d[t],a=o/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(r.s<0?8:7)),d.length=t,u)for(;++d[--t]>o-1;)d[t]=0,t||(++i,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=ti.charAt(d[s]);if(y){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=Xr(l,o,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=ti.charAt(d[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>c)for(i-=c;i--;)l+="0";else i<c&&(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 Hs(r,e){if(r.length>e)return r.length=e,!0}function Uc(r){return new this(r).abs()}function Gc(r){return new this(r).acos()}function Xc(r){return new this(r).acosh()}function zc(r,e){return new this(r).plus(e)}function Yc(r){return new this(r).asin()}function Qc(r){return new this(r).asinh()}function jc(r){return new this(r).atan()}function Hc(r){return new this(r).atanh()}function Zc(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=ht(this,i,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?ht(this,n,o):new this(0),t.s=r.s):!r.d||e.isZero()?(t=ht(this,i,1).times(.5),t.s=r.s):e.s<0?(this.precision=i,this.rounding=1,t=this.atan(Pe(r,e,i,1)),e=ht(this,i,1),this.precision=n,this.rounding=o,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Pe(r,e,i,1)),t}function $c(r){return new this(r).cbrt()}function Jc(r){return H(r=new this(r),r.e+1,2)}function el(r,e,t){return new this(r).clamp(e,t)}function tl(r){if(!r||typeof r!="object")throw Error(jr+"Object expected");var e,t,n,o=r.defaults===!0,i=["precision",1,Jt,"rounding",0,8,"toExpNeg",-On,0,"toExpPos",0,On,"maxE",0,On,"minE",-On,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],o&&(this[t]=ni[t]),(n=r[t])!==void 0)if(Ze(n)===n&&n>=i[e+1]&&n<=i[e+2])this[t]=n;else throw Error($t+t+": "+n);if(t="crypto",o&&(this[t]=ni[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(ea);else this[t]=!1;else throw Error($t+t+": "+n);return this}function nl(r){return new this(r).cos()}function rl(r){return new this(r).cosh()}function ua(r){var e,t,n;function o(i){var s,a,c,u=this;if(!(u instanceof o))return new o(i);if(u.constructor=o,Zs(i)){u.s=i.s,re?!i.d||i.e>o.maxE?(u.e=NaN,u.d=null):i.e<o.minE?(u.e=0,u.d=[0]):(u.e=i.e,u.d=i.d.slice()):(u.e=i.e,u.d=i.d?i.d.slice():i.d);return}if(c=typeof i,c==="number"){if(i===0){u.s=1/i<0?-1:1,u.e=0,u.d=[0];return}if(i<0?(i=-i,u.s=-1):u.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;re?s>o.maxE?(u.e=NaN,u.d=null):s<o.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[i]):(u.e=s,u.d=[i]);return}else if(i*0!==0){i||(u.s=NaN),u.e=NaN,u.d=null;return}return ii(u,i.toString())}else if(c!=="string")throw Error($t+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),u.s=-1):(a===43&&(i=i.slice(1)),u.s=1),na.test(i)?ii(u,i):Wc(u,i)}if(o.prototype=_,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=tl,o.clone=ua,o.isDecimal=Zs,o.abs=Uc,o.acos=Gc,o.acosh=Xc,o.add=zc,o.asin=Yc,o.asinh=Qc,o.atan=jc,o.atanh=Hc,o.atan2=Zc,o.cbrt=$c,o.ceil=Jc,o.clamp=el,o.cos=nl,o.cosh=rl,o.div=ol,o.exp=il,o.floor=sl,o.hypot=al,o.ln=ul,o.log=cl,o.log10=ml,o.log2=ll,o.max=dl,o.min=pl,o.mod=fl,o.mul=yl,o.pow=bl,o.random=gl,o.round=wl,o.sign=Al,o.sin=Pl,o.sinh=hl,o.sqrt=kl,o.sub=Tl,o.sum=Il,o.tan=xl,o.tanh=Bl,o.trunc=Sl,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 ol(r,e){return new this(r).div(e)}function il(r){return new this(r).exp()}function sl(r){return H(r=new this(r),r.e+1,3)}function al(){var r,e,t=new this(0);for(re=!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 re=!0,new this(1/0);t=e}return re=!0,t.sqrt()}function Zs(r){return r instanceof Hn||r&&r.toStringTag===ta||!1}function ul(r){return new this(r).ln()}function cl(r,e){return new this(r).log(e)}function ll(r){return new this(r).log(2)}function ml(r){return new this(r).log(10)}function dl(){return ia(this,arguments,"lt")}function pl(){return ia(this,arguments,"gt")}function fl(r,e){return new this(r).mod(e)}function yl(r,e){return new this(r).mul(e)}function bl(r,e){return new this(r).pow(e)}function gl(r){var e,t,n,o,i=0,s=new this(1),a=[];if(r===void 0?r=this.precision:it(r,1,Jt),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(ea);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],r%=ee,n&&r&&(o=_e(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 wl(r){return H(r=new this(r),r.e+1,this.rounding)}function Al(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Pl(r){return new this(r).sin()}function hl(r){return new this(r).sinh()}function kl(r){return new this(r).sqrt()}function Tl(r,e){return new this(r).sub(e)}function Il(){var r=0,e=arguments,t=new this(e[r]);for(re=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return re=!0,H(t,this.precision,this.rounding)}function xl(r){return new this(r).tan()}function Bl(r){return new this(r).tanh()}function Sl(r){return H(r=new this(r),r.e+1,1)}_[Symbol.for("nodejs.util.inspect.custom")]=_.toString;_[Symbol.toStringTag]="Decimal";var Hn=_.constructor=ua(ni);zr=new Hn(zr);Yr=new Hn(Yr);var V=Hn;import{PublicKey as mi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import{PublicKey as xe,SystemProgram as ca,SYSVAR_RENT_PUBKEY as Cl}from"@solana/web3.js";function w({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var ai=[w({pubkey:Kl,isWritable:!1}),w({pubkey:ca.programId,isWritable:!1}),w({pubkey:Cl,isWritable:!1})];function ui({publicKey:r,transformSol:e}){let t=ci(r.toString());if(t instanceof xe)return e&&t.equals(Ve)?J:t;if(e&&t.toString()===Ve.toBase58())return J;if(typeof t=="string"){if(t===xe.default.toBase58())return xe.default;try{return new xe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ci(r){try{return new xe(r)}catch{return r}}var $r=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Jr=new xe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new xe("SysvarRent111111111111111111111111111111111"),li=new xe("SysvarC1ock11111111111111111111111111111111"),Mn=new xe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),eo=new xe("Sysvar1nstructions1111111111111111111111111"),to=ca.programId,Rf=new xe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Lf=new xe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Of=new xe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Nf=new xe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Mf=new xe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_f=new xe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Vf=new xe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ef=new xe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),vf=new xe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ff=new xe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Df=new xe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new xe("So11111111111111111111111111111111111111112"),Ve=xe.default;function ct(r){return ui({publicKey:r,transformSol:!0})}import{PublicKey as Rl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as la}from"@solana/spl-token";var Rt={chainId:101,address:Rl.default.toBase58(),programId:la.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ee={chainId:101,address:"So11111111111111111111111111111111111111112",programId:la.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 di=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:s=!1}){if(e===Ve.toBase58()||e instanceof mi&&Ve.equals(e)){this.decimals=Ee.decimals,this.symbol=Ee.symbol,this.name=Ee.name,this.mint=new mi(Ee.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?mi.default:ui({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=di;ye.WSOL=new di(v(R({},Ee),{mint:Ee.address}));import ro from"big.js";import Nl from"bn.js";import Ml from"decimal.js-light";import Ll from"toformat";var Ol=Ll,Zn=Ol;var no=ce("module/fraction"),pi=Zn(ro),$n=Zn(Ml),_l={[0]:$n.ROUND_DOWN,[1]:$n.ROUND_HALF_UP,[2]:$n.ROUND_UP},Vl={[0]:ro.roundDown,[1]:ro.roundHalfUp,[2]:ro.roundUp},oe=class{constructor(e,t=new Nl(1)){this.numerator=z(e),this.denominator=z(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new oe(this.denominator,this.numerator)}add(e){let t=e instanceof oe?e:new oe(z(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.add(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof oe?e:new oe(z(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.sub(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof oe?e:new oe(z(e));return new oe(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof oe?e:new oe(z(e));return new oe(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||no.logWithError(`${e} is not an integer.`),e<=0&&no.logWithError(`${e} is not positive.`),$n.set({precision:e+1,rounding:_l[n]});let o=new $n(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)||no.logWithError(`${e} is not an integer.`),e<0&&no.logWithError(`${e} is negative.`),pi.DP=e,pi.RM=Vl[n]||1,new pi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var El=ce("Raydium_price"),We=class extends oe{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:s}=t;super(i,s);this.baseToken=n,this.quoteToken=o,this.scalar=new oe(yi(n.decimals),yi(o.decimals))}get raw(){return new oe(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new We({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&El.logWithError("mul token not equals");let n=super.mul(t);return new We({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 bi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Jn=bi;Jn.SOL=new bi(Rt);function yy(r,e){return r instanceof ye&&e instanceof ye?r.equals(e):r instanceof ye||e instanceof ye?!1:r===e}import vl from"bn.js";var ma=new oe(new vl(100)),ve=class extends oe{toSignificant(e=5,t,n){return this.mul(ma).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ma).toFixed(e,t,n)}};function Ce(r){if(r instanceof ve)return new oe(r.numerator,r.denominator);if(r instanceof We)return r.adjusted;if(r instanceof fe)try{return Ce(r.toExact())}catch{return new oe(Fe)}if(r instanceof oe)return r;let e=String(r),t=dn(e);return new oe(t.numerator,t.denominator)}function Ty(r){var n;if(r instanceof ve)return{fr:new oe(r.numerator,r.denominator)};if(r instanceof We)return{fr:r.adjusted};if(r instanceof fe)return{fr:Ce(r.toExact()),decimals:r.token.decimals};if(r instanceof oe)return{fr:r};let e=String(r),t=dn(e);return{fr:new oe(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Iy(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Fe)}function Fl(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gt(Fe)}function xy(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.lte(Fe)}function By(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.gte(Fe)}function Dl(r,e){if(r==null||e==null)return!1;let t=Ce(r),n=Ce(e);return t.sub(n).numerator.eq(Fe)}function Sy(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);try{return t.div(n)}catch{return t}}function Ky(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.sub(n)}function Cy(r){return r==null?!1:!Dl(r,0)}function Ry(r,e){return Fl(e,r)?e:r}function gi(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.mul(n)}function Ly(r,e){if(r==null||e==null)return;let t=Ce(r),n=Ce(e);return t.add(n)}var fi=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(fi||{}),Fe=new Te(0),ya=new Te(1),Gy=new Te(2),Xy=new Te(3),zy=new Te(5),pn=new Te(10),Yy=new Te(100),Qy=new Te(1e3),jy=new Te(1e4),da=9007199254740991;function z(r){let e=ce("Raydium_parseBigNumberish");if(r instanceof Te)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Te(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=da||r<=-da)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Te(String(r))):typeof r=="bigint"?new Te(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Te(0))}function yi(r){return pn.pow(z(r))}function dn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Te)return{numerator:r.toString(),denominator:"1"};if(r instanceof oe)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",o=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],i="1"+"0".repeat(o.length),s=t+(n==="0"?"":n)+o||"0";return{denominator:i,numerator:s,sign:t,int:n,dec:o}}function oo(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function Wl(r){var n;let[,e="",t=""]=(n=r.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function ql(r,e=0){return r instanceof Te?r:new Te(Wl(ba(r).mul(pn.pow(new Te(String(e))))))}function ba(r){if(r instanceof ve)return new oe(r.numerator,r.denominator);if(r instanceof We)return r.adjusted;if(r instanceof fe)try{return ba(r.toExact())}catch{return new oe(Fe)}if(r instanceof oe)return r;let e=String(r),t=dn(e);return new oe(t.numerator,t.denominator)}function Hy(r,e){let{numerator:t,denominator:n}=dn(r);return new ve(new Te(t),new Te(n).mul(e!=null&&e.alreadyDecimaled?new Te(100):new Te(1)))}function Zy(r){let{token:e,numberPrice:t,decimalDone:n}=r,o=new ye({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:i,denominator:s}=dn(t),a=n?new Te(i).mul(pn.pow(new Te(e.decimals))):i,c=new Te(s).mul(pn.pow(new Te(o.decimals)));return new We({baseToken:o,denominator:c.toString(),quoteToken:new ye(v(R({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function pa(r){let e=new Jn({decimals:6,symbol:"usd",name:"usd"}),t=ql(gi(r,10**e.decimals));return new fn(e,t)}function $y(r,e){return pa(!e||!r?0:gi(r,e))}function Ul(r){if(r==null)return;let{numerator:e,denominator:t}=dn(r.toString());return new oe(e,t)}function Gl(r){return r instanceof V}function fa(r){return Gl(r)?Ul(r):Array.isArray(r)?r.map(e=>fa(e)):wi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,fa(t)])):r}var zl=ce("Raydium_amount"),io=Zn(Xl);function ga(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")):zl.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var fe=class extends oe{constructor(t,n,o=!0,i){let s=new en(0),a=pn.pow(new en(t.decimals));if(o)s=z(n);else{let c=new en(0),u=new en(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=ga(n.toString(),t.decimals);c=z(l),u=z(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(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 io.DP=this.token.decimals,new io(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},fn=class extends oe{constructor(t,n,o=!0,i){let s=new en(0),a=pn.pow(new en(t.decimals));if(o)s=z(n);else{let c=new en(0),u=new en(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=ga(n.toString(),t.decimals);c=z(l),u=z(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(i||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new fn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new fn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.currency.decimals,n,o=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return io.DP=this.currency.decimals,new io(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function wa(r){new Promise(e=>setTimeout(e,r))}function kb(){return new Date().getTime()}function wi(r){return typeof r=="object"&&r!==null&&![ye,fe,Yl,oe,Ql,We,ve].some(e=>typeof e=="object"&&r instanceof e)}function Ie(r){return typeof r=="string"?ci(r):Array.isArray(r)?r.map(e=>Ie(e)):wi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Ie(t)])):r}import{PublicKey as nr,sendAndConfirmTransaction as rr,Transaction as or,TransactionMessage as ir,VersionedTransaction as sr}from"@solana/web3.js";import om from"axios";var yn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(yn||{}),E={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Pa,ComputeBudgetProgram as Aa,Transaction as ao,TransactionMessage as jl,Keypair as ha,VersionedTransaction as ka}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hl}from"@solana/spl-token";var Dt=ce("Raydium_txUtil"),Ta=1644;function uo(r){let e=[],t=[];return r.microLamports&&(e.push(Aa.setComputeUnitPrice({microLamports:r.microLamports})),t.push(E.SetComputeUnitPrice)),r.units&&(e.push(Aa.setComputeUnitLimit({units:r.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function _n(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 co(r,e){r.length<1&&Dt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Dt.logWithError(`no signers provided:, ${e.toString()}`);let t=new ao;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ta}catch{return!1}}async function Ia(r,e,t,n=!0){let o=new Pa("RaydiumSimuLateTransaction11111111111111111"),i=[],s=new ao;s.feePayer=o;for(let u of e)co([...s.instructions,u],[o])||(i.push(s),s=new ao,s.feePayer=o),s.add(u);s.instructions.length>0&&i.push(s);let a=[];try{if(a=await Zl(r,i,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&Dt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(Dt.debug("simulate result:",u),u.logs){let l=u.logs.filter(d=>d&&d.includes(t));Dt.debug("filteredLog:",c),l.length||Dt.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function xa(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Dt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Wt(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Dt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ae(r,e){let[t,n]=Pa.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function Zl(r,e,t){let n=[];if(t){let o=await r.getLatestBlockhash(),i=[];for(let u of e){u.recentBlockhash=o.blockhash,u.lastValidBlockHeight=o.lastValidBlockHeight;let d=u._compile().serialize(),p=u._serialize(d).toString("base64");i.push(p)}let s=i.map(u=>{let l=r._buildArgs([u],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],c=20;for(let u=0;u<Math.ceil(s.length/c);u++)a.push(s.slice(u*c,(u+1)*c));n=await(await Promise.all(a.map(async u=>(await r._rpcBatchRequest(u)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async o=>await(await r.simulateTransaction(o)).value))}catch(o){o instanceof Error&&Dt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:o.message})}return n}function er({instructions:r,payer:e,signers:t}){return co(r,[e,...t])}function tr({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ha.generate().publicKey.toString()}){let i=new jl({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ka(i).serialize()).toString("base64").length<Ta}catch{return!1}}var so={time:0,data:void 0};async function Mb(r){if(!so.data||(Date.now()-so.time)/1e3>30){let e=await r.getEpochInfo();return so={time:Date.now(),data:e},e}else return so.data}var $l=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function bn(r){let e=[];return r.forEach(t=>{t instanceof ao&&(t.recentBlockhash||(t.recentBlockhash=Hl.toBase58()),t.feePayer||(t.feePayer=ha.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof ka&&(n=$l(n));let o=n.toString("base64");e.push(o)}),console.log("simulate tx string:",e),e}import{PublicKey as Ka,AddressLookupTableAccount as lo}from"@solana/web3.js";import{PublicKey as Ba}from"@solana/web3.js";import{MINT_SIZE as Jl,TOKEN_PROGRAM_ID as em,getTransferFeeConfig as tm,unpackMint as nm}from"@solana/spl-token";var Ai=ce("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=R({batchRequest:!1},t),s=Pi(e,i),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=r._buildArgs([d.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Pi(c,10);a=(await(await Promise.all(u.map(async d=>await r._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Ai.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:y,lamports:f,owner:b,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&Ai.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new Ba(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>r.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&Ai.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function qe(r,e,t){let n=await Tt(r,e.map(o=>o.pubkey),t);return e.map((o,i)=>v(R({},o),{accountInfo:n[i]}))}var rm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(rm||{}),Ub=1;async function Sa({connection:r,mints:e,config:t}){var i,s,a;if(e.length===0)return{};let n=await qe(r,e.map(c=>({pubkey:ct(c)})),t),o={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Jl){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=nm(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);o[c.pubkey.toString()]=v(R({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||em,feeConfig:(a=tm(u))!=null?a:void 0})}return o[Ba.default.toBase58()]=o[J.toBase58()],o}async function hi({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Ka(o))),n={};for(let o=0;o<e.length;o++){let i=t[o],s=e[o];if(!i)continue;let a=new lo({key:s,state:lo.deserialize(i.data)});n[s.toString()]=a,mo[s.toString()]=a}return n}var mo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new lo({key:new Ka("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:lo.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 po=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 om.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}=uo(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!==nr.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(R({},t||{})):this.build(t)}build(e){let t=new or;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:o,skipPreflight:i=!0}=n||{},s=o!=null?o:await _n(this.connection,this.blockhashCommitment);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),bn([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await rr(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:i}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:i}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(u=>u.transaction.instructions.length>0),s=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],c=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{},y=m!=null?m:await _n(this.connection,this.blockhashCommitment);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let h=await rr(this.connection,g,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await rr(this.connection,b,a[g].find(h=>h.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:p})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((h,P)=>(h.recentBlockhash=y,a[P].length&&h.sign(...a[P]),h));bn(b);let g=await this.signAllTransactions(b);if(l){let h=0,P=[],k=async()=>{if(!g[h])return;let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});P.push({txId:T,status:"sent",signedTx:g[h]}),d==null||d([...P]),h++,this.connection.onSignature(T,I=>{let S=P.findIndex(B=>B.txId===T);S>-1&&(P[S].status=I.err?"error":"success"),d==null||d([...P]),I.err||k()},"processed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:P.map(T=>T.txId),signedTxs:g}}else{let h=[];for(let P=0;P<g.length;P+=1){let k=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:p});h.push(k)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o}=m,i=Be(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=R(R({},this.cluster==="devnet"?{}:mo),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new nr(p));let u=await hi({connection:this.connection,address:c});for(let[p,y]of Object.entries(u))s[p]=y;let l=new ir({payerKey:this.feePayer,recentBlockhash:o?nr.default.toBase58():await _n(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),d=new sr(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(d.message.recentBlockhash=y),bn([d]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))||d.sign([this.owner.signer]);let g=await this.connection.sendTransaction(d,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:P}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});return await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:h,signature:g},"confirmed"),{txId:g,signedTx:d}}if(this.signAllTransactions){let g=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(u=>u.builder.instructions.length>0),s=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],c=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var y;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&s.forEach(f=>f.message.recentBlockhash=m),bn(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(s.forEach((g,h)=>{a[h].find(P=>P.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),l){let g=[];for(let h of s){let P=await this.connection.sendTransaction(h,{skipPreflight:p}),{lastValidBlockHeight:k,blockhash:T}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:T,lastValidBlockHeight:k,signature:P},"confirmed"),g.push(P)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>{let h=await this.connection.sendTransaction(g,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],h=async()=>{if(!f[b])return;let P=await this.connection.sendTransaction(f[b],{skipPreflight:p});g.push({txId:P,status:"sent",signedTx:f[b]}),d==null||d([...g]),b++,this.connection.onSignature(P,k=>{let T=g.findIndex(I=>I.txId===P);T>-1&&(g[T].status=k.err?"error":"success"),d==null||d([...g]),k.err||h()},"processed"),this.connection.getSignatureStatus(P)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let h=await this.connection.sendTransaction(f[g],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=Be(u,["computeBudgetConfig"]),o=t?uo(t):{instructions:[],instructionTypes:[]},i=this.signers.reduce((l,d)=>v(R({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],m=t?[...o.instructions,...d]:d,y=[...new Set(d.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new nr(f));if(c.length<12&&er({instructions:m,payer:this.feePayer,signers:y})||er({instructions:d,payer:this.feePayer,signers:y}))c.push(l);else{if(c.length===0)throw Error("item ins too big");er({instructions:t?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:y})?s.push(new or().add(...o.instructions,...c)):s.push(new or().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>i[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(m=>m.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(m=>i[m]).filter(m=>m!==void 0);er({instructions:t?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(m=>m.publicKey)})?s.push(new or().add(...o.instructions,...c)):s.push(new or().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await _n(this.connection,this.blockhashCommitment);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),bn(s),(b=this.owner)!=null&&b.isKeyPair){if(d){let g=[];for(let h of s){let P=await rr(this.connection,h,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(P)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async(g,h)=>await rr(this.connection,g,a[h].find(P=>P.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(d){let h=0,P=[],k=async()=>{if(!g[h])return;let T=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});P.push({txId:T,status:"sent",signedTx:g[h]}),m==null||m([...P]),h++,this.connection.onSignature(T,I=>{let S=P.findIndex(B=>B.txId===T);S>-1&&(P[S].status=I.err?"error":"success"),m==null||m([...P]),I.err||k()},"processed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:P.map(T=>T.txId),signedTxs:g}}else{let h=[];for(let P=0;P<g.length;P+=1){let k=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});h.push(k)}return{txIds:h,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:o=[]}=b,i=Be(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=R(R({},this.cluster==="devnet"?{}:mo),n),a=Array.from(new Set([...this.lookupTableAddress,...o])),c=[];for(let g of a)s[g]===void 0&&c.push(new nr(g));let u=await hi({connection:this.connection,address:c});for(let[g,h]of Object.entries(u))s[g]=h;let l=t?uo(t):{instructions:[],instructionTypes:[]},d=await _n(this.connection,this.blockhashCommitment),m=this.signers.reduce((g,h)=>v(R({},g),{[h.publicKey.toBase58()]:h}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let h=[...f,g],P=t?[...l.instructions,...h]:h;if(f.length<12&&tr({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s})||tr({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let k={};for(let T of[...new Set(a)])s[T]!==void 0&&(k[T]=s[T]);if(t&&tr({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let T=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new sr(T))}else{let T=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new sr(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>m[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let h=[...new Set(f.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(P=>m[P]).filter(P=>P!==void 0);if(t&&tr({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let P=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new sr(P))}else{let P=new ir({payerKey:this.feePayer,recentBlockhash:d,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new sr(P))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:h,onTxUpdate:P,recentBlockHash:k,skipPreflight:T=!0}=g||{};if(p.map(async(S,B)=>{y[B].length&&S.sign(y[B]),k&&(S.message.recentBlockhash=k)}),bn(p),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:S,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});if(p.forEach((C,x)=>{y[x].find(L=>L.publicKey.equals(this.owner.publicKey))||C.sign([this.owner.signer])}),h){let C=[];for(let x of p){let L=await this.connection.sendTransaction(x,{skipPreflight:T}),{lastValidBlockHeight:G,blockhash:F}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:F,lastValidBlockHeight:G,signature:L},"confirmed"),C.push(L)}return{txIds:C,signedTxs:p}}return{txIds:await Promise.all(p.map(async C=>{let x=await this.connection.sendTransaction(C,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:S,signature:x},"confirmed"),x})),signedTxs:p}}if(this.signAllTransactions){let S=await this.signAllTransactions(p);if(h){let B=0,C=[],x=async()=>{if(!S[B])return;let L=await this.connection.sendTransaction(S[B],{skipPreflight:T});C.push({txId:L,status:"sent",signedTx:S[B]}),P==null||P([...C]),B++,this.connection.onSignature(L,G=>{let F=C.findIndex(Z=>Z.txId===L);F>-1&&(C[F].status=G.err?"error":"success"),P==null||P([...C]),G.err||x()},"processed"),this.connection.getSignatureStatus(L)};return x(),{txIds:[],signedTxs:S}}else{let B=[];for(let C=0;C<S.length;C+=1){let x=await this.connection.sendTransaction(S[C],{skipPreflight:T});B.push(x)}return{txIds:B,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}};var It=class{constructor(e){this._owner=e}get publicKey(){return It.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return It.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return It.isKeyPair(this._owner)}get isPublicKey(){return It.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!It.isKeyPair(e)}};function Pi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function ag(r,...e){return r.filter(t=>e.every(n=>n.includes(t)))}function ug(r,...e){return r.filter(t=>e.every(n=>!n.includes(t)))}function cg(r){return[...new Set(r)]}var Ca=r=>typeof r=="number",Ra=r=>r?new Date(r):new Date,im=r=>Ra(r).getTime();function La(r,e,t){let n=Ca(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function Oa(r,e,t){let n=Ca(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}function mg(r,e){let n=im(r)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return Ra(n)}import{PublicKey as de}from"@solana/web3.js";var ki=new de("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ti=new de("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new de("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),sm=new de("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),am=new de("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),fo=new de("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ii=new de("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),um=new de("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Na=new de("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xi=new de("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),cm=new de("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fg=new de("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),lm=new de("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),mm=new de("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),dm=new de("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),pm=new de("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Bi=new de("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),fm=new de("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ym=new de("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bm=new de("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),gm=new de("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),wm=new de("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),ar={IDO_PROGRAM_ID_V1:lm,IDO_PROGRAM_ID_V2:mm,IDO_PROGRAM_ID_V3:dm,IDO_PROGRAM_ID_V4:pm},yg={AMM_V4:Ii,AMM_STABLE:um,CLMM_PROGRAM_ID:xi,FARM_PROGRAM_ID_V3:ki,FARM_PROGRAM_ID_V5:Ti,FARM_PROGRAM_ID_V6:Vn,OPEN_BOOK_PROGRAM:am,SERUM_PROGRAM_ID_V3:fo,UTIL1216:sm,Router:cm,CREATE_CPMM_POOL_PROGRAM:Bi,CREATE_CPMM_POOL_AUTH:fm,CREATE_CPMM_POOL_FEE_ACC:ym},bg={SERUM_MARKET:de.default,OPENBOOK_MARKET:new de("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:de.default,FarmV3:new de("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new de("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new de("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new de("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new de("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new de("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new de("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:bm,CREATE_CPMM_POOL_AUTH:gm,CREATE_CPMM_POOL_FEE_ACC:wm,FEE_DESTINATION_ID:new de("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Am}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pm}from"@solana/spl-token";function ge(r,e,t){return ae([r.toBuffer(),(t!=null?t:Pm).toBuffer(),e.toBuffer()],new Am("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ne from"bn.js";var Lt=1e4;function Tg(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Ne(o.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Lt){let a=new Ne(o.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=tn(r.mul(new Ne(Lt)),new Ne(Lt-o.transferFeeBasisPoints)),c=new Ne(o.maximumFee.toString()),u=a.sub(r).gt(c)?r.add(c):a,l=tn(u.mul(new Ne(o.transferFeeBasisPoints)),new Ne(Lt)),d=l.gt(i)?i:l;return{amount:u,fee:d,expirationTime:s}}else{let a=tn(r.mul(new Ne(o.transferFeeBasisPoints)),new Ne(Lt)),c=a.gt(i)?i:a;return{amount:r,fee:c,expirationTime:s}}}function he(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=v(R({},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 Ne(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===Lt){let c=new Ne(i.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=tn(r.mul(new Ne(Lt)),new Ne(Lt-i.transferFeeBasisPoints)),u=new Ne(i.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,d=tn(l.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=tn(r.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function Ot(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function tn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Ne(0))?t.add(new Ne(1)):t}var Si=(t=>(t.ALL="all",t.Strict="strict",t))(Si||{}),Ma=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(Ma||{});var Ye={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"},Ug=R({},Ye);var _a="ray_tab_hash",Ki="ray_req_hash",hm=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(_a);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(_a,r)),r},yo=async n=>{var o=n,{logCount:r=1e3,removeLastLog:e}=o,t=Be(o,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let i=JSON.parse(localStorage.getItem(Ki)||"[]").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(v(R({},t),{time:Date.now(),session:hm()}));try{localStorage.setItem(Ki,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 c=JSON.stringify(t.data).substring(0,100);i[0].data=c+(c.length>100?"...":"");try{localStorage.setItem(Ki,JSON.stringify(i)),s=!0}catch{s=!1}}return new Promise(c=>c())}return yo(v(R({},t),{logCount:r,removeLastLog:!0}))}};var En=ce("Raydium_Api"),Ci=new Map;async function cw(r,e,t=1e3){let n;for(;n==null;)try{En.debug(`Request ${r} through endlessRetry`),n=await e()}catch(o){En.error(`Request ${r} failed, retry after ${t} ms`,o),await wa(t)}return n}var bo=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:o,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=o||1e3,this.api=Va.create({baseURL:this.urlConfigs.BASE_HOST||Ye.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:c,url:u}=s;return En.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),s},s=>(En.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:c,status:u}=s,{method:l,baseURL:d,url:m}=a;return n&&yo({status:u,url:`${d}${m}`,params:a.params,data:c,logCount:this.logCount}),En.debug(`${l==null?void 0:l.toUpperCase()} ${d}${m} ${u}`),c},s=>{let{config:a,response:c={}}=s,{status:u}=c,{method:l,baseURL:d,url:m}=a;return n&&yo({status:u,url:`${d}${m}`,params:a.params,data:s.message,logCount:this.logCount}),En.error(`${l.toUpperCase()} ${d}${m} ${u||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ye.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ye.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Va.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||Ye.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ye.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ye.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ye.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ye.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||Ye.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||Ye.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],o=t.filter(s=>Ci.has(s)?(n.push(Ci.get(s)),!1):!0),i=[];return o.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ye.POOL_KEY_BY_ID)+`?ids=${o.join(",")}`)).data.filter(Boolean),i.forEach(a=>{Ci.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,[c,u]=[t&&ct(t).toBase58(),n&&n!=="undefined"?ct(n).toBase58():""],[l,d]=u&&c>u?[u,c]:[c,u];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ye.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${d}&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||Ye.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ye.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ye.CHECK_AVAILABILITY)).data}};import{merge as Af}from"lodash";var go="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ea="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Ui,TOKEN_PROGRAM_ID as sn,AccountLayout as Fn,TOKEN_2022_PROGRAM_ID as Ld}from"@solana/spl-token";import{PublicKey as Io,SystemProgram as Od}from"@solana/web3.js";var Ri=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Se=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ce(t)}createTxBuilder(e){return this.scope.checkOwner(),new po({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(Ri(e))}logInfo(...e){this.logger.info(Ri(e))}logAndCreateError(...e){let t=Ri(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as xd,createCloseAccountInstruction as Bd,createTransferInstruction as Sd,TOKEN_PROGRAM_ID as vn}from"@solana/spl-token";import{PublicKey as Kd,SystemProgram as Cd}from"@solana/web3.js";import Rd from"bn.js";import{PublicKey as Ja,Keypair as hd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kd}from"@solana/spl-token";import Td from"bn.js";import{PublicKey as pd}from"@solana/web3.js";import Ga,{isBN as Xa}from"bn.js";import{bits as km,BitStructure as Tm,blob as Im,Blob as xm,cstr as Bm,f32 as Sm,f32be as Km,f64 as Cm,f64be as Rm,greedy as Lm,Layout as Om,ns64 as Nm,ns64be as Mm,nu64 as _m,nu64be as Vm,offset as Em,s16 as vm,s16be as Fm,s24 as Dm,s24be as Wm,s32 as qm,s32be as Um,s40 as Gm,s40be as Xm,s48 as zm,s48be as Ym,s8 as Qm,seq as jm,struct as kw,Structure as Hm,u16 as Zm,u16be as $m,u24 as Jm,u24be as ed,u32 as td,u32be as nd,u40 as rd,u40be as od,u48 as id,u48be as sd,u8 as ad,UInt as ud,union as cd,Union as ld,unionLayoutDiscriminator as md,utf8 as dd}from"@solana/buffer-layout";var ur=Om,va=Hm,Fa=ld,Tw=Tm,Li=ud,Da=xm,Iw=Lm,wo=ad,Nt=Zm,xw=Jm,cr=td,Bw=rd,Sw=id,Wa=_m,Kw=$m,Cw=ed,Rw=nd,Lw=od,Ow=sd,Nw=Vm,Mw=Qm,_w=vm,Vw=Dm,Qe=qm,Ew=Gm,vw=zm,Fw=Nm,Dw=Fm,Ww=Wm,qw=Um,Uw=Xm,Gw=Ym,Xw=Mm,zw=Sm,Yw=Km,Qw=Cm,jw=Rm;var qa=jm,Ua=cd,Hw=md,be=Im,Zw=Bm,$w=dd,Oi=km,Ni=Em;var gn=class extends ur{constructor(t,n,o){super(t,o);this.blob=be(t),this.signed=n}decode(t,n=0){let o=new Ga(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 Ga(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Ao=class extends ur{constructor(t){super(8,t);this._lower=Oi(cr(),!1),this._upper=Oi(cr(),!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 R(R({},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 Li(1,r)}function $e(r){return new Li(4,r)}function A(r){return new gn(8,!1,r)}function Q(r){return new gn(16,!1,r)}function za(r){return new gn(1,!0,r)}function Po(r){return new gn(8,!0,r)}function Ya(r){return new gn(16,!0,r)}var qt=class extends ur{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 qt(be(32),e=>new pd(e),e=>e.toBuffer(),r)}var Mi=class extends ur{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=wo()}encode(t,n,o=0){return t==null?this.discriminator.encode(0,n,o):(this.discriminator.encode(1,n,o),this.layout.encode(t,n,o+1)+1)}decode(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return null;if(o===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return 1;if(o===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function rA(r,e){return new Mi(r,e)}function je(r){return new qt(wo(),fd,yd,r)}function fd(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function yd(r){return r?1:0}function oA(r,e){let t=cr("length"),n=M([t,U(r,Ni(t,-t.span),"values")]);return new qt(n,({values:o})=>o,o=>({values:o}),e)}function iA(r,e,t){let n=M([A("tag"),e.replicate("data")]);function o({tag:i,data:s}){if(!i.eq(r))throw new Error("Invalid tag, expected: "+r.toString("hex")+", got: "+i.toString("hex"));return s}return new qt(n,o,i=>({tag:r,data:i}),t)}function bd(r){let e=cr("length"),t=M([e,be(Ni(e,-e.span),"data")]);return new qt(t,({data:n})=>n,n=>({data:n}),r)}function sA(r){return new qt(bd(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),r)}function aA(r,e){let t=Ua(wo(),e);return r.forEach((n,o)=>t.addVariant(o,n,n.property)),t}function uA(r,e,t){let n=M([U(r,e,"values")]);return new qt(n,({values:o})=>o,o=>({values:o}),t)}var _i=class extends va{decode(e,t){return super.decode(e,t)}};function M(r,e,t){return new _i(r,e,t)}var Vi=class extends Fa{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(o=>o.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function cA(r,e,t){return new Vi(r,e,t)}var Ei=class extends Da{decode(e,t){let n=super.decode(e,t);if(!n.every(o=>o===0))throw new Error("nonzero padding bytes");return n}};function lA(r){return new Ei(r)}function U(r,e,t){let n,o=typeof e=="number"?e:Xa(e)?e.toNumber():new Proxy(e,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=Xa(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 qa(r,o,t)}var nn=M([K("mint"),K("owner"),A("amount"),$e("delegateOption"),K("delegate"),D("state"),$e("isNativeOption"),A("isNative"),A("delegatedAmount"),$e("closeAuthorityOption"),K("closeAuthority")]);function gd(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function vi(r,...e){if(!gd(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 Fi(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 Qa(r,e){vi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ko=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),xt=(r,e)=>r<<32-e|r>>>e;var gA=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function wd(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=wd(r)),vi(r),r}var ho=class{clone(){return this._cloneInto()}},wA={}.toString;function ja(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 Ad(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),c=n?4:0,u=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+u,a,n)}var Ha=(r,e,t)=>r&e^~r&t,Za=(r,e,t)=>r&e^r&t^e&t,To=class extends ho{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=ko(this.buffer)}update(e){Fi(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 c=ko(e);for(;o<=i-s;s+=o)this.process(c,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){Fi(this),Qa(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 d=s;d<o;d++)t[d]=0;Ad(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=ko(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],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 Pd=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]),rn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),on=new Uint32Array(64),Wi=class extends To{constructor(){super(64,32,8,!1),this.A=rn[0]|0,this.B=rn[1]|0,this.C=rn[2]|0,this.D=rn[3]|0,this.E=rn[4]|0,this.F=rn[5]|0,this.G=rn[6]|0,this.H=rn[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:a,H:c}=this;return[e,t,n,o,i,s,a,c]}set(e,t,n,o,i,s,a,c){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=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)on[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=on[d-15],p=on[d-2],y=xt(m,7)^xt(m,18)^m>>>3,f=xt(p,17)^xt(p,19)^p>>>10;on[d]=f+on[d-7]+y+on[d-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=xt(a,6)^xt(a,11)^xt(a,25),p=l+m+Ha(a,c,u)+Pd[d]+on[d]|0,f=(xt(n,2)^xt(n,13)^xt(n,22))+Za(n,o,i)|0;l=u,u=c,c=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,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,o,i,s,a,c,u,l)}roundClean(){on.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var $a=ja(()=>new Wi);var _A=ce("Raydium_Util");function eu({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],o=[];for(let{pubkey:i,account:s}of t.value){let a=nn.decode(s.data),{mint:c,amount:u}=a;n.push({publicKey:i,mint:c,amount:u,isAssociated:ge(r,c,s.owner).publicKey.equals(i),isNative:!1,programId:s.owner}),o.push({pubkey:i,accountInfo:a,programId:s.owner})}return e&&n.push({mint:Ja.default,amount:new Td(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:o}}function Je({fromPublicKey:r,programId:e=kd}){let t=hd.generate().publicKey.toBase58().slice(0,32);return{publicKey:Id(r,t,e),seed:t}}function Id(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),o=$a(n);return new Ja(o)}function qi(r){let{mint:e,tokenAccount:t,owner:n,programId:o=vn}=r;return xd(t,e,n,o)}function Mt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:i=vn}=r;return Bd(e,t,o,n,i)}async function Ut(r){let{connection:e,amount:t,commitment:n,payer:o,owner:i,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(nn.span,n),c=z(t).add(new Rd(a)),u=Je({fromPublicKey:o,programId:vn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Cd.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:nn.span,programId:vn}),qi({mint:new Kd(Ee.address),tokenAccount:u.publicKey,owner:i,programId:vn})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[Mt({tokenAccount:u.publicKey,payer:o,owner:i})]}}function lr({source:r,destination:e,owner:t,amount:n,multiSigners:o=[],tokenProgram:i=vn}){return Sd(r,e,t,BigInt(String(n)),o,i)}var mr=class extends Se{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 ge(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=R(R({},{}),t),[i,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:sn},o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Ld},o.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=eu({owner:this.scope.ownerPubKey,solAccountResp:i,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,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:c,tokenAccountRawInfos:u}}async getCreatedTokenAccount({mint:t,programId:n=sn,associatedOnly:o=!0}){await this.fetchWalletTokenAccounts();let i=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,c)=>a.amount.lt(c.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of i){let{publicKey:c}=a;if(c&&(!o||o&&s.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:o,associatedOnly:i,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1}=t,l=new Io(t.tokenProgram||sn),d=this.getAssociatedTokenAccount(n,new Io(l)),m=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!i||h.pubkey.equals(d))).sort((h,P)=>h.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(o===void 0||m.length>0)return m.length>0?{account:m[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let h=Ui(s,d,s,n,l);if(u){let P=await this.scope.connection.getAccountInfo(d);if(P===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(E.CreateATA);else if(!(P.owner.equals(l)&&Fn.decode(P.data).mint.equals(n)&&Fn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${d.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(E.CreateATA);if(n.equals(J)&&o.amount){let P=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:o.payer||this.scope.ownerPubKey,amount:(f=o.amount)!=null?f:0,skipCloseAccount:c});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),o.amount&&(p.instructions.push(lr({source:P.addresses.newAccount,destination:d,owner:this.scope.ownerPubKey,amount:o.amount,tokenProgram:sn})),p.instructionTypes.push(E.TransferAmount))}return c||(p.endInstructions.push(Mt({owner:s,payer:o.payer||s,tokenAccount:d,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:d,instructionParams:p}}else{let h=Je({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Fn.span),k=Od.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:P+Number((g=(b=o.amount)==null?void 0:b.toString())!=null?g:0),space:Fn.span,programId:l});return p.instructions.push(k,qi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),c||(p.endInstructions.push(Mt({owner:s,payer:o.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=sn,autoUnwrapWSOLToSOL:o}){var c;await this.fetchWalletTokenAccounts();let i=(c=this.scope.account.tokenAccounts.find(({mint:u})=>(u==null?void 0:u.toBase58())===t.toBase58()))==null?void 0:c.publicKey,s=this.scope.ownerPubKey,a={};if(!i){let u=this.getAssociatedTokenAccount(t,n),l=await Ui(s,u,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],i=u}return o&&J.toBase58()===t.toBase58()&&(a.endInstructions=[Mt({owner:s,payer:s,tokenAccount:i,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:o,mint:i,programId:s=sn,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:d}=t,m=this.getAssociatedTokenAccount(i,s);if(new Io(J).equals(i)){let p=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:o,skipCloseAccount:l});return R({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!m.equals(a)&&!u){let p=[],y=Ui(this.scope.ownerPubKey,m,this.scope.ownerPubKey,i,s);if(d){let f=await this.scope.connection.getAccountInfo(m);if(f===null)p.push(y);else if(!(f.owner.equals(sn)&&Fn.decode(f.data).mint.equals(i)&&Fn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${m.toString()}`)}else p.push(y);return{tokenAccount:m,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:o=sn,amount:i,useSOLBalance:s,handleTokenAccount:a}=t,c,u=this.createTxBuilder();if(n.equals(new Io(J))&&s){let l=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:m}=l,p=Be(l,["tokenAccount"]);c=m,u.addInstruction(p)}else if(c=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:o}),!c&&a){let d=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:m}=d,p=Be(d,["tokenAccount"]);c=m,u.addInstruction(p)}return R({tokenAccount:c},u.AllTxData)}};import{createAssociatedTokenAccountInstruction as Jd}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as ep}from"@solana/web3.js";import{PublicKey as au}from"@solana/web3.js";var Gi=M([D("instruction")]),Xi=M([D("instruction")]),Nd=M([A("rewardState"),A("rewardOpenTime"),A("rewardEndTime"),A("rewardLastUpdateTime"),A("totalReward"),A("totalRewardEmissioned"),A("rewardClaimed"),A("rewardPerSecond"),Q("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),A("rewardType"),U(A(),15,"padding")]),Md=M([A("state"),A("nonce"),K("lpVault"),K("rewardVault"),K(),K(),A(),A(),A("totalReward"),Q("perShareReward"),A("lastSlot"),A("perSlotReward")]),_d=M([A("state"),A("nonce"),K("lpVault"),K("rewardVaultA"),A("totalRewardA"),Q("perShareRewardA"),A("perSlotRewardA"),D("option"),K("rewardVaultB"),be(7),A("totalRewardB"),Q("perShareRewardB"),A("perSlotRewardB"),A("lastSlot"),K()]),Vd=M([A(),A("state"),A("nonce"),A("validRewardTokenNum"),Q("rewardMultiplier"),A("rewardPeriodMax"),A("rewardPeriodMin"),A("rewardPeriodExtend"),K("lpMint"),K("lpVault"),U(Nd,5,"rewardInfos"),K("creator"),K(),U(A(),32,"padding")]),tu=new Proxy(Md,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return v(R({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(r,e,t)}}),nu=new Proxy(_d,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return v(R({},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)}}),dr=new Proxy(Vd,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return v(R({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var s;return v(R({},i),{rewardType:((s=Object.entries(an).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Ed=M([A("isSet"),A("rewardPerSecond"),A("rewardOpenTime"),A("rewardEndTime"),A("rewardType")]),zi=M([D("instruction"),A("nonce"),U(Ed,5,"rewardTimeInfo")]),Yi=M([D("instruction"),A("rewardReopenTime"),A("rewardEndTime"),A("rewardPerSecond")]),Qi=M([D("instruction"),A("isSet"),A("rewardPerSecond"),A("rewardOpenTime"),A("rewardEndTime"),A("rewardType")]),pP=M([A("state"),K("id"),K("owner"),A("deposited"),U(A(),1,"rewardDebts")]),pr=M([A("state"),K("id"),K("owner"),A("deposited"),U(Q(),1,"rewardDebts"),A(""),A("voteLockedBalance"),U(A(),15)]),fP=M([A("state"),K("id"),K("owner"),A("deposited"),U(A(),2,"rewardDebts")]),ru=M([A("state"),K("id"),K("owner"),A("deposited"),U(Q(),2,"rewardDebts"),U(A(),17)]),ou=M([A(),A("state"),K("id"),K("owner"),A("deposited"),U(Q(),5,"rewardDebts"),U(A(),16)]),rt=M([D("instruction"),A("amount")]),vd=M([K("mint"),K("grantAuthority"),A("baselineVoteWeightScaledFactor"),A("maxExtraLockupVoteWeightScaledFactor"),A("lockupSaturationSecs"),za("digitShift"),U(D(),7,"reserved1"),U(A(),7,"reserved2")]),iu=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),U(D(),32,"reserved1"),U(vd,4,"votingMints"),Po("timeOffset"),D("bump"),U(D(),7,"reserved2"),U(A(),11,"reserved3")]),Fd=M([Po("startTime"),Po("endTime"),D("kind"),U(D(),15,"reserved")]),Dd=M([U(Fd,1,"lockup"),A("amountDeposited_native"),A("amountInitiallyLockedNative"),je("isUsed"),je("allowClawback"),D("votingMintConfigIdx"),U(D(),29,"reserved")]),su=M([be(8),K("voterAuthority"),K("registrar"),U(Dd,32,"deposits"),D("voterBump"),D("voterWweightRecordBump"),U(D(),94,"reserved")]);var kP=ce("Raydium_farm_config"),uu=new au("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cu=new au("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),lu={3:tu,5:nu,6:dr},mu={3:pr,5:ru,6:ou},ji=r=>[3,5,6].indexOf(r)!==-1,Hi=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)},an={"Standard SPL":0,"Option tokens":1},yt={[ki.toString()]:3,[Ti.toString()]:5,[Vn.toString()]:6};import{PublicKey as se,SystemProgram as wn,SYSVAR_RENT_PUBKEY as Ud,SYSVAR_CLOCK_PUBKEY as br,TransactionInstruction as Ue}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Gd,TOKEN_PROGRAM_ID as lt,ASSOCIATED_TOKEN_PROGRAM_ID as Xd}from"@solana/spl-token";import xo from"bn.js";function Zi(r,e,t){return ae([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function $i(r,e){return ae([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function Ji(r,e){return ae([e.toBuffer()],r)}function es(r,e,t){return ae([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function ts(r,e,t){return ae([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function ns(r,e,t,n){return ae([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import at from"bn.js";var fr=ce("Raydium.farm.util");function yr({programId:r,poolId:e,mint:t,type:n}){let{publicKey:o}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return o}function et({programId:r,poolId:e,owner:t,version:n}){let{publicKey:o}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return o}var du=({programId:r,poolId:e})=>ae([e.toBuffer()],r);function pu(r){return{isSet:new at(1),rewardPerSecond:z(r.perSecond),rewardOpenTime:z(r.openTime),rewardEndTime:z(r.endTime),rewardType:z(an[r.rewardType])}}function rs(r){return z(r.endTime).sub(z(r.openTime)).mul(z(r.perSecond))}function Dn(r){let e=mu[r];return e||fr.logWithError("invalid version",r),e}function Wd(r){let e=lu[r];return e||fr.logWithError("invalid version",r),e}function qd(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new at(t)))return r;let o=new at(t).sub(r.lastSlot);r.lastSlot=new at(t);for(let i of r.rewardInfos){if(e.amount.eq(new at(0)))continue;let s=i.perSlotReward.mul(o);i.perShareReward=i.perShareReward.add(s.mul(new at(10).pow(new at(r.version===3?9:15))).div(e.amount)),i.totalReward=i.totalReward.add(s)}}else if(r.version===6)for(let o of r.rewardInfos){if(o.rewardState.eq(new at(0)))continue;let i=at.min(new at(n),o.rewardEndTime);if(o.rewardOpenTime.gte(i))continue;let a=i.sub(o.rewardLastUpdateTime).mul(o.rewardPerSecond),c=o.totalReward.sub(o.totalRewardEmissioned);c.lt(a)?(a=c,o.rewardLastUpdateTime=o.rewardLastUpdateTime.add(c.div(o.rewardPerSecond))):o.rewardLastUpdateTime=i,!e.amount.eq(new at(0))&&(o.accRewardPerShare=o.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),o.totalRewardEmissioned=o.totalRewardEmissioned.add(a))}return r}async function FP({connection:r,farmPools:e,owner:t,config:n,chainTime:o}){let i=!1,s=!1,a=new at(10),c=[];for(let m of e){let p=Ie(m);p.version===6?s=!0:i=!0,c.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&c.push({pubkey:et({programId:p.programId,poolId:p.id,owner:t,version:m.version}),version:p.version,key:"ledger",poolId:p.id})}let u={},l=await qe(r,c,n);for(let{pubkey:m,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(u[g]=R({},u[g]),y==="state"){let h=Wd(p);(!b||!b.data||b.data.length!==h.span)&&fr.logWithError(`invalid farm state account info, pools.id, ${m}`),u[g].state=h.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==nn.span)&&fr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${m}`),u[g].lpVault=nn.decode(b.data);else if(y==="ledger"){let h=Dn(p);b&&b.data&&(b.data.length!==h.span&&fr.logWithError(`invalid farm ledger account info, ledger, ${m}`),u[g].ledger=h.decode(b.data))}}let d=s||i?await r.getSlot():0;for(let m of Object.keys(u))u[m]!==void 0&&(u[m].state=qd(u[m].state,u[m].lpVault,d,o));for(let[m,{state:p,ledger:y}]of Object.entries(u))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new at(9)):a.pow(new at(15)),b=p.rewardInfos.map((g,h)=>{let P=y.rewardDebts[h];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(P)});u[m].wrapped=v(R({},u[m].wrapped),{pendingRewards:b})}return u}function DP(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>La(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Oa(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function os(r,e,t,n){let o=await r.getAccountInfo(e);if(o===null)throw Error("registrar info check error");let s=iu.decode(o.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let u=su.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return u===-1?{index:s,isInit:!1}:{index:u,isInit:!0}}var zd=ce("Raydium_farm_instruction"),gr={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 Bo(r){let{version:e,id:t,ledger:n,programId:o,owner:i}=r,s={3:9,5:10}[e];s||zd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Gi.span);Gi.encode({instruction:s},a);let c=[w({pubkey:t}),w({pubkey:n}),w({pubkey:i,isWritable:!1}),w({pubkey:wn.programId,isWritable:!1}),w({pubkey:Ud,isWritable:!1})];return{instruction:new Ue({programId:o,keys:c,data:a}),instructionType:E.FarmV3CreateLedger}}function fu(r){var n;let e=Buffer.alloc(zi.span);zi.encode({instruction:0,nonce:new xo(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...ai,w({pubkey:r.farmId}),w({pubkey:r.farmAuthority,isWritable:!1}),w({pubkey:r.lpVault}),w({pubkey:r.lpMint,isWritable:!1}),w({pubkey:r.lockVault}),w({pubkey:r.lockMint,isWritable:!1}),w({pubkey:(n=r.lockUserAccount)!=null?n:Ve}),w({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let o of r.rewardInfo)t.push(w({pubkey:o.rewardMint,isWritable:!1}),w({pubkey:o.rewardVault}),w({pubkey:o.userRewardToken}));return{instruction:new Ue({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function yu(r){let e=Buffer.alloc(Xi.span);Xi.encode({instruction:5},e);let t=[w({pubkey:lt,isWritable:!1}),w({pubkey:r.id}),w({pubkey:r.authority,isWritable:!1}),w({pubkey:r.lpVault,isWritable:!1}),w({pubkey:r.rewardVault}),w({pubkey:r.userRewardToken}),w({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ue({programId:r.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function Yd(r,e,t,n,o,i,s,a,c,u,l,d,m){let p=M([D("depositEntryIndex"),A("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:eo,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:d,amount:m},f);let b=Buffer.from([...gr.voterStakeRegistryDeposit,...f]);return new Ue({keys:y,programId:r,data:b})}function Qd(r,e,t,n){let o=M([]),i=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(o.span);o.encode({},s);let a=Buffer.from([...gr.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ue({keys:i,programId:r,data:a})}function jd(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([D("depositEntryIndex"),A("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:eo,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let h=Buffer.from([...gr.voterStakeRegistryWithdraw,...g]);return new Ue({keys:b,programId:r,data:h})}function Hd(r,e,t,n,o,i){let s=M([D("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({ins:23},c),new Ue({keys:a,programId:r,data:c})}function Zd(r,e,t,n,o,i,s,a){let c=M([D("voterBump"),D("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:eo,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:s,voterWeightRecordBump:a},l);let d=Buffer.from([...gr.voterStakeRegistryCreateVoter,...l]);return new Ue({keys:u,programId:r,data:d})}function $d(r,e,t,n,o,i,s,a,c,u,l,d){let m=M([D("depositEntryIndex"),D("kind"),D("option"),A("startTs"),$e("periods"),je("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:wn.programId,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Xd,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],y=Buffer.alloc(m.span);m.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:d},y);let f=Buffer.from([...gr.voterStakeRegistryCreateDepositEntry,...y]);return new Ue({keys:p,programId:r,data:f})}async function rh({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=Zi(n,o,i).publicKey,l=et({programId:e,poolId:a,owner:s,version:3}),d=await r.getAccountInfo(l);if(d===null)throw Error("user is not staker");let m=pr.decode(d.data),p=m.deposited.sub(m.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new xo(0)))throw Error("user do not has new stake amount");let y=$i(e,a).publicKey,f=Ji(e,a).publicKey,{publicKey:b,nonce:g}=es(n,u,s),h=ge(b,y,c).publicKey,{publicKey:P,nonce:k}=ts(n,u,s),T=ns(t,o,i,s).publicKey,I=[],S=ge(s,y,c).publicKey;if(await r.getAccountInfo(S)===null&&I.push(Gd(s,S,s,y)),await r.getAccountInfo(b)===null){let G=Hd(t,o,s,i,s,T);I.push(G,Zd(n,u,b,P,s,s,g,k))}let{index:x,isInit:L}=await os(r,u,b,y);return L||I.push($d(n,u,b,h,s,s,y,x,0,void 0,0,!1)),I.push(Yd(n,u,b,h,S,s,l,a,y,f,e,x,p),Qd(n,u,b,P)),I}async function oh({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=Zi(n,o,i).publicKey,l=et({programId:e,poolId:a,owner:s,version:3}),d=await r.getAccountInfo(l);if(d===null)throw Error("user is not staker");let m=pr.decode(d.data);if(m.voteLockedBalance.eq(new xo(0)))throw Error("user has vote locked balance = 0");let p=$i(e,a).publicKey,y=Ji(e,a).publicKey,{publicKey:f}=es(n,u,s),b=ge(f,p,c).publicKey,{publicKey:g}=ts(n,u,s),h=ns(t,o,i,s).publicKey,P=[],{index:k,isInit:T}=await os(r,u,f,p);if(!T)throw Error("deposit entry index check error");return P.push(jd(n,u,f,s,h,g,b,ge(s,p,c).publicKey,l,a,p,y,e,k,m.voteLockedBalance)),P}function is({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:o}){let i=Buffer.alloc(Yi.span);Yi.encode({instruction:3,rewardReopenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardPerSecond:z(o.perSecond)},i);let s=[w({pubkey:lt,isWritable:!1}),w({pubkey:n.id}),w({pubkey:n.lpVault,isWritable:!1}),w({pubkey:e}),w({pubkey:t}),w({pubkey:r,isWritable:!1,isSigner:!0})];return new Ue({programId:n.programId,keys:s,data:i})}function ss({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:o}){let i=Buffer.alloc(Qi.span);Qi.encode({instruction:4,isSet:new xo(1),rewardPerSecond:z(o.perSecond),rewardOpenTime:z(o.openTime),rewardEndTime:z(o.endTime),rewardType:z(an[o.rewardType])},i);let s=[...ai,w({pubkey:t.id}),w({pubkey:t.authority,isWritable:!1}),w({pubkey:o.mint,isWritable:!1}),w({pubkey:n}),w({pubkey:e}),w({pubkey:r,isWritable:!1,isSigner:!0})];return new Ue({programId:t.programId,keys:s,data:i})}function ih(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:o,rewardAccounts:i,owner:s,instruction:a,amount:c,deposit:u}=r,[l,d]=[new se(e.programId),new se(e.id)],m=et({programId:l,poolId:d,owner:s,version:n}),p=Buffer.alloc(rt.span);rt.encode({instruction:a,amount:c},p);let y=n===6?[w({pubkey:lt,isWritable:!1}),...u?[w({pubkey:wn.programId,isWritable:!1})]:[],w({pubkey:d}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:new se(t.lpVault)}),w({pubkey:m}),w({pubkey:s,isWritable:!1,isSigner:!0}),w({pubkey:o})]:[w({pubkey:d}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:m}),w({pubkey:s,isWritable:!1,isSigner:!0}),w({pubkey:o}),w({pubkey:new se(t.lpVault)}),w({pubkey:i[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:br,isWritable:!1}),w({pubkey:lt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(w({pubkey:i[f]})),y.push(w({pubkey:new se(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(w({pubkey:new se(t.rewardInfos[f].vault)})),y.push(w({pubkey:i[f]}));return new Ue({programId:l,keys:y,data:p})}function wr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=r,[a,c]=[new se(e.programId),new se(e.id)],u=et({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:2,amount:z(s)},l);let d=[w({pubkey:lt,isWritable:!1}),w({pubkey:c}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:new se(t.lpVault)}),w({pubkey:u}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n})];for(let m=0;m<t.rewardInfos.length;m++)d.push(w({pubkey:new se(t.rewardInfos[m].vault)})),d.push(w({pubkey:o[m]}));return new Ue({programId:a,keys:d,data:l})}function Ar(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:5}),d=Buffer.alloc(rt.span);rt.encode({instruction:12,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:br,isWritable:!1}),w({pubkey:lt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)m.push(w({pubkey:o[p]})),m.push(w({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function Pr(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:3}),d=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:br,isWritable:!1}),w({pubkey:lt,isWritable:!1})];if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function bu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:3}),d=Buffer.alloc(rt.span);rt.encode({instruction:10,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:br,isWritable:!1}),w({pubkey:lt,isWritable:!1})];if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function gu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=r,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:5}),d=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:z(s)},d);let m=[w({pubkey:u}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:l}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n}),w({pubkey:new se(t.lpVault)}),w({pubkey:o[0]}),w({pubkey:new se(t.rewardInfos[0].vault)}),w({pubkey:br,isWritable:!1}),w({pubkey:lt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)m.push(w({pubkey:o[p]})),m.push(w({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)m.push(w({pubkey:p}));return new Ue({programId:c,keys:m,data:d})}function wu(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=r,[a,c]=[new se(e.programId),new se(e.id)],u=et({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:1,amount:z(s)},l);let d=[w({pubkey:lt,isWritable:!1}),w({pubkey:wn.programId,isWritable:!1}),w({pubkey:c}),w({pubkey:new se(t.authority),isWritable:!1}),w({pubkey:new se(t.lpVault)}),w({pubkey:u}),w({pubkey:i,isWritable:!1,isSigner:!0}),w({pubkey:n})];for(let m=0;m<t.rewardInfos.length;m++)d.push(w({pubkey:new se(t.rewardInfos[m].vault)})),d.push(w({pubkey:o[m]}));return new Ue({programId:a,keys:d,data:l})}var hr=class extends Se{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ve)){let n=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:rs(v(R({},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=Vn,txVersion:i}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:uu,lockVault:cu},version:6,rewardInfos:t,programId:o},c=this.createTxBuilder(),u=n!=null?n:this.scope.ownerPubKey,l=Je({fromPublicKey:u,programId:a.programId}),d=await this.scope.connection.getMinimumBalanceForRentExemption(dr.span);c.addInstruction({instructions:[ep.createAccountWithSeed({fromPubkey:u,basePubkey:u,seed:l.seed,newAccountPubkey:l.publicKey,lamports:d,space:dr.span,programId:a.programId})]});let{publicKey:m,nonce:p}=du({programId:new ke(a.programId),poolId:l.publicKey}),y=yr({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let T of a.rewardInfos){T.openTime>=T.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",T.openTime.toString()),isNaN(an[T.rewardType])&&this.logAndCreateError("rewardType error",T.rewardType),Number(T.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",T.perSecond),f.push(pu(T));let{rewardPubKey:I,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:T,payer:u});S&&c.addInstruction(S),I||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=T.mint.equals(Ve)?new ke(Ee.address):T.mint;b.push({rewardMint:B,rewardVault:yr({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:I})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&c.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=fu({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:m,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 c.addInstruction({instructions:[P],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:l.publicKey,farmAuthority:m,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:o}){var b;let i=yt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((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 c=t||this.scope.ownerPubKey,u=n.mint.equals(Ve)?new ke(Ee.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(u)),d=s.rewardInfos[l];d||this.logAndCreateError("configuration does not exist","rewardMint",u);let m=(b=d.vault)!=null?b:Ve,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:c});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[is({payer:this.scope.ownerPubKey,rewardVault:m,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:o}){var l;let i=yt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(d=>{d.openTime>=d.endTime&&this.logAndCreateError("start time error","newRewardInfo",d)});let c=t||this.scope.ownerPubKey,u=this.createTxBuilder();for(let d of n){let m=d.mint.equals(Ve)?new ke(Ee.address):d.mint,p=a.rewardInfos.findIndex(P=>new ke(P.mint.address).equals(m)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",m);let f=(l=y.vault)!=null?l:Ve,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:d,payer:c});g&&u.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=is({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:d});u.addInstruction({instructions:[h],instructionTypes:[E.FarmV6Restart]})}return u.versionBuild({txVersion:o})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:o,payer:i}=e,s=yt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder(),l=o.mint.equals(Ve)?new ke(Ee.address):o.mint,d=yr({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:m,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:o,payer:c});return p&&u.addInstruction(p),m||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=l,u.addInstruction({instructions:[ss({payer:this.scope.ownerPubKey,userRewardTokenPub:m,farmKeys:a,rewardVault:d,rewardInfo:o})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:o,payer:i}=e,s=yt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder();for(let l of o){let d=l.mint.equals(Ve)?new ke(Ee.address):l.mint,m=yr({programId:new ke(n.programId),poolId:new ke(n.id),mint:d,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:c});y&&u.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=ss({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:v(R({},l),{mint:d})});u.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return u.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:o,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:d,programId:m}=n,p=yt[m];ji(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=et({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let P={};for(let F of this.scope.account.tokenAccounts)if(a){let Z=ge(this.scope.ownerPubKey,F.mint,F.programId).publicKey;F.publicKey&&Z.equals(F.publicKey)&&(P[F.mint.toString()]=F.publicKey)}else P[F.mint.toString()]=F.publicKey;let k=b.lpMint,T=P[k.address];T||this.logAndCreateError("you don't have any lp","lp zero",P);let I=[];for(let F of d){let Z=s&&F.mint.address===J.toString(),$=P[F.mint.address];if(!$){let{account:W,instructionParams:ft}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new ke(F.mint.address),notUseTokenAccount:Z,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!Z,associatedOnly:Z?!1:a,checkCreateATAOwner:c});$=W,ft&&h.addInstruction(ft)}P[F.mint.address]=$,I.push($)}let S,B=await this.scope.connection.getAccountInfo(g);if(B&&(S=Dn(p).decode(B.data)),n.programId!==Vn.toString()&&!S){let{instruction:F,instructionType:Z}=Bo({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[F],instructionTypes:[Z]})}let C=Hi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:I});C&&this.logAndCreateError(C);let x={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:u==null?void 0:u.map(F=>new ke(F))},L=p===6?wu(x):p===5?gu(x):bu(x),G={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return h.addInstruction({instructions:[L],instructionTypes:[G[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:o,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:d}=e,{rewardInfos:m}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=yt[n.programId];ji(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(d);let b={};for(let C of this.scope.account.tokenAccounts)if(c){let x=ge(this.scope.ownerPubKey,C.mint).publicKey;C.publicKey&&x.equals(C.publicKey)&&(b[C.mint.toString()]=C.publicKey)}else b[C.mint.toString()]=C.publicKey;if(i)i.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let C=et({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),x=await this.scope.connection.getAccountInfo(C);x||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:x}),Dn(p).decode(x.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===J.toString(),P=b[g.toString()];if(!P){let{account:C,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:c,checkCreateATAOwner:u});P=C,x&&f.addInstruction(x)}b[g.toString()]=P;let k=[];for(let C of m){let x=s&&C.mint.address===J.toString(),L=b[C.mint.address];if(!L){let{account:G,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:C.mint.programId,mint:new ke(C.mint.address),notUseTokenAccount:x,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!x,associatedOnly:x?!1:c,checkCreateATAOwner:u});L=G,F&&f.addInstruction(F)}b[C.mint.address]=L,k.push(L)}let T=Hi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:k});T&&this.logAndCreateError(T);let I={amount:z(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:P,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(C=>new ke(C))},S=p===6?wr(I):p===5?Ar(I):Pr(I),B={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[B[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let o=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),i=yt[e.programId];i!==6&&this.logAndCreateError("invalid farm version",i);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ve.toString()?new ke(Ee.address):t),a=o.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let c=(p=a==null?void 0:a.vault)!=null?p:Ve,u=this.createTxBuilder(),l;if(t.equals(Ve)){let y=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:rs(v(R({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,u.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),u.addInstruction({instructions:[Jd(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:d,instructionType:m}=yu({programId:o.programId,id:o.id,authority:o.authority,lpVault:o.lpVault,rewardVault:c,userRewardToken:l,owner:this.scope.ownerPubKey});return u.addInstruction({instructions:[d],instructionTypes:[m]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(),d={};for(let y of this.scope.account.tokenAccounts)if(i){let f=ge(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(d[y.mint.toString()]=y.publicKey)}else d[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>v(R({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,P=yt[f],k=b.address,T=n&&k===J.toString(),I=d[k];if(!I){let{account:G,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(k),notUseTokenAccount:T,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:i,checkCreateATAOwner:s});I=G,F&&l.addInstruction(F)}d[k.toString()]=I;let S=[];for(let G of g){let F=n&&G.mint.address===J.toString(),Z=d[G.mint.address];if(!Z){let{account:$,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:G.mint.programId,mint:new ke(G.mint.address),notUseTokenAccount:F,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:i,checkCreateATAOwner:s});Z=$,W&&l.addInstruction(W)}d[G.mint.address]=Z,S.push(Z)}let B=p[h],C={amount:Fe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:B,lpAccount:I,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(G=>new ke(G))},x=P===6?wr(C):P===5?Ar(C):Pr(C),L={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[x],instructionTypes:[L[P]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}};import{PublicKey as Me}from"@solana/web3.js";import{AccountLayout as Dp,NATIVE_MINT as rc,TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";var Kh=M([$e("mintAuthorityOption"),K("mintAuthority"),A("supply"),D("decimals"),D("isInitialized"),$e("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as tp}from"@solana/web3.js";import{MintLayout as Au,TOKEN_PROGRAM_ID as np}from"@solana/spl-token";var vh=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new tp(e));return!t||t.data.length!==Au.span?void 0:Au.decode(t.data)},Fh=({mint:r,decimals:e,programId:t=np,logoURI:n="",priority:o=3})=>{let i=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:i,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:i,tags:[],priority:o}},So=r=>new ye({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),kr=o=>{var i=o,{amount:r,isRaw:e,name:t}=i,n=Be(i,["amount","isRaw","name"]);return new fe(new ye({mint:ct(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function Dh(r){return r.address===Rt.address?Ee:r}function Wh(r){return r.address===Ee.address?Rt:r}var bt=o=>{var i=o,{address:r,programId:e,decimals:t}=i,n=Be(i,["address","programId","decimals"]);return R({chainId:101,address:ct(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Wn=r=>r?v(R({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:v(R({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:v(R({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as Gn,ASSOCIATED_TOKEN_PROGRAM_ID as bp}from"@solana/spl-token";import{PublicKey as we,TransactionInstruction as Gt,SystemProgram as Su,SYSVAR_RENT_PUBKEY as gp}from"@solana/web3.js";var as=M([D("instruction"),A("amountIn"),A("minAmountOut")]),us=M([D("instruction"),A("maxAmountIn"),A("amountOut")]),Jh=M([D("instruction"),D("nonce")]),cs=M([D("instruction"),D("nonce"),A("startTime")]),Tr=M([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),A("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),A("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"),A("lpReserve"),U(A(),3,"padding")]),rp=M([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),U(A(),64,"padding")]),ls=M([D("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide")]),ms=M([D("instruction"),A("amountIn")]),ek={4:Tr,5:rp},Pu=M([A("fee")]);import{PublicKey as op}from"@solana/web3.js";var Un=new op("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pn=5e4,ip=M([A("x"),A("y"),A("price")]),sp=M([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),U(ip,Pn,"DataElement")]);function ap(r,e){return[0,Pn-2]}function up(r){return[0,Pn-2]}function cp(r){return[0,Pn-2]}function lp(r,e,t){let[n,o]=ap(e,t),i=n,s=o,a=0,c=e*r.multiplier/t;for(;i<=s;){if(a=Math.floor((s+i)/2),a===0||a>=Pn-2)return[a,a,!1];let u=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,d=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(c===u)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===d)return[a+1,a+1,!0];if(c<l)s=a-1;else{if(c>l&&c<u)return[a-1,a,!0];if(c>u&&c<d)return[a,a+1,!0];i=a+1}}return[a,a,!1]}function ds(r,e,t){let[n,o,i]=lp(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,c=r.DataElement[o].x,u=r.DataElement[o].y,l=t*(c*a-s*u),d=s*l,m=(c-s)*(e*a-s*t)*u,p=d+m;return e*r.multiplier*l/p}}function An(r,e,t){return e*r.multiplier/t}function hu(r,e,t){return e*t/r.multiplier}function mp(r,e){let[t,n]=up(e),o=t,i=n,s=0,a=e;for(;o<i;){if(s=Math.floor((i+o)/2),s<=0||s>Pn-2)return[s,s,!1];let c=r.DataElement[s].x,u=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<u)i=s-1;else{if(a>u&&a<c)return[s-1,s,!0];if(a>c&&a<l)return[s,s+1,!0];o=s+1}}return[s,s,!1]}function dp(r,e){let[t,n]=cp(e),o=t,i=n,s=0,a=e;for(;o<=i;){if(s=Math.floor((i+o)/2),s<=0||s>=Pn-2)return[s,s,!1];let c=r.DataElement[s].y,u=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)o=s+1;else{if(a<u&&a>c)return[s-1,s,!0];if(a<c&&a>l)return[s,s+1,!0];i=s-1}}return[s,s,!1]}function ku(r,e,t,n){let o=n?e+t:e-t,[i,s,a]=mp(r,o);if(!a)return[0,0,!1,a];if(i===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let c=r.DataElement[i].x,u=r.DataElement[s].x,l=r.DataElement[i].price,d=r.DataElement[s].price,m=r.DataElement[i].y,p=r.DataElement[s].y;if(e>=c&&e<=u)return n?[d,p,!0,a]:[l,m,!0,a];{let y,f;return n?(y=l+(d-l)*(e-c)/(u-c),f=m-(o-c)*r.multiplier/d):(y=l+(d-l)*(e-c)/(u-c),f=p+(u-o)*r.multiplier/l),[y,f,!1,a]}}}function pp(r,e,t,n){let o=n?e-t:e+t,[i,s,a]=dp(r,o);if(!a)return[0,0,!1,a];if(i===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let c=r.DataElement[i].x,u=r.DataElement[s].x,l=r.DataElement[i].price,d=r.DataElement[s].price,m=r.DataElement[i].y,p=r.DataElement[s].y;if(e>=p&&e<=m)return n?[d,u,!0,a]:[l,c,!0,a];{let y,f;return n?(y=l+(d-l)*(m-e)/(m-p),f=c+d*(m-o)/r.multiplier):(y=l+(d-l)*(m-e)/(m-p),f=u-l*(o-p)/r.multiplier),[y,f,!1,a]}}}function fp(r,e){let t=ku(r,e,0,!1);return t[3]?t[0]:0}function Tu(r,e,t,n){let o=ds(r,e,t),i=An(r,e,o),s=An(r,t,o),a=An(r,n,o),c=!0,[u,l,d,m]=ku(r,i,a,c);if(!m)return 0;if(d)return n*r.multiplier/u;{let p=s-l;return hu(r,p,o)}}function Iu(r,e,t,n){let o=ds(r,e,t),i=An(r,e,o),s=An(r,t,o),a=An(r,n,o),c=!1,[u,l,d,m]=pp(r,s,a,c);if(!m)return 0;if(d)return n*u/r.multiplier;{let p=i-l;return hu(r,p,o)}}function yp(r){let e=sp.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 xu(r,e,t,n){let o=fp(r,An(r,e,ds(r,e,t)))/r.multiplier;return n?o:1/o}var qn=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(Un);e&&(this._layoutData=yp(e==null?void 0:e.data))}}};var Bu=ce("Raydium_liquidity_instruction");function Ku(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:i,fixedSide:s}=r,a=Buffer.alloc(ls.span);ls.encode({instruction:3,baseAmountIn:z(o),quoteAmountIn:z(i),fixedSide:s==="base"?Fe:ya},a);let c=[w({pubkey:Gn,isWritable:!1}),w({pubkey:new we(e.id)}),w({pubkey:new we(t.authority),isWritable:!1}),w({pubkey:new we(t.openOrders),isWritable:!1}),w({pubkey:new we(t.targetOrders)}),w({pubkey:new we(e.lpMint.address)}),w({pubkey:new we(t.vault.A)}),w({pubkey:new we(t.vault.B)})];return e.pooltype.includes("StablePool")&&c.push(w({pubkey:Un})),c.push(w({pubkey:new we(e.marketId),isWritable:!1}),w({pubkey:n.baseTokenAccount}),w({pubkey:n.quoteTokenAccount}),w({pubkey:n.lpTokenAccount}),w({pubkey:n.owner,isWritable:!1,isSigner:!0}),w({pubkey:new we(t.marketEventQueue),isWritable:!1})),new Gt({programId:new we(e.programId),keys:c,data:a})}function ps(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:o}=r,i=Ie(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(ms.span);ms.encode({instruction:4,amountIn:z(o)},a);let c=[w({pubkey:Gn,isWritable:!1}),w({pubkey:i.id}),w({pubkey:i.authority,isWritable:!1}),w({pubkey:i.openOrders}),w({pubkey:i.targetOrders}),w({pubkey:i.mintLp.address}),w({pubkey:i.vault.A}),w({pubkey:i.vault.B})];return s===5?c.push(w({pubkey:Un})):(c.push(w({pubkey:i.id})),c.push(w({pubkey:i.id}))),c.push(w({pubkey:i.marketProgramId,isWritable:!1}),w({pubkey:i.marketId}),w({pubkey:i.marketBaseVault}),w({pubkey:i.marketQuoteVault}),w({pubkey:i.marketAuthority,isWritable:!1}),w({pubkey:n.lpTokenAccount}),w({pubkey:n.baseTokenAccount}),w({pubkey:n.quoteTokenAccount}),w({pubkey:n.owner,isWritable:!1,isSigner:!0}),w({pubkey:i.marketEventQueue}),w({pubkey:i.marketBids}),w({pubkey:i.marketAsks})),new Gt({programId:i.programId,keys:c,data:a})}return new Gt({programId:i.programId,keys:[]})}function Cu({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:i,pcMint:s,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:d,marketProgramId:m,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:P,coinAmount:k,pcAmount:T,ammConfigId:I,feeDestinationId:S}){let B=M([D("instruction"),D("nonce"),A("openTime"),A("pcAmount"),A("coinAmount")]),C=[{pubkey:Gn,isSigner:!1,isWritable:!1},{pubkey:bp,isSigner:!1,isWritable:!1},{pubkey:Su.programId,isSigner:!1,isWritable:!1},{pubkey:st,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:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:m,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}],x=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:h,openTime:P,coinAmount:k,pcAmount:T},x),{instruction:new Gt({keys:C,programId:r,data:x}),instructionType:E.AmmV4CreatePool}}function bk(r){let e=M([D("instruction"),D("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[w({pubkey:new we(r.id),isWritable:!1}),w({pubkey:new we(r.authority),isWritable:!1}),w({pubkey:new we(r.openOrders),isWritable:!1}),w({pubkey:new we(r.vault.A),isWritable:!1}),w({pubkey:new we(r.vault.B),isWritable:!1}),w({pubkey:new we(r.mintLp.address),isWritable:!1}),w({pubkey:new we(r.marketId),isWritable:!1}),w({pubkey:new we(r.marketEventQueue),isWritable:!1})];return new Gt({programId:new we(r.programId),keys:n,data:t})}function wp({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},o){let i=Ie(r),s=Buffer.alloc(as.span);as.encode({instruction:9,amountIn:z(t),minAmountOut:z(n)},s);let a=[w({pubkey:Gn,isWritable:!1}),w({pubkey:i.id}),w({pubkey:i.authority,isWritable:!1}),w({pubkey:i.openOrders})];return o===4&&a.push(w({pubkey:i.targetOrders})),a.push(w({pubkey:i.vault.A}),w({pubkey:i.vault.B})),o===5&&a.push(w({pubkey:Un})),a.push(w({pubkey:i.marketProgramId,isWritable:!1}),w({pubkey:i.marketId}),w({pubkey:i.marketBids}),w({pubkey:i.marketAsks}),w({pubkey:i.marketEventQueue}),w({pubkey:i.marketBaseVault}),w({pubkey:i.marketQuoteVault}),w({pubkey:i.marketAuthority,isWritable:!1}),w({pubkey:e.tokenAccountIn}),w({pubkey:e.tokenAccountOut}),w({pubkey:e.owner,isWritable:!1})),new Gt({programId:i.programId,keys:a,data:s})}function Ap({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},o){let i=Ie(r),s=Buffer.alloc(us.span);us.encode({instruction:11,maxAmountIn:z(t),amountOut:z(n)},s);let a=[w({pubkey:Gn,isWritable:!1}),w({pubkey:i.id}),w({pubkey:i.authority,isWritable:!1}),w({pubkey:i.openOrders}),w({pubkey:i.targetOrders}),w({pubkey:i.vault.A}),w({pubkey:i.vault.B})];return o===5&&a.push(w({pubkey:Un})),a.push(w({pubkey:i.marketProgramId,isWritable:!1}),w({pubkey:i.marketId}),w({pubkey:i.marketBids}),w({pubkey:i.marketAsks}),w({pubkey:i.marketEventQueue}),w({pubkey:i.marketBaseVault}),w({pubkey:i.marketQuoteVault}),w({pubkey:i.marketAuthority,isWritable:!1}),w({pubkey:e.tokenAccountIn}),w({pubkey:e.tokenAccountOut}),w({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Gt({programId:i.programId,keys:a,data:s})}function Ko(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 wp(v(R({},a),{amountIn:o,minAmountOut:i}),t);if(s==="out")return Ap(v(R({},a),{maxAmountIn:o,amountOut:i}),t);Bu.logWithError("invalid params","params",r)}throw Bu.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function gk({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(cs.span);cs.encode({instruction:0,nonce:5,startTime:z(t)},n);let o=Ie(r),i=[w({pubkey:Gn,isWritable:!1}),w({pubkey:Su.programId,isWritable:!1}),w({pubkey:gp,isWritable:!1}),w({pubkey:o.id}),w({pubkey:o.authority,isWritable:!1}),w({pubkey:o.openOrders}),w({pubkey:o.mintLp.address}),w({pubkey:o.mintA.address,isWritable:!1}),w({pubkey:o.mintB.address,isWritable:!1}),w({pubkey:o.vault.A,isWritable:!1}),w({pubkey:o.vault.B,isWritable:!1}),w({pubkey:o.id}),w({pubkey:o.targetOrders}),w({pubkey:e.lpTokenAccount}),w({pubkey:o.id,isWritable:!1}),w({pubkey:o.marketProgramId,isWritable:!1}),w({pubkey:o.marketId,isWritable:!1}),w({pubkey:e.payer,isSigner:!0})];return new Gt({programId:o.programId,keys:i,data:n})}function Ru({poolKeys:r}){let e=M([D("instruction"),D("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[w({pubkey:new we(r.id),isWritable:!1}),w({pubkey:new we(r.authority),isWritable:!1}),w({pubkey:new we(r.openOrders),isWritable:!1}),w({pubkey:new we(r.vault.A),isWritable:!1}),w({pubkey:new we(r.vault.B),isWritable:!1}),w({pubkey:new we(r.mintLp.address),isWritable:!1}),w({pubkey:new we(r.marketId),isWritable:!1}),w({pubkey:new we(r.marketEventQueue),isWritable:!1})];return{instruction:new Gt({programId:new we(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as He,TOKEN_2022_PROGRAM_ID as un,ASSOCIATED_TOKEN_PROGRAM_ID as Yu}from"@solana/spl-token";import{PublicKey as q,TransactionInstruction as St,SystemProgram as Xn,Keypair as hs}from"@solana/web3.js";import Qu from"bn.js";import Rp from"bn.js";function Lu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function Ak(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function Pk(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function Co(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function fs(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function ys(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Ir(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ou(r,e){return Ir(r,e)?null:fs(r,e)}function Nu(r,e){return Ir(r,e)?null:ys(r,e)}var Pp=Buffer.from("amm_config","utf8"),hp=Buffer.from("pool","utf8"),kp=Buffer.from("pool_vault","utf8"),Tp=Buffer.from("pool_reward_vault","utf8"),Mu=Buffer.from("position","utf8"),Ip=Buffer.from("tick_array","utf8"),xp=Buffer.from("operation","utf8"),Bp=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ik(r,e){return ae([Pp,Lu(e)],r)}function _u(r,e,t,n){return ae([hp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function bs(r,e,t){return ae([kp,e.toBuffer(),t.toBuffer()],r)}function Vu(r,e,t){return ae([Tp,e.toBuffer(),t.toBuffer()],r)}function Ae(r,e,t){return ae([Ip,e.toBuffer(),Co(t)],r)}function hn(r,e,t,n){return ae([Mu,e.toBuffer(),Co(t),Co(n)],r)}function gt(r,e){return ae([Mu,e.toBuffer()],r)}function Ro(r){return ae([Buffer.from("metadata","utf8"),Mn.toBuffer(),r.toBuffer()],Mn)}function xr(r){return ae([xp],r)}function mt(r,e){return ae([Bp,e.toBuffer()],r)}import wt from"bn.js";var pe=new wt(0),dt=new wt(1),Xt=new wt(-1),pt=new wt(1).shln(64),Lo=new wt(1).shln(128),gs=pt.sub(dt),Br=64,Eu=Lo.subn(1),tt=-443636,ot=-tt,_t=new wt("4295048016"),Vt=new wt("79226673521066979257578248091"),Oo=new wt("4295048017"),No=new wt("79226673521066979257578248090"),vu=16,Fu="59543866431248",Du="184467440737095516",Wu="15793534762490258745",Mo=new wt(10).pow(new wt(6)),Sp=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Sp||{}),Sk={[500]:10,[3e3]:60,[1e4]:200},Kk={version:6,liquidity:pe,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:pe,feeGrowthGlobalX64B:pe,protocolFeesTokenA:pe,protocolFeesTokenB:pe,swapInAmountTokenA:pe,swapOutAmountTokenB:pe,swapInAmountTokenB:pe,swapOutAmountTokenA:pe,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},qu={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:[]},Ck=new wt("18446744073700000000");var Kp=15,me=class{static async getTickArrays(e,t,n,o,i,s,a){let c=[],u=j.getTickArrayStartIndexByTick(o,i),l=j.getInitializedTickArrayInRange(s,a,i,u,Math.floor(Kp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=Ae(t,n,l[p]);c.push(y)}let d=(await Tt(e,c)).map(p=>p!==null?Sr.decode(p.data):null),m={};for(let p=0;p<c.length;p++){let y=d[p];y!==null&&(m[y.startTickIndex]=v(R({},y),{address:c[p]}))}return m}static nextInitializedTick(e,t,n,o,i,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,o,i,s);for(;a==null||a.liquidityGross.lten(0);){if(u=j.getNextTickArrayStartIndex(u,i,s),this.checkIsValidStartIndex(u,i))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,o,i){let s=Math.floor(e/me.tickCount(t)),a=n?j.searchLowBitFromStart(o,i,s-1,1,t):j.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=De-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a-1}}else{let a=0;for(;a<De;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a+1}}let{publicKey:s}=Ae(e,t,n.startTickIndex);return{nextTick:i,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,o,i,s){let a=j.getTickArrayStartIndexByTick(o,i),c=Math.floor((o-a)/i),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<De;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=Ae(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(j.checkIsOutOfBoundary(e)){if(e>ot)return!1;let n=j.getTickArrayStartIndexByTick(tt,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return De*e}};import ie from"bn.js";import{PublicKey as Bt}from"@solana/web3.js";import Re from"bn.js";var ws=14,zt=class{static maxTickInTickarrayBitmap(e){return e*De*kn}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(!me.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let i=this.maxTickInTickarrayBitmap(n),s=o?t-me.tickCount(n):t+me.tickCount(n);if(s<-i||s>=i)return{isInit:!1,tickIndex:t};let a=n*De,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(o){let l=e.shln(1024-u-1),d=Ou(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-i}}else{let l=e.shrn(u),d=Nu(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:i-me.tickCount(n)}}}},Kr=class{static getBitmapOffset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=zt.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=zt.maxTickInTickarrayBitmap(e),n=-t;if(ot<=t)throw Error(`extensionTickBoundary check error: ${ot}, ${t}`);if(n<=tt)throw Error(`extensionTickBoundary check error: ${n}, ${tt}`);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:j.mergeTickArrayBitmap(o).testn(i),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,o){let i=me.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}=zt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(o){let c=j.mergeTickArrayBitmap(e).shln(kn-1-a),u=Ir(512,c)?null:fs(512,c);if(u!==null){let l=t-u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i}}else{let c=j.mergeTickArrayBitmap(e).shrn(a),u=Ir(512,c)?null:ys(512,c);if(u!==null){let l=t+u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-me.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%zt.maxTickInTickarrayBitmap(t),o=Math.floor(n/me.tickCount(t));return e<0&&n!=0&&(o=kn-o),o}};import Et from"bn.js";var Cr=class{static getfeeGrowthInside(e,t,n){let o=new Et(0),i=new Et(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 Et(0),a=new Et(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64A,o),s),u=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,pt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,pt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,pt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,pt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),d=ne.mulDivFloor(l,t.liquidity,pt),m=u.rewardAmountOwed.add(d);i.push(m)}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 c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),d=ne.mulDivFloor(l,t.liquidity,pt),m=u.rewardAmountOwed.add(d);i.push(m)}return i}static getRewardGrowthInside(e,t,n,o){let i=[];for(let s=0;s<o.length;s++){let a=new Et(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 c=new Et(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=o[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(o[s].rewardGrowthGlobalX64,a),c))}return i}static getRewardGrowthInsideV2(e,t,n,o){let i=[];for(let s=0;s<o.length;s++){let a=new Et(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 c=new Et(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=o[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(o[s].rewardGrowthGlobalX64,a),c))}return i}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:o,add:i,epochInfo:s}){var b,g,h,P;let a=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),c=te.getSqrtPriceX64FromTick(t.tickLower),u=te.getSqrtPriceX64FromTick(t.tickUpper),l=i?1+o:1-o,d=le.getAmountsFromLiquidity(a,c,u,n,i),[m,p]=[he(d.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),he(d.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[he(new Et(new V(d.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),he(new Et(new V(d.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(m.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Uu}from"@solana/spl-token";var Le=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:b}=Tn.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 c.push(...y),{allTrade:m,expectedAmountOut:p.mul(Xt),remainingAccounts:c,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,o,i){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=Ae(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:y}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,o.mul(Xt),u,i);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:o}=Le.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Kr.checkTickArrayIsInit(me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):j.checkTickArrayIsInitialized(j.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Ae(e.programId,e.id,o);return{isExist:!0,startIndex:o,nextAccountMeta:a}}let{isExist:i,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(i){let{publicKey:a}=Ae(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/me.tickCount(e.tickSpacing)),o=t?j.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):j.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=me.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:o,tickIndex:i}=zt.nextInitializedTickArrayStartIndex(j.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(o)return{isExist:!0,nextStartIndex:i};t=i;let{isInit:s,tickIndex:a}=Kr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<tt||t>ot)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,c,u;let s=[];for(let l=0;l<i.length;l++){let d=i[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=v(R({},d),{perSecond:ne.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Bt(m)});if(p.tokenMint.equals(Bt.default))continue;if(n<=p.openTime.toNumber()||o.eq(pe)){s.push(p);continue}let y=new Re(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=ne.mulDivFloor(f,p.emissionsPerSecondX64,o),g=p.rewardGrowthGlobalX64.add(b),h=ne.mulDivFloor(f,p.emissionsPerSecondX64,pt),P=p.rewardTotalEmissioned.add(h);s.push(v(R({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:P,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:o}=this.tickRange(e);for(let i of t){let s=j.getTickArrayStartIndexByTick(i,e);if(s>=n||s<o)return!0}return!1}static tickRange(e){let t=zt.maxTickInTickarrayBitmap(e),n=-t;return t>ot&&(t=me.getArrayStartIndex(ot,e)+me.tickCount(e)),n<tt&&(n=me.getArrayStartIndex(tt,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/me.tickCount(t)*kn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await qe(e,t.map(s=>({pubkey:s})),{batchRequest:n}),i={};for(let s of o)s.accountInfo!==null&&(i[s.pubkey.toString()]=Gu.decode(s.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let c of t){let u=j.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=j.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=Ae(c.programId,c.id,d);i.push({pubkey:m}),o[m.toString()]=c.id}}let s=await qe(e,i,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=o[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Sr.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=v(R({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:o=!1,updateOwnerRewardAndFee:i=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let p of s)u.push(gt(p,m).publicKey);let l=await Tt(t,u,{batchRequest:o}),d={};for(let m of l){if(m===null)continue;let p=_o.decode(m.data),y=p.poolId.toString(),f=e.find(B=>B.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=j._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=j._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:k}=le.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),T=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:P,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(B=>v(R({},B),{pendingReward:new Re(0)})),leverage:T,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let I=await j.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await j.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=I,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(i){let m=Object.values(d),p=await Tt(t,m,{batchRequest:o}),y={};for(let f=0;f<m.length;f++){let b=p[f];if(b===null)continue;let g=m[f].toString();y[g]=Sr.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}`,P=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[d[h].toString()],T=y[d[P].toString()],I=k.ticks[j.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=T.ticks[j.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:C}=await Cr.GetPositionFees(f,g,I,S),x=await Cr.GetPositionRewards(f,g,I,S);g.tokenFeeAmountA=B.gte(new Re(0))?B:new Re(0),g.tokenFeeAmountB=C.gte(new Re(0))?C:new Re(0);for(let L=0;L<x.length;L++)g.rewardInfos[L].pendingReward=x[L].gte(new Re(0))?x[L]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:o,amountIn:i,slippage:s,priceLimit:a=new V(0),catchLiquidityInsufficient:c=!1}){var G;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new V(0))?u=l?_t.add(new Re(1)):Vt.sub(new Re(1)):u=te.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(i,d,o,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:h}=Le.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((G=p.fee)!=null?G:pe),u,c),P=he(f,m,o,!1),k=te.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?k:new V(1).div(k),I=f.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),S=he(I,m,o,!1),B=l?e.currentPrice:new V(1).div(e.currentPrice),C=new V(T).sub(B).abs(),x=B,L=new ve(new V(C).mul(10**15).toFixed(0),new V(x).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:P,minAmountOut:S,expirationTime:Ot(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:T,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 c=o.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new ye(v(R({},u),{mint:u.address,isToken2022:u.programId===Uu.toBase58()})),new ye(v(R({},l),{mint:l.address,isToken2022:l.programId===Uu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:h,executionPrice:P,priceImpact:k,fee:T,remainingAccounts:I,executionPriceX64:S}=Le.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Bt(u.address),amountIn:n,slippage:i,epochInfo:s,catchLiquidityInsufficient:a}),B=v(R({},y),{amount:new fe(d,y.amount),fee:y.fee===void 0?void 0:new fe(d,y.fee)}),C=v(R({},f),{amount:new fe(m,f.amount),fee:f.fee===void 0?void 0:new fe(m,f.fee)}),x=v(R({},b),{amount:new fe(m,b.amount),fee:b.fee===void 0?void 0:new fe(m,b.fee)}),L=new We({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:m,numerator:h.mul(new V(10**(20+m.decimals))).toFixed(0)}),G=new We({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:m,numerator:P.mul(new V(10**(20+m.decimals))).toFixed(0)}),F=new fe(d,T);return{allTrade:p,realAmountIn:B,amountOut:C,minAmountOut:x,expirationTime:g,currentPrice:L,executionPrice:G,priceImpact:k,fee:F,remainingAccounts:I,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var y,f,b;let i=e[t],s=j.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=j.getTickPrice({poolInfo:e,tick:o,baseIn:!0}).price.toNumber(),c=Math.max(s,i.priceMin),l=Math.min(a,i.priceMax)-c,d=a-s,m=i.priceMax-i.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{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:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=o[ct(e.mintA.address).toString()],m=o[ct(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),b=te.getSqrtPriceX64FromTick(s),g=te.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:P}=le.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:T}=le.getAmountsFromLiquidityWithSlippage(f,b,g,i,!1,!1,0),I=new V(h.toString()).div(new V(10).pow(p)).mul(d.value).add(new V(P.toString()).div(new V(10).pow(y)).mul(m.value)),S=new V(k.toString()).div(new V(10).pow(p)).mul(d.value).add(new V(T.toString()).div(new V(10).pow(y)).mul(m.value)),B=S.div(I.add(S)).div(S),x=new V(l.volumeFee).mul(365).div(u).mul(B).mul(100).toNumber(),L=3600*24*365,G=e.rewardDefaultInfos.map(F=>{var W,ft;let Z=F.mint.decimals,$=o[F.mint.address];return c<((W=F.startTime)!=null?W:0)||c>((ft=F.endTime)!=null?ft:0)||!F.perSecond||!$||Z===void 0?0:new V($.value).mul(new V(F.perSecond).mul(L)).div(new V(10).pow(Z)).mul(B).mul(100).toNumber()});return{feeApr:x,rewardsApr:G,apr:x+G.reduce((F,Z)=>F+Z,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,h;let l=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),d=te.getSqrtPriceX64FromTick(n),m=te.getSqrtPriceX64FromTick(o),p=a?1-s:1+s,y=he(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new Re(new V(y.amount.sub((h=y.fee)!=null?h:pe).toString()).mul(p).toFixed(0)),b;if(l.lte(d))b=t?le.getLiquidityFromTokenAmountA(d,m,f,!a):new Re(0);else if(l.lte(m)){let P=le.getLiquidityFromTokenAmountA(l,m,f,!a),k=le.getLiquidityFromTokenAmountB(d,l,f);b=t?P:k}else b=t?new Re(0):le.getLiquidityFromTokenAmountB(d,m,f);return Le.getAmountsFromLiquidity({epochInfo:c,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,P;let c=te.getSqrtPriceX64FromTick(n),u=te.getSqrtPriceX64FromTick(o),l=a?1+s:1-s,d=le.getAmountsFromLiquidity(te.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),c,u,i,a),[m,p]=[he(d.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),he(d.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[he(d.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),he(d.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:i,amountA:m,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(c=>!n[c.id]).map(c=>new Bt(c.id));(await Tt(e,o)).forEach((c,u)=>{!c||(n[o[u].toBase58()]=In.decode(c.data))});let s=t.map(c=>mt(new Bt(c.programId),new Bt(c.id)).publicKey),a=await Le.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>v(R({},c),{[u.id]:v(R({},n[u.id]),{id:new Bt(u.id),version:6,programId:new Bt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:v(R({},u.config),{id:new Bt(u.config.id),fundOwner:""}),currentPrice:new V(u.price),exBitmapInfo:a[mt(new Bt(u.programId),new Bt(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function fT({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:o,slippage:i,add:s,epochInfo:a,amountHasFee:c}){var P,k,T,I;let[u,l,d,m]=e<t?[e,t,n,o]:[t,e,o,n],p=te.priceToSqrtPriceX64(new V(r.price),r.mintA.decimals,r.mintB.decimals),y=te.getSqrtPriceX64FromTick(u),f=te.getSqrtPriceX64FromTick(l),[b,g]=[he(d,(P=r.mintA.extensions)==null?void 0:P.feeConfig,a,!c),he(m,(k=r.mintB.extensions)==null?void 0:k.feeConfig,a,!c)],h=le.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((T=b.fee)!=null?T:pe),g.amount.sub((I=g.fee)!=null?I:pe));return le.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:h,slippage:i,add:s,epochInfo:a,amountAddFee:!c})}var ne=class{static mulDivRoundingUp(e,t,n){let o=e.mul(t),i=o.div(n);return o.mod(n).eq(pe)||(i=i.add(dt)),i}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(dt)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ie(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Lo).sub(t).mod(Lo)}};function Ge(r,e){return As(r.mul(e),64,256)}function Cp(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function As(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var te=class{static sqrtPriceX64ToPrice(e,t,n){return ne.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return ne.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,o){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))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(pe))return e;let i=t.shln(Br);if(o){let s=i,a=i.add(n.mul(e));return a.gte(s)?ne.mulDivCeil(s,e,a):ne.mulDivRoundingUp(s,dt,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 ne.mulDivCeil(i,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,o){let i=n.shln(Br);if(o)return e.add(i.div(t));{let s=ne.mulDivRoundingUp(i,dt,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<tt||e>ot)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ie("18445821805675395072"):new ie("18446744073709551616");return(t&2)!=0&&(n=Ge(n,new ie("18444899583751176192"))),(t&4)!=0&&(n=Ge(n,new ie("18443055278223355904"))),(t&8)!=0&&(n=Ge(n,new ie("18439367220385607680"))),(t&16)!=0&&(n=Ge(n,new ie("18431993317065453568"))),(t&32)!=0&&(n=Ge(n,new ie("18417254355718170624"))),(t&64)!=0&&(n=Ge(n,new ie("18387811781193609216"))),(t&128)!=0&&(n=Ge(n,new ie("18329067761203558400"))),(t&256)!=0&&(n=Ge(n,new ie("18212142134806163456"))),(t&512)!=0&&(n=Ge(n,new ie("17980523815641700352"))),(t&1024)!=0&&(n=Ge(n,new ie("17526086738831433728"))),(t&2048)!=0&&(n=Ge(n,new ie("16651378430235570176"))),(t&4096)!=0&&(n=Ge(n,new ie("15030750278694412288"))),(t&8192)!=0&&(n=Ge(n,new ie("12247334978884435968"))),(t&16384)!=0&&(n=Ge(n,new ie("8131365268886854656"))),(t&32768)!=0&&(n=Ge(n,new ie("3584323654725218816"))),(t&65536)!=0&&(n=Ge(n,new ie("696457651848324352"))),(t&131072)!=0&&(n=Ge(n,new ie("26294789957507116"))),(t&262144)!=0&&(n=Ge(n,new ie("37481735321082"))),e>0&&(n=Eu.div(n)),n}static getTickFromPrice(e,t,n){return te.getTickFromSqrtPriceX64(te.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Vt)||e.lt(_t))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ie(t-64),o=Cp(n,32,128),i=new ie("8000000000000000","hex"),s=0,a=new ie(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new ie(0))&&s<vu;){c=c.mul(c);let y=c.shrn(127);c=c.shrn(63+y.toNumber()),a=a.add(i.mul(y)),i=i.shrn(1),s+=1}let u=a.shrn(32),d=o.add(u).mul(new ie(Fu)),m=As(d.sub(new ie(Du)),64,128).toNumber(),p=As(d.add(new ie(Wu)),64,128).toNumber();return m==p?m:te.getSqrtPriceX64FromTick(p).lte(e)?p:m}},xn=class{static getTickWithPriceAndTickspacing(e,t,n,o){let s=te.getTickFromSqrtPriceX64(te.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=xn.getTickWithPriceAndTickspacing(e,t,n,o),s=te.getSqrtPriceX64FromTick(i);return te.sqrtPriceX64ToPrice(s,n,o)}},le=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(pe))throw new Error("sqrtPriceX64A must greater than 0");let i=n.ushln(Br),s=t.sub(e);return o?ne.mulDivRoundingUp(ne.mulDivCeil(i,s,t),dt,e):ne.mulDivFloor(i,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,o){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return o?ne.mulDivCeil(n,t.sub(e),pt):ne.mulDivFloor(n,t.sub(e),pt)}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?ne.mulDivRoundingUp(a,dt,gs):a.shrn(Br)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),ne.mulDivFloor(n,gs,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return le.getLiquidityFromTokenAmountA(t,n,o,!1);if(e.lt(n)){let s=le.getLiquidityFromTokenAmountA(e,n,o,!1),a=le.getLiquidityFromTokenAmountB(t,e,i);return s.lt(a)?s:a}else return le.getLiquidityFromTokenAmountB(t,n,i)}static getAmountsFromLiquidity(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:le.getTokenAmountAFromLiquidity(t,n,o,i),amountB:new ie(0)};if(e.lt(n)){let s=le.getTokenAmountAFromLiquidity(e,n,o,i),a=le.getTokenAmountBFromLiquidity(t,e,o,i);return{amountA:s,amountB:a}}else return{amountA:new ie(0),amountB:le.getTokenAmountBFromLiquidity(t,n,o,i)}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,i,s,a){let{amountA:c,amountB:u}=le.getAmountsFromLiquidity(e,t,n,o,s),l=i?1+a:1-a,d=new ie(new V(c.toString()).mul(l).toFixed(0)),m=new ie(new V(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:o,slippage:i,add:s,epochInfo:a,amountAddFee:c}){var h,P,k,T;let u=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=te.getSqrtPriceX64FromTick(t),d=te.getSqrtPriceX64FromTick(n),m=s?1+i:1-i,p=le.getAmountsFromLiquidity(u,l,d,o,s),[y,f]=[he(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),he(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[b,g]=[he(new ie(new V(p.amountA.toString()).mul(m).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),he(new ie(new V(p.amountB.toString()).mul(m).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)];return{liquidity:o,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Ot(y.expirationTime,f.expirationTime)}}},Tn=class{static swapCompute(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f=!1){if(m.eq(pe))throw new Error("amountSpecified must not be 0");if(y||(y=s?_t.add(dt):Vt.sub(dt)),s){if(y.lt(_t))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Vt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let b=m.gt(pe),g={amountSpecifiedRemaining:m,amountCalculated:pe,sqrtPriceX64:d,tick:u>p?Math.min(p+me.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new ie(0)},h=p,P=n[p],k=0,T=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(pe)&&!g.sqrtPriceX64.eq(y);){k>10;let I={};I.sqrtPriceStartX64=g.sqrtPriceX64;let S=j.nextInitTick(P,g.tick,l,s,T),B=S||null,C=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let L=Le.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:G}=Ae(e,t,h);C=G,P=n[h];try{B=j.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}I.tickNext=B.tick,I.initialized=B.liquidityGross.gtn(0),p!==h&&C&&(g.accounts.push(C),p=h),I.tickNext<tt?I.tickNext=tt:I.tickNext>ot&&(I.tickNext=ot),I.sqrtPriceNextX64=te.getSqrtPriceX64FromTick(I.tickNext);let x;if(s&&I.sqrtPriceNextX64.lt(y)||!s&&I.sqrtPriceNextX64.gt(y)?x=y:x=I.sqrtPriceNextX64,[g.sqrtPriceX64,I.amountIn,I.amountOut,I.feeAmount]=Tn.swapStepCompute(g.sqrtPriceX64,x,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(I.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(I.amountIn.add(I.feeAmount)),g.amountCalculated=g.amountCalculated.sub(I.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(I.amountOut),g.amountCalculated=g.amountCalculated.add(I.amountIn.add(I.feeAmount))),g.sqrtPriceX64.eq(I.sqrtPriceNextX64)){if(I.initialized){let L=B.liquidityNet;s&&(L=L.mul(Xt)),g.liquidity=le.addDelta(g.liquidity,L)}T=I.tickNext!=g.tick&&!s&&P.startTickIndex===I.tickNext,g.tick=s?I.tickNext-1:I.tickNext}else if(g.sqrtPriceX64!=I.sqrtPriceStartX64){let L=te.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=L!=g.tick&&!s&&P.startTickIndex===L,g.tick=L}++k}try{let{nextStartIndex:I,isExist:S}=me.nextInitializedTickArray(g.tick,l,s,o,i);S&&p!==I&&(g.accounts.push(Ae(e,t,I).publicKey),p=I)}catch{}return{allTrade:!0,amountSpecifiedRemaining:pe,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 ie(0),amountIn:new ie(0),amountOut:new ie(0),feeAmount:new ie(0)},a=e.gte(t),c=o.gte(pe);if(c){let l=ne.mulDivFloor(o,Mo.sub(new ie(i.toString())),Mo);s.amountIn=a?le.getTokenAmountAFromLiquidity(t,e,n,!0):le.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?le.getTokenAmountBFromLiquidity(t,e,n,!1):le.getTokenAmountAFromLiquidity(e,t,n,!1),o.mul(Xt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromOutput(e,n,o.mul(Xt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=le.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=le.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:le.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:le.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(o.mul(Xt))&&(s.amountOut=o.mul(Xt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=o.sub(s.amountIn):s.feeAmount=ne.mulDivCeil(s.amountIn,new ie(i),Mo.sub(new ie(i))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var De=60,kn=512,j=class{static getTickArrayAddressByTick(e,t,n,o){let i=j.getTickArrayStartIndexByTick(n,o),{publicKey:s}=Ae(e,t,i);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=j.getTickArrayStartIndexByTick(e,t),o=Math.floor((e-n)/t);if(o<0||o>=De)throw new Error("tick offset in array overflow");return o}static getTickArrayBitIndex(e,t){let n=me.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)*me.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*De,o=Math.floor(e/n)+512;return Math.abs(o)}static checkTickArrayIsInitialized(e,t,n){let o=n*De,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*De:e+t*De}static mergeTickArrayBitmap(e){let t=new Rp(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*De));return[...j.searchLowBitFromStart(e,t,s-1,i,n),...j.searchHightBitFromStart(e,t,s,i,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return j.searchHightBitFromStart(e,t,0,kn,n)}static getAllInitializedTickArrayInfo(e,t,n,o,i){let s=[],a=j.getAllInitializedTickArrayStartIndex(n,o,i);for(let c of a){let{publicKey:u}=Ae(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>j.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===o)break}let c=me.tickCount(i);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,o,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>j.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===o)break}let c=me.tickCount(i);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<tt||e>ot}static nextInitTick(e,t,n,o,i){if(me.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<De;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=De-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<De;){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=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:o}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),i=xn.getTickWithPriceAndTickspacing(o,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let o=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(o,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:o}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:o}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let o=n?t:new V(1).div(t),i=xn.getTickWithPriceAndTickspacing(o,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}};var Xu=M([be(8),D("bump"),Nt("index"),K(""),$e("protocolFeeRate"),$e("tradeFeeRate"),Nt("tickSpacing"),U(A(),8,"")]),Lp=M([$e("blockTimestamp"),Q("sqrtPriceX64"),Q("cumulativeTimePriceX64"),U(Q(),1,"")]),Ps=M([be(8),je("initialized"),K("poolId"),U(Lp,1e3,"observations"),U(Q(),5,"")]),Op=M([D("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),Q("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),Q("rewardGrowthGlobalX64")]),In=M([be(8),D("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),D("mintDecimalsA"),D("mintDecimalsB"),Nt("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Qe("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),D("status"),U(D(),7,""),U(Op,3,"rewardInfos"),U(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),U(A(),15*4-3,"padding")]),Np=M([Q("growthInsideLastX64"),A("rewardAmountOwed")]),_o=M([be(8),D("bump"),K("nftMint"),K("poolId"),Qe("tickLower"),Qe("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),U(Np,3,"rewardInfos"),U(A(),8,"")]),vT=M([be(8),D("bump"),K("poolId"),Qe("tickLowerIndex"),Qe("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),U(Q(),3,"rewardGrowthInside"),U(A(),8,"")]),Mp=M([Qe("tick"),Ya("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),U(Q(),3,"rewardGrowthsOutsideX64"),U($e(),13,"")]),Sr=M([be(8),K("poolId"),Qe("startTickIndex"),U(Mp,De,"ticks"),D("initializedTickCount"),U(D(),115,"")]),zu=M([be(329),U(K(),100,"whitelistMints")]),Gu=M([be(8),K("poolId"),U(U(A(),8),ws,"positiveTickArrayBitmap"),U(U(A(),8),ws,"negativeTickArrayBitmap")]);var ju=ce("Raydium_Clmm"),Kt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ke=class{static createPoolInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([Q("sqrtPriceX64"),A("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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...Kt.createPool,...g]);return new St({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:o,mintA:i,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=Je({fromPublicKey:o,programId:n}),[m,p]=[new q(i.address),new q(s.address)],y=[Xn.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ps.span),space:Ps.span,programId:n})],{publicKey:f}=_u(n,a,m,p),{publicKey:b}=bs(n,f,m),{publicKey:g}=bs(n,f,p);return y.push(this.createPoolInstruction(n,f,o,a,d.publicKey,m,b,new q(i.programId||He),p,g,new q(s.programId||He),mt(n,f).publicKey,c,u)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:d.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,P,k,T,I,S,B,C,x){let L=M([Qe("tickLowerIndex"),Qe("tickUpperIndex"),Qe("tickArrayLowerStartIndex"),Qe("tickArrayUpperStartIndex"),Q("liquidity"),A("amountMaxA"),A("amountMaxB"),je("withMetadata"),D("optionBaseFlag"),je("baseFlag")]),G=[...x?[{pubkey:x,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Yu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...G],Z=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:S,amountMaxB:B,withMetadata:C==="create",baseFlag:!1,optionBaseFlag:0},Z);let $=Buffer.from([...Kt.openPosition,...Z]);return new St({keys:F,programId:e,data:$})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let B=hs.generate();d.push(B),y=B.publicKey}let f=j.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=j.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=Ae(m,p,f),{publicKey:h}=Ae(m,p,b),{publicKey:P}=ge(n.wallet,y,He),{publicKey:k}=Ro(y),{publicKey:T}=gt(m,y),{publicKey:I}=hn(m,p,o,i),S=this.openPositionFromLiquidityInstruction(m,n.feePayer,p,n.wallet,y,P,k,I,g,h,T,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,c,u);return{signers:d,instructions:[S],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:T,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,p]=[new q(e.programId),new q(e.id)],y;if(l)y=new q((await l(1))[0]);else{let B=hs.generate();d.push(B),y=B.publicKey}let f=j.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=j.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=Ae(m,p,f),{publicKey:h}=Ae(m,p,b),{publicKey:P}=ge(n.wallet,y,He),{publicKey:k}=Ro(y),{publicKey:T}=gt(m,y),{publicKey:I}=hn(m,p,o,i),S=this.openPositionFromBaseInstruction(m,n.feePayer,p,n.wallet,y,P,k,I,g,h,T,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,u,s,a,c,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?mt(m,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:T,protocolPosition:I},instructions:[S],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,P,k,T,I,S,B,C,x){let L=M([Qe("tickLowerIndex"),Qe("tickUpperIndex"),Qe("tickArrayLowerStartIndex"),Qe("tickArrayUpperStartIndex"),Q("liquidity"),A("amountMaxA"),A("amountMaxB"),je("withMetadata"),D("optionBaseFlag"),je("baseFlag")]),G=[...x?[{pubkey:x,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:Yu,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...G],Z=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:new Qu(0),amountMaxA:S==="MintA"?B:C,amountMaxB:S==="MintA"?C:B,withMetadata:I==="create",baseFlag:S==="MintA",optionBaseFlag:1},Z);let $=Buffer.from([...Kt.openPosition,...Z]);return new St({keys:F,programId:e,data:$})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new q((await l(1))[0]);else{let B=hs.generate();m.push(B),d=B.publicKey}let[p,y]=[new q(e.programId),new q(e.id)],f=j.getTickArrayStartIndexByTick(o,e.config.tickSpacing),b=j.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=Ae(p,y,f),{publicKey:h}=Ae(p,y,b),{publicKey:P}=ge(n.wallet,d,He),{publicKey:k}=Ro(d),{publicKey:T}=gt(p,d),{publicKey:I}=hn(p,y,o,i),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,d,P,k,I,g,h,T,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,c,u,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?mt(p,y).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:T,protocolPosition:I},instructions:[S],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,o,i){let s=M([]),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:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Kt.closePosition,...c]);return new St({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o}){let i=new q(e.programId),{publicKey:s}=ge(n.wallet,o.nftMint,He),{publicKey:a}=gt(i,o.nftMint),c=[];return c.push(this.closePositionInstruction(i,n.wallet,o.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h){let P=M([Q("liquidity"),A("amountMaxA"),A("amountMaxB"),D("optionBaseFlag"),je("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],I=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let S=Buffer.from([...Kt.increaseLiquidity,...I]);return new St({keys:T,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:s,amountMaxB:a}){let[c,u]=[new q(e.programId),new q(e.id)],l=j.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=j.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Ae(c,u,l),{publicKey:p}=Ae(c,u,d),{publicKey:y}=ge(o.wallet,n.nftMint,He),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(c,o.wallet,y,f,u,b,m,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,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?mt(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:i,baseAmount:s,otherAmountMax:a}){let[c,u]=[new q(e.programId),new q(e.id)],l=j.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=j.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Ae(c,u,l),{publicKey:p}=Ae(c,u,d),{publicKey:y}=ge(o.wallet,n.nftMint,He),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,o.wallet,y,f,u,b,m,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,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,d])?mt(c,u).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h){let P=M([Q("liquidity"),A("amountMaxA"),A("amountMaxB"),D("optionBaseFlag"),je("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],I=Buffer.alloc(P.span);P.encode({liquidity:new Qu(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let S=Buffer.from([...Kt.increaseLiquidity,...I]);return new St({keys:T,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,P){let k=M([Q("liquidity"),A("amountMinA"),A("amountMinB")]),T=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{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:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:$r,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let B=Buffer.from([...Kt.decreaseLiquidity,...S]);return new St({keys:I,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new q(e.programId),new q(e.id)],d=j.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=j.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Ae(u,l,d),{publicKey:y}=Ae(u,l,m),{publicKey:f}=ge(o.wallet,n.nftMint,c),{publicKey:b}=gt(u,n.nftMint),{publicKey:g}=hn(u,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 P=[];return P.push(this.decreaseLiquidityInstruction(u,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,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?mt(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:P,instructionTypes:[E.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g){let h=M([A("amount"),A("otherAmountThreshold"),Q("sqrtPriceLimitX64"),je("isBaseInput")]),P=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...d.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:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:$r,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],T=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...Kt.swap,...T]);return new St({keys:k,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new q(e.programId),new q(e.id)],[m,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,d,new q(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?m:p,b?p:m,b?y:f,b?f:y,u,n,s,a,c,!0,mt(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,o,i,s,a,c,u,l,d,m){let p=M([A("openTime"),A("endTime"),Q("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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Xn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:z(l),endTime:z(d),emissionsPerSecondX64:m},f);let b=Buffer.from([...Kt.initReward,...f]);return new St({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=Vu(i,s,o.mint).publicKey,c=xr(i).publicKey,u=[this.initRewardInstruction(i,n.wallet,s,c,new q(e.config.id),n.tokenAccount,o.programId,o.mint,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,o,i,s,a,c,u,l,d,m){let p=M([D("rewardIndex"),Q("emissionsPerSecondX64"),A("openTime"),A("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:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:z(l),endTime:z(d)},f);let b=Buffer.from([...Kt.setRewardEmissions,...f]);return new St({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,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===o.mint.toString()&&(a=m,c=new q(t.rewardInfos[m].vault),u=new q(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&ju.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=xr(i).publicKey,d=[this.setRewardInstruction(i,n.wallet,s,l,new q(e.config.id),n.tokenAccount,c,u,a,o.openTime,o.endTime,o.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,o,i,s,a){let c=M([D("rewardIndex")]),u=[{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:He,isSigner:!1,isWritable:!1},{pubkey:un,isSigner:!1,isWritable:!1},{pubkey:$r,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...Kt.collectReward,...l]);return new St({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,s]=[new q(e.programId),new q(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,c=new q(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&ju.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(i,n.wallet,s,n.tokenAccount,c,o,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:o,amountOut:i,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new q(e.programId),new q(e.id)],[d,m]=[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(u,n.wallet,l,new q(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?m:d,f?d:m,f?p:y,f?y:p,c,d,i,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as ec}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vp}from"@solana/spl-token";import{PublicKey as Vp}from"@solana/web3.js";import Hu from"bn.js";var Zu=new Hu(25),$u=new Hu(1e4),_p={4:3,5:3};var Ep=ce("Raydium_liquidity_serum");function Ju({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=Vp.createProgramAddressSync(i,r)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:o,nonce:n}}throw Ep.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 Rr from"bn.js";function Is({programId:r}){let{publicKey:e}=ae([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function Bn({name:r,programId:e,marketId:t}){let{publicKey:n}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Fp({programId:r,marketId:e}){let{publicKey:t}=ae([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function xs({programId:r}){return ae([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tc({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:i,quoteDecimals:s,programId:a,marketProgramId:c}){let u=Bn({name:"amm_associated_seed",programId:a,marketId:t}),l=Bn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:d,nonce:m}=xs({programId:a}),p=Bn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Bn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Bn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Fp({programId:a,marketId:t}),g=Bn({name:"target_associated_seed",programId:a,marketId:t}),h=Bn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:P}=Ju({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:i,quoteDecimals:s,lpDecimals:i,version:r,programId:a,authority:d,nonce:m,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:P,lookupTableAccount:ec.default,configId:Is({programId:a})}}var ks;async function bI({connection:r,poolKeysList:e,config:t}){ks||(ks=new qn({connection:r}),await ks.initStableModelLayout());let n=e.map(s=>Ru({poolKeys:s}));return(await Ia(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=xa(s,"GetPoolData"),c=new Rr(Wt(a,"status")),u=Number(Wt(a,"coin_decimals")),l=Number(Wt(a,"pc_decimals")),d=Number(Wt(a,"lp_decimals")),m=new Rr(Wt(a,"pool_coin_amount")),p=new Rr(Wt(a,"pool_pc_amount")),y=new Rr(Wt(a,"pool_lp_supply")),f="0";try{f=Wt(a,"pool_open_time")}catch{}return{status:c,baseDecimals:u,quoteDecimals:l,lpDecimals:d,baseReserve:m,quoteReserve:p,lpSupply:y,startTime:new Rr(f)}})}var Ts={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},nc=r=>{let e={},t=vp.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:bt({address:i,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:bt({address:s,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new V(o.baseReserve.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(o.quoteReserve.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new V(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:Ts,week:Ts,month:Ts,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:ec.default.toBase58(),lpPrice:0,lpAmount:0,lpMint:bt({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())})}}),e};import ut from"bn.js";var Lr=class extends Se{constructor(t){super(t);this.stableLayout=new qn({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 ut(new V(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=So(t[i?"mintB":"mintA"]),[c,u]=[new ut(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ut(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ut(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.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",c.toString(),"quoteReserve",u.toString());let d=i?"base":"quote";this.logDebug("input side:",d);let m=Fe;s.isZero()||(m=d==="base"?oo(s.mul(u),c):oo(s.mul(c),u)),this.logDebug("amountRaw:",m.toString(),"lpAmount:",l.toString());let p=oo(s.mul(l),d==="base"?c:u);this.logDebug("liquidity:",p.toString());let f=new ve(new ut(1)).add(o).mul(m).quotient,b=new fe(a,m),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,amountInA:o,amountInB:i,fixedSide:s,config:a,txVersion:c,computeBudgetConfig:u}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",i),(o.isZero()||i.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:i.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:m}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[o.token,i.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new Me(n.lpMint.address)}),h=[p,y],P=[f,b],k=[o.raw,i.raw],T=o.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(h.reverse(),P.reverse(),k.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[S,B]=h,[C,x]=P,[L,G]=k,F=await this.getAmmPoolKeys(n.id),Z=this.createTxBuilder(),mn=await l.handleTokenAccount({side:"in",amount:L,mint:S.mint,tokenAccount:C,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:$}=mn,W=Be(mn,["tokenAccount"]);Z.addInstruction(W);let vt=await l.handleTokenAccount({side:"in",amount:G,mint:B.mint,tokenAccount:x,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:ft}=vt,Rn=Be(vt,["tokenAccount"]);Z.addInstruction(Rn);let Ln=await l.handleTokenAccount({side:"out",amount:0,mint:new Me(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:ln}=Ln,Qt=Be(Ln,["tokenAccount"]);return Z.addInstruction(Qt),Z.addInstruction({instructions:[Ku({poolInfo:n,poolKeys:F,userKeys:{baseTokenAccount:$,quoteTokenAccount:ft,lpTokenAccount:ln,owner:this.scope.ownerPubKey},baseAmountIn:L,quoteAmountIn:G,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),Z.addCustomComputeBudget(u),c===0&&await Z.buildV0(),Z.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:o,config:i,txVersion:s,computeBudgetConfig:a}=t,c=await this.getAmmPoolKeys(n.id),[u,l,d]=[new Me(n.mintA.address),new Me(n.mintB.address),new Me(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:m}=this.scope,p=await m.getCreatedTokenAccount({mint:d,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",m.tokenAccounts);let y=await m.getCreatedTokenAccount({mint:u}),f=await m.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:h}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},i),S=await m.handleTokenAccount({side:"out",amount:0,mint:u,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:P}=S,k=Be(S,["tokenAccount"]);b.addInstruction(k);let B=await m.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:T}=B,I=Be(B,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[ps({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:p,baseTokenAccount:P,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:i,farmInfo:s,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:d,tokenProgram:m=Vo,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(u);let g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||ge(this.scope.ownerPubKey,W.accountInfo.mint,Vo).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 P=o.add(a!=null?a:new ut(0)),k=t.mintA.address===ye.WSOL.mint.toString(),T=t.mintB.address===ye.WSOL.mint.toString(),{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Vo,mint:new Me(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||{}),I===void 0)throw new Error("base token account not found");let{account:B,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Vo,mint:new Me(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(C||{}),B===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=I,g[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let W=yt[s.programId],ft=et({programId:new Me(s.programId),poolId:new Me(s.id),owner:this.scope.ownerPubKey,version:W}),Rn,ln=await this.scope.connection.getAccountInfo(ft);if(ln&&(Rn=Dn(W).decode(ln.data)),W!==6&&!Rn){let{instruction:jt,instructionType:Zo}=Bo({id:new Me(s.id),programId:new Me(s.programId),version:W,ledger:ft,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[jt],instructionTypes:[Zo]})}let Qt=[];for(let jt of s.rewardInfos){let Zo=jt.mint.address===ye.WSOL.mint.toString();if(g[jt.mint.address])Qt.push(g[jt.mint.address]);else{let{account:Ws,instructionParams:qs}=await this.scope.account.getOrCreateTokenAccount({mint:new Me(jt.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!Zo,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Ws||this.logAndCreateError("farm reward account not found:",jt.mint.address),qs&&b.addInstruction(qs),Qt.push(Ws)}}let mn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],vt={userAuxiliaryLedgers:d,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:mn,lpAccount:h,rewardAccounts:Qt},Ln=yt[s.programId],Kc=Ln===6?wr(vt):Ln===5?Ar(vt):Pr(vt),Cc={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};b.addInstruction({instructions:[Kc],instructionTypes:[Cc[Ln]]})}let x=await this.getAmmPoolKeys(t.id),L=ps({poolInfo:t,poolKeys:x,userKeys:{lpTokenAccount:h,baseTokenAccount:I,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});b.addInstruction({instructions:[L],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:[]});let[G,F]=t.mintA.address===n.mintA.address?[I,B]:[B,I],Z=await this.scope.clmm.getClmmPoolKeys(t.id),$=await Ke.openPositionFromBaseInstructions(v(R({poolInfo:n,poolKeys:Z,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:G,tokenAccountB:F},withMetadata:"create"},i),{base:c,getEphemeralSigners:y}));return b.addInstruction({instructions:[...$.instructions],signers:$.signers,instructionTypes:[...$.instructionTypes],lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:i,baseAmount:s,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:d=!1,tokenProgram:m,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var G;let b=u.feePayer||((G=this.scope.owner)==null?void 0:G.publicKey),g=u.useSOLBalance&&o.mint.equals(rc),h=u.useSOLBalance&&i.mint.equals(rc),P=this.createTxBuilder(),{account:k,instructionParams:T}=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:d});P.addInstruction(T||{});let{account:I,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:d});if(P.addInstruction(S||{}),k===void 0||I===void 0)throw Error("you don't has some token account");let B=tc({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:i.mint,baseDecimals:o.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),C={programId:t,ammId:B.id,ammAuthority:B.authority,ammOpenOrders:B.openOrders,lpMint:B.lpMint,coinMint:B.baseMint,pcMint:B.quoteMint,coinVault:B.baseVault,pcVault:B.quoteVault,withdrawQueue:B.withdrawQueue,ammTargetOrders:B.targetOrders,poolTempLp:B.lpVault,marketProgramId:B.marketProgramId,marketId:B.marketId,ammConfigId:B.configId,feeDestinationId:y},{instruction:x,instructionType:L}=Cu(v(R({},C),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:I,userLpVault:ge(this.scope.ownerPubKey,B.lpMint,m).publicKey,nonce:B.nonce,openTime:c,coinAmount:s,pcAmount:a}));return P.addInstruction({instructions:[x],instructionTypes:[L]}),P.addCustomComputeBudget(f),P.versionBuild({txVersion:p,extInfo:{address:C}})}async getCreatePoolFee({programId:t}){let n=Is({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return Pu.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:i,slippage:s}){let[a,c]=[o.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:u,quoteReserve:l}=t,d=[u,l],m=a==t.mintA.address?"base":"quote";m==="quote"&&d.reverse();let[p,y]=d,f=t.version===4,b;if(f)b=new V(y.toString()).div(p.toString());else{let x=xu(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);m==="quote"?b=new V(1e6).div(x*1e6):b=new V(x*1e6).div(1e6)}let g=n,h=new ut(0),P=new ut(0);if(!g.isZero())if(f){P=tn(g.mul(Zu),$u);let x=g.sub(P),L=p.add(x);h=y.mul(x).div(L)}else{P=g.mul(new ut(2)).div(new ut(1e4));let x=g.sub(P);m==="quote"?h=new ut(Tu(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),x.toNumber())):h=new ut(Iu(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),x.toNumber()))}let k=new ut(new V(h.toString()).mul(1-s).toFixed(0)),T=h,I=k,S=new V(h.toString()).div(new V(g.sub(P).toString()).toFixed(0));!g.isZero()&&!h.isZero()&&(S=new V(h.toString()).div(g.sub(P).toString()));let B=b.sub(S).div(b).mul(100);return{amountOut:T,minAmountOut:I,currentPrice:b,executionPrice:S,priceImpact:B,fee:P}}async swap({poolInfo:t,poolKeys:n,amountIn:o,amountOut:i,inputMint:s,fixedSide:a,txVersion:c,computeBudgetConfig:u}){let l=this.createTxBuilder(),[d,m]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new Me(d.address),programId:new Me(d.programId),associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({mint:new Me(m.address),programId:new Me(m.programId),associatedOnly:!1}),T=await this.scope.account.handleTokenAccount({side:"in",amount:o,mint:new Me(d.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:f}=T,b=Be(T,["tokenAccount"]);l.addInstruction(b);let I=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Me(m.address),tokenAccount:y,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=I,h=Be(I,["tokenAccount"]);l.addInstruction(h);let P=n||await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),l.addInstruction({instructions:[Ko({version:k,poolKeys:P,userKeys:{tokenAccountIn:f,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:o,amountOut:i,fixedSide:a})],instructionTypes:[k===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),l.addCustomComputeBudget(u),l.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await qe(this.scope.connection,t.map(l=>({pubkey:new Me(l)})),n),i={},s=[];for(let l=0;l<t.length;l++){let d=o[l];if(d===null||!d.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let m=Tr.decode(d.accountInfo.data);i[String(t[l])]=v(R({},m),{programId:d.accountInfo.owner}),s.push(m.baseVault,m.quoteVault)}let a={},c=await qe(this.scope.connection,s.map(l=>({pubkey:new Me(l)})),n);for(let l=0;l<s.length;l++){let d=c[l].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new ut(Dp.decode(d.data).amount.toString())}let u={};for(let[l,d]of Object.entries(i)){let m=a[d.baseVault.toString()].sub(d.baseNeedTakePnl),p=a[d.quoteVault.toString()].sub(d.quoteNeedTakePnl);u[l]=v(R({},d),{baseReserve:m,quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(d.quoteDecimal.toString())).div(new V(m.toString()).div(new V(10).pow(d.baseDecimal.toString())))})}return u}};import{PublicKey as ue}from"@solana/web3.js";import At from"bn.js";import{TOKEN_PROGRAM_ID as oc}from"@solana/spl-token";var Or=class extends Se{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)||ue.default,mint1:o,mint2:i,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:d}=e,m=this.createTxBuilder(),[p,y,f]=new At(new ue(o.address).toBuffer()).gt(new At(new ue(i.address).toBuffer()))?[i,o,new V(1).div(a)]:[o,i,a],b=te.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ke.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return m.addInstruction(g),m.addCustomComputeBudget(u),m.versionBuild({txVersion:d,extInfo:{address:v(R({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:c.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:R({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:c.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:[]}},qu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",getEphemeralSigners:m,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===J.toString(),P=n.useSOLBalance&&e.mintB.address===J.toString(),[k,T]=s==="MintA"?[a,c]:[c,a],{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(S||{});let{account:B,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:u,checkCreateATAOwner:l});B&&(g=B),f.addInstruction(C||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=t||await this.getClmmPoolKeys(e.id),L=await Ke.openPositionFromBaseInstructions({poolInfo:e,poolKeys:x,ownerInfo:v(R({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:o,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:d,getEphemeralSigners:m});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:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",txVersion:m,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===J.toBase58(),h=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(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:u,checkCreateATAOwner:l});P&&(f=P),y.addInstruction(k||{});let{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),B=await Ke.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:o,amountMaxB:i,withMetadata:d,getEphemeralSigners:p});return y.addInstruction(B),y.versionBuild({txVersion:m,extInfo:{address:B.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:o,amountMaxB:i,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});g&&(p=g),m.addInstruction(h||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});P&&(y=P),m.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ke.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:o,amountMaxB:i});return m.addInstruction(I),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(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:c,checkCreateATAOwner:u});g&&(p=g),m.addInstruction(h||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(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:c,checkCreateATAOwner:u});P&&(y=P),m.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ke.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:o,baseAmount:i,otherAmountMax:s});return m.addInstruction(I),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:o,amountMinA:i,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let m=this.createTxBuilder(),p=o.useSOLBalance&&t.mintA.address===J.toString(),y=o.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ue(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});f=g,h&&m.addInstruction(h);let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ue(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});b=P,k&&m.addInstruction(k);let T=[];for(let C of t.rewardDefaultInfos){let x=o.useSOLBalance&&C.mint.address===J.toString(),L;if(C.mint.address===t.mintA.address)L=f;else if(C.mint.address===t.mintB.address)L=b;else{let{account:G,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(C.mint.programId),mint:new ue(C.mint.address),notUseTokenAccount:x,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!x,associatedOnly:x?!1:c,checkCreateATAOwner:u});L=G,F&&m.addInstruction(F)}T.push(L)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),S=await Ke.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:i,amountMinB:s});m.addInstruction({instructions:S.instructions,instructionTypes:[E.ClmmDecreasePosition]});let B=R({},S.address);if(o.closePosition){let C=await Ke.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});m.addInstruction({endInstructions:C.instructions,endInstructionTypes:C.instructionTypes}),B=R(R({},B),C.address)}return m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:B}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),i=await this.getClmmPoolKeys(e.id),s=Ke.closePositionInstructions({poolInfo:e,poolKeys:i,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return o.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.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 c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(n.mint.address),mint:new ue(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});m&&c.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ke.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new ue(n.mint.programId),mint:new ue(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(y),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let c=this.createTxBuilder(),u={};for(let l of n){let d=t.useSOLBalance&&l.mint.address===J.toString(),m=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:i});y&&c.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ke.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ue(l.mint.programId),mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:ne.decimalToX64(l.perSecond)}});u=R(R({},u),b.address),c.addInstruction(b)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}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 c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(J),{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});d&&c.addInstruction(d),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Ke.setRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){let c=this.createTxBuilder(),u={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let d=t.useSOLBalance&&l.mint.address===J.toString(),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(l.mint.programId),mint:new ue(l.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new At(new V(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:i});p&&c.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ke.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{mint:new ue(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:ne.decimalToX64(l.perSecond)}});c.addInstruction(f),u=R(R({},u),f.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}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(),c=t.useSOLBalance&&n.equals(J),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:o,checkCreateATAOwner:i});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),m=Ke.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(m),a.build({address:m.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(J),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:o,checkCreateATAOwner:i});d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),m&&s.addInstruction(m);let p=await this.getClmmPoolKeys(e.id),y=Ke.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardMint:c});s.addInstruction(y),a=R(R({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:o,priceLimit:i,observationId:s,ownerInfo:a,remainingAccounts:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,txVersion:d}){let m=this.createTxBuilder(),p=t.toString()===e.mintA.address,y=a.useSOLBalance&&e.mintA.address===J.toBase58(),f=a.useSOLBalance&&e.mintB.address===J.toBase58(),b;!i||i.equals(new V(0))?b=p?_t.add(new At(1)):Vt.sub(new At(1)):b=te.priceToSqrtPriceX64(i,e.mintA.decimals,e.mintB.decimals);let g;if(!g){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ue(e.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:y||!p?{payer:a.feePayer||this.scope.ownerPubKey,amount:y?n:0}:void 0,associatedOnly:y?!1:u,checkCreateATAOwner:l});g=k,T&&m.addInstruction(T)}let h;if(!h){let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ue(e.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||p?{payer:a.feePayer||this.scope.ownerPubKey,amount:p?0:n}:void 0,associatedOnly:f?!1:u,checkCreateATAOwner:l});h=k,T&&m.addInstruction(T)}(!g||!h)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let P=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ke.makeSwapBaseInInstructions({poolInfo:e,poolKeys:P,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:h},inputMint:new ue(t),amountIn:n,amountOutMin:o,sqrtPriceLimitX64:b,remainingAccounts:c})),m.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let d of this.scope.account.tokenAccountRawInfos)o?ge(this.scope.ownerPubKey,d.accountInfo.mint,s).publicKey.equals(d.pubkey)&&(u[d.accountInfo.mint.toString()]=d.pubkey):u[d.accountInfo.mint.toString()]=d.pubkey;let l=this.createTxBuilder();for(let d of Object.values(e)){if(t[d.id]===void 0||!t[d.id].find(P=>!P.liquidity.isZero()||P.rewardInfos.find(k=>!k.rewardAmountOwed.isZero())))continue;let m=d,p=n.useSOLBalance&&m.mintA.address===J.toString(),y=n.useSOLBalance&&m.mintB.address===J.toString(),f=u[m.mintA.address];if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintA.programId,mint:new ue(m.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=P,k&&l.addInstruction(k)}let b=u[m.mintB.address];if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintB.programId,mint:new ue(m.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=P,k&&l.addInstruction(k)}u[m.mintA.address]=f,u[m.mintB.address]=b;let g=[];for(let P of m.rewardDefaultInfos){let k=n.useSOLBalance&&P.mint.address===J.toString(),T=u[P.mint.address];if(!T){let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ue(P.mint.programId),mint:new ue(P.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:o});T=I,S&&l.addInstruction(S)}u[P.mint.address]=T,g.push(T)}let h=await this.getClmmPoolKeys(m.id);for(let P of t[d.id]){let k=Ke.decreaseLiquidityInstructions({poolInfo:m,poolKeys:h,ownerPosition:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new At(0),amountMinA:new At(0),amountMinB:new At(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(xr(e).publicKey);return t?zu.decode(t.data).whitelistMints.filter(o=>!o.equals(ue.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new At(1))).map(s=>gt(new ue(e),s.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(s=>{if(!s)return;let a=_o.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 qe(this.scope.connection,e.map(i=>({pubkey:new ue(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=In.decode(s.accountInfo.data),c=te.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=v(R({},a),{currentPrice:c,programId:s.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),o=await qe(this.scope.connection,Array.from(n).map(c=>({pubkey:new ue(c)}))),i={};o.forEach(c=>{!c.accountInfo||(i[c.pubkey.toBase58()]=Xu.decode(c.accountInfo.data))});let s=await Le.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var d,m,p,y;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:bt({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||oc.toBase58(),extensions:{feeConfig:(d=t[u])!=null&&d.feeConfig?Wn((m=t[u])==null?void 0:m.feeConfig):void 0}}),mintB:bt({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||oc.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Wn((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[c].currentPrice,config:v(R({},i[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Le.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as Xo,TOKEN_PROGRAM_ID as cn,AccountLayout as tf}from"@solana/spl-token";import sc from"bn.js";var Bs=new sc(1e6);function Wp(r,e,t){return r.mul(e).add(t).sub(new sc(1)).div(t)}function ic(r,e,t){return r.mul(e).div(t)}var Eo=class{static tradingFee(e,t){return Wp(e,t,Bs)}static protocolFee(e,t){return ic(e,t,Bs)}static fundFee(e,t){return ic(e,t,Bs)}};import Nr from"bn.js";function vo(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function qp(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=vo(r,e);return n.gt(zn)&&(t=t.add(new Nr(1)),e=r.div(t),n=vo(r,t),n.gt(zn)&&(e=e.add(new Nr(1)))),[t,e]}var zn=new Nr(0),Fo=class{static swapWithoutFees(e,t,n){let o=t.mul(n),i=t.add(e),[s,a]=qp(o,i),c=a.sub(t),u=n.sub(s);if(u.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:c,destinationAmountSwapped:u}}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 vo(e.mul(n),t).gt(zn)&&s.gt(zn)&&(s=s.add(new Nr(1))),vo(e.mul(o),t).gt(zn)&&a.gt(zn)&&(a=a.add(new Nr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var ac=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(ac||{}),Do=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=Eo.tradingFee(e,o),s=e.sub(i),{sourceAmountSwapped:a,destinationAmountSwapped:c}=Fo.swapWithoutFees(s,t,n),u=a.add(i);return{newSwapSourceAmount:t.add(u),newSwapDestinationAmount:n.sub(c),sourceAmountSwapped:u,destinationAmountSwapped:c,tradeFee:i}}};var Up=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Gp=Buffer.from("amm_config","utf8"),Xp=Buffer.from("pool","utf8"),zp=Buffer.from("pool_lp_mint","utf8"),Yp=Buffer.from("pool_vault","utf8"),Qp=Buffer.from("observation","utf8");function Mr(r){return ae([Up],r)}function jp(r,e){return ae([Gp,$p(e)],r)}function Hp(r,e,t,n){return ae([Xp,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Zp(r,e){return ae([zp,e.toBuffer()],r)}function uc(r,e,t){return ae([Yp,e.toBuffer(),t.toBuffer()],r)}function Wo(r,e){return ae([Qp,e.toBuffer()],r)}function $p(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function cc({programId:r,mintA:e,mintB:t}){let n=jp(r,0).publicKey,o=Mr(r).publicKey,i=Hp(r,n,e,t).publicKey,s=Zp(r,i).publicKey,a=uc(r,i,e).publicKey,c=uc(r,i,t).publicKey,u=Wo(r,i).publicKey;return{poolId:i,configId:n,authority:o,lpMint:s,vaultA:a,vaultB:c,observationId:u}}import{TransactionInstruction as _r}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ss,TOKEN_2022_PROGRAM_ID as lc,ASSOCIATED_TOKEN_PROGRAM_ID as Jp}from"@solana/spl-token";var ef=ce("Raydium_cpmm"),Vr={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 mc(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y,f,b,g,h,P){let k=M([A("amountMaxA"),A("amountMaxB"),A("openTime")]),T=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Jp,isSigner:!1,isWritable:!1},{pubkey:to,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],I=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:P},I),new _r({keys:T,programId:r,data:Buffer.from([...Vr.initialize,...I])})}function dc(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([A("lpAmount"),A("amountMaxA"),A("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:c,isSigner:!1,isWritable:!0},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:lc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return ef.debug("cpmm deposit data",{lpAmount:m.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:m,amountMaxA:p,amountMaxB:y},g),new _r({keys:b,programId:r,data:Buffer.from([...Vr.deposit,...g])})}function pc(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){let f=M([A("lpAmount"),A("amountMinA"),A("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:c,isSigner:!1,isWritable:!0},{pubkey:Ss,isSigner:!1,isWritable:!1},{pubkey:lc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Jr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:m,amountMinA:p,amountMinB:y},g),new _r({keys:b,programId:r,data:Buffer.from([...Vr.withdraw,...g])})}function qo(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y,f){let b=M([A("amountIn"),A("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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new _r({keys:g,programId:r,data:Buffer.from([...Vr.swapBaseInput,...h])})}function Uo(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y,f){let b=M([A("amountInMax"),A("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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new _r({keys:g,programId:r,data:Buffer.from([...Vr.swapBaseOutput,...h])})}import Xe from"bn.js";var fc=M([be(8),D("bump"),je("disableCreatePool"),Nt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),K("protocolOwner"),K("fundOwner"),U(A(),16)]),Go=M([be(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"),A("lpAmount"),A("protocolFeesMintA"),A("protocolFeesMintB"),A("fundFeesMintA"),A("fundFeesMintB"),A("openTime"),U(A(),32)]);var Er=class extends Se{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 qe(this.scope.connection,e.map(d=>({pubkey:new Y(d)}))),o={},i=new Set,s=[];for(let d=0;d<e.length;d++){let m=n[d];if(m.accountInfo===null)throw Error("fetch pool info error: "+String(e[d]));let p=Go.decode(m.accountInfo.data);o[String(e[d])]=v(R({},p),{programId:m.accountInfo.owner}),i.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let d=[...i],m=await qe(this.scope.connection,d.map(p=>({pubkey:new Y(p)})));for(let p=0;p<d.length;p++){let y=m[p].accountInfo;if(y===null)throw Error("fetch pool config error: "+d[p]);a[d[p]]=fc.decode(y.data)}}let c={},u=await qe(this.scope.connection,s.map(d=>({pubkey:new Y(d)})));for(let d=0;d<s.length;d++){let m=u[d].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[d]);c[String(s[d])]=new Xe(tf.decode(m.data).amount.toString())}let l={};for(let[d,m]of Object.entries(o)){let p=c[m.vaultA.toString()].sub(m.protocolFeesMintA).sub(m.fundFeesMintA),y=c[m.vaultB.toString()].sub(m.protocolFeesMintB).sub(m.fundFeesMintB);l[d]=v(R({},m),{baseReserve:p,quoteReserve:y,configInfo:a[m.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(m.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(m.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,o)=>{var c,u,l,d;let i=e[o],[s,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return v(R({},n),{[o]:v(R({},i),{id:new Y(o),configInfo:i.configInfo,version:7,authority:Mr(i.programId).publicKey,mintA:bt({address:s,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?Wn((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:bt({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?Wn((d=t[a])==null?void 0:d.feeConfig):void 0}})})})},{})}async createPool(l){var d=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:o,associatedOnly:i=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:c}=d,u=Be(d,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var G,F,Z;let m=o.feePayer||((G=this.scope.owner)==null?void 0:G.publicKey),p=new Xe(new Y(u.mintA.address).toBuffer()).lte(new Xe(new Y(u.mintB.address).toBuffer())),[y,f]=p?[u.mintA,u.mintB]:[u.mintB,u.mintA],[b,g]=p?[u.mintAAmount,u.mintBAmount]:[u.mintBAmount,u.mintAAmount],h=o.useSOLBalance&&y.address===Xo.toBase58(),P=o.useSOLBalance&&f.address===Xo.toBase58(),[k,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:m,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:i,checkCreateATAOwner:s});I.addInstruction(B||{});let{account:C,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:m,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:i,checkCreateATAOwner:s});if(I.addInstruction(x||{}),S===void 0||C===void 0)throw Error("you don't has some token account");let L=cc({programId:e,mintA:k,mintB:T});return I.addInstruction({instructions:[mc(e,this.scope.ownerPubKey,L.configId,L.authority,L.poolId,k,T,L.lpMint,S,C,ge(this.scope.ownerPubKey,L.lpMint).publicKey,L.vaultA,L.vaultB,t,new Y((F=y.programId)!=null?F:cn),new Y((Z=f.programId)!=null?Z:cn),L.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),I.addCustomComputeBudget(c),I.versionBuild({txVersion:a,extInfo:{address:v(R({},L),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:o,slippage:i,computeResult:s,computeBudgetConfig:a,config:c,txVersion:u}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:m}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),p=s?void 0:await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:v(R({},t),{lpAmount:new V(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:p.baseReserve,quoteReserve:p.quoteReserve,slippage:new ve(0),baseIn:o,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(n.toString()).div(10**(o?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===Xo.toString(),P=t.mintB.address===Xo.toString(),k=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(o?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:o?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:m});k.addInstruction(B||{});let{account:C,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||(o?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:o?g:n}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:m});k.addInstruction(x||{}),!S&&!C&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let L=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),W=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:L,bypassAssociatedCheck:d,checkCreateATAOwner:m}),{tokenAccount:G}=W,F=Be(W,["tokenAccount"]);k.addInstruction(F);let Z=await this.getCpmmPoolKeys(t.id),$=new ve(new Xe(1)).sub(i);return k.addInstruction({instructions:[dc(new Y(t.programId),this.scope.ownerPubKey,new Y(Z.authority),new Y(t.id),G,S,C,new Y(Z.vault.A),new Y(Z.vault.B),T,I,new Y(t.lpMint.address),s?s==null?void 0:s.liquidity:$.mul(y).quotient,o?f.amount:g,o?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:[]}),k.addCustomComputeBudget(a),k.versionBuild({txVersion:u})}async withdrawLiquidity(e){var G,F;let{poolInfo:t,lpAmount:n,slippage:o,computeBudgetConfig:i,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new ve(new Xe(1)).sub(o),c=await this.getRpcPoolInfo(t.id),[u,l]=[a.mul(n.mul(c.baseReserve).div(c.lpAmount)).quotient,a.mul(n.mul(c.quoteReserve).div(c.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[m,p]=[he(u,t.mintA.extensions.feeConfig,d,!0),he(l,t.mintB.extensions.feeConfig,d,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],h=b.equals(J),P=g.equals(J),k,T,{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});k=I,S&&f.addInstruction(S);let{account:B,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});T=B,C&&f.addInstruction(C),(!k||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let x=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});x||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let L=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[pc(new Y(t.programId),this.scope.ownerPubKey,new Y(L.authority),new Y(t.id),x,k,T,new Y(L.vault.A),new Y(L.vault.B),b,g,new Y(t.lpMint.address),n,u.sub((G=m.fee)!=null?G:new Xe(0)),l.sub((F=p.fee)!=null?F:new Xe(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]}),f.addCustomComputeBudget(i),f.versionBuild({txVersion:s})}async swap(e){var I,S,B,C,x,L;let{poolInfo:t,baseIn:n,swapResult:o,slippage:i=0,config:s,computeBudgetConfig:a,txVersion:c}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:l,associatedOnly:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},s),m=this.createTxBuilder(),[p,y]=[new Y(t.mintA.address),new Y(t.mintB.address)];o.destinationAmountSwapped=o.destinationAmountSwapped.mul(new Xe((1-i)*1e4)).div(new Xe(1e4));let f=t.mintA.address===J.toBase58(),b=t.mintB.address===J.toBase58(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:p,tokenProgram:new Y((I=t.mintA.programId)!=null?I:cn),owner:this.scope.ownerPubKey,createInfo:f||!n?{payer:this.scope.ownerPubKey,amount:n?o.sourceAmountSwapped:0}:void 0,notUseTokenAccount:f,skipCloseAccount:!f,associatedOnly:f?!1:d,checkCreateATAOwner:l});h&&m.addInstruction(h);let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:y,tokenProgram:new Y((S=t.mintB.programId)!=null?S:cn),owner:this.scope.ownerPubKey,createInfo:b||n?{payer:this.scope.ownerPubKey,amount:n?0:o.sourceAmountSwapped}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:d,checkCreateATAOwner:l});k&&m.addInstruction(k),!g&&!P&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getCpmmPoolKeys(t.id);return m.addInstruction({instructions:[n?qo(new Y(t.programId),this.scope.ownerPubKey,new Y(T.authority),new Y(T.config.id),new Y(t.id),g,P,new Y(T.vault.A),new Y(T.vault.B),new Y((B=t.mintA.programId)!=null?B:cn),new Y((C=t.mintB.programId)!=null?C:cn),p,y,Wo(new Y(t.programId),new Y(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped):Uo(new Y(t.programId),this.scope.ownerPubKey,new Y(T.authority),new Y(T.config.id),new Y(t.id),P,g,new Y(T.vault.B),new Y(T.vault.A),new Y((x=t.mintB.programId)!=null?x:cn),new Y((L=t.mintA.programId)!=null?L:cn),y,p,Wo(new Y(t.programId),new Y(t.id)).publicKey,o.sourceAmountSwapped,o.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),m.addCustomComputeBudget(a),m.versionBuild({txVersion:c})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:o}){let i=n.toString()===e.mintB.address,s=Do.swap(t,i?e.baseReserve:e.quoteReserve,i?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new V(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new Xe((1-o)*1e4)).div(new Xe(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:c,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,P,k,T,I,S,B,C;let c=1-Number(i.toSignificant())/100,u=new Xe(new V(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=he(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),d=u.sub((h=l.fee)!=null?h:new Xe(0)),m=new Xe(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(k=(P=l.fee)==null?void 0:P.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=d.mul(m).div(p==="base"?t:n),f={amount:Fe,fee:void 0,expirationTime:void 0};if(!d.isZero()){let x=nf(y,t,n,m);this.logDebug("lpAmountData:",{amountA:x.amountA.toString(),amountB:x.amountB.toString()}),f=he(x[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new ve(new Xe(1)).add(i),g=he(b.mul(f.amount.sub((T=f.fee)!=null?T:new Xe(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(I=f.fee)==null?void 0:I.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(C=(B=g.fee)==null?void 0:B.toString())!=null?C:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function nf(r,e,t,n){let o=r.mul(e).div(n);!o.isZero()&&!r.mul(e).mod(n).isZero()&&(o=o.add(new Xe(1)));let i=r.mul(t).div(n);return!i.isZero()&&!r.mul(t).mod(n).isZero()&&(i=i.add(new Xe(1))),{amountA:o,amountB:i}}import{PublicKey as Kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oe,TOKEN_2022_PROGRAM_ID as Os,createTransferInstruction as Pc}from"@solana/spl-token";import Qo from"bn.js";import{TOKEN_PROGRAM_ID as Ks,TOKEN_2022_PROGRAM_ID as rf,ASSOCIATED_TOKEN_PROGRAM_ID as of}from"@solana/spl-token";import{PublicKey as X,TransactionInstruction as Cs,SystemProgram as Rs}from"@solana/web3.js";import Sn from"bn.js";function UB(r,e,t,n,o,i,s,a,c,u,l,d){let m=M([D("instruction"),A("amountIn"),A("amountOut")]),p=[{pubkey:Rs.programId,isSigner:!1,isWritable:!1},{pubkey:Ks,isSigner:!1,isWritable:!1},{pubkey:new X(t.programId),isSigner:!1,isWritable:!1},{pubkey:new X(t.id),isSigner:!1,isWritable:!0},{pubkey:new X(n.id),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=Ie(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...d.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(m.span);return m.encode({instruction:4,amountIn:u,amountOut:l},y),new Cs({keys:p,programId:r,data:y})}function GB(r,e,t,n,o,i,s,a,c,u){let l=M([D("instruction")]),d=[{pubkey:Rs.programId,isSigner:!1,isWritable:!1},{pubkey:Ks,isSigner:!1,isWritable:!1},{pubkey:new X(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new X(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new X(String(t.id)),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=Ie(n);d.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...u.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=Ie(n);d.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=Ie(n);d.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let m=Buffer.alloc(l.span);return l.encode({instruction:5},m),new Cs({keys:d,programId:r,data:m})}function sf(r,e,t,n,o,i,s,a,c,u,l,d,m,p,y){var I;let f=[],b=[w({pubkey:Ks,isWritable:!1}),w({pubkey:rf,isWritable:!1}),w({pubkey:of,isWritable:!1}),w({pubkey:Rs.programId,isWritable:!1}),w({pubkey:e,isSigner:!0})];b.push(w({pubkey:t})),b.push(w({pubkey:o}));let g=[c,u],h=[l,d],P=[i,s,a];for(let S=0;S<g.length;S++){let B=g[S],C=P[S]===B.mintA.address;if(b.push(w({pubkey:new X(B.programId),isWritable:!1})),S===g.length-1?b.push(w({pubkey:o})):b.push(w({pubkey:n})),b.push(w({pubkey:new X(P[S])})),b.push(w({pubkey:new X(P[S+1])})),B.version===6){let x=h[S];b.push(w({pubkey:new X(x.config.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(C?x.vault.A:x.vault.B)})),b.push(w({pubkey:new X(C?x.vault.B:x.vault.A)})),b.push(w({pubkey:new X(B.observationId)})),b.push(w({pubkey:Jr})),b.push(w({pubkey:mt(new X(B.programId),new X(B.id)).publicKey})),f.push(af(B.sqrtPriceX64.toString(),C));for(let L of(I=y[S])!=null?I:[])b.push(w({pubkey:new X(L)}))}else if(B.version===5){let x=h[S];b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.authority),isWritable:!1})),b.push(w({pubkey:new X(x.marketProgramId)})),b.push(w({pubkey:new X(x.marketAuthority)})),b.push(w({pubkey:Na,isWritable:!1})),b.push(w({pubkey:new X(x.openOrders)})),b.push(w({pubkey:new X(x.vault.A)})),b.push(w({pubkey:new X(x.vault.B)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.marketId)})),b.push(w({pubkey:new X(x.marketBids)})),b.push(w({pubkey:new X(x.marketAsks)})),b.push(w({pubkey:new X(x.marketEventQueue)})),b.push(w({pubkey:new X(x.marketBaseVault)})),b.push(w({pubkey:new X(x.marketQuoteVault)}))}else if(B.version===4){let x=h[S],L=B.status!==1;b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(x.authority),isWritable:!1})),b.push(w({pubkey:new X(L?x.id:x.marketProgramId)})),b.push(w({pubkey:new X(L?x.id:x.marketAuthority)})),b.push(w({pubkey:new X(L?x.id:x.openOrders)})),b.push(w({pubkey:new X(x.vault.A)})),b.push(w({pubkey:new X(x.vault.B)})),b.push(w({pubkey:new X(L?x.id:x.marketId)})),b.push(w({pubkey:new X(L?x.id:x.marketBids)})),b.push(w({pubkey:new X(L?x.id:x.marketAsks)})),b.push(w({pubkey:new X(L?x.id:x.marketEventQueue)})),b.push(w({pubkey:new X(L?x.id:x.marketBaseVault)})),b.push(w({pubkey:new X(L?x.id:x.marketQuoteVault)}))}else if(B.version===7){let x=h[S];b.push(w({pubkey:new X(x.authority)})),b.push(w({pubkey:new X(x.config.id)})),b.push(w({pubkey:new X(x.id)})),b.push(w({pubkey:new X(C?x.vault.A:x.vault.B)})),b.push(w({pubkey:new X(C?x.vault.B:x.vault.A)})),b.push(w({pubkey:new X(B.observationId)}))}else throw Error("pool type error")}let k=M([D("insId"),A("amountIn"),A("amountOut"),U(Q(),f.length,"clmmPriceLimit")]),T=Buffer.alloc(k.span);return k.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:f},T),new Cs({keys:b,programId:r,data:T})}function af(r,e){if(r)if(e){let t=new Sn(r).div(new Sn(25));return t.gt(Oo)?t:Oo}else{let t=new Sn(r).mul(new Sn(25));return t.lt(No)?t:No}else return e?Oo:No}function yc({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var o,i,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],m=Ie(d),p=t.equals(m.mintA.address)?_t.add(dt):Vt.sub(dt);return Ke.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.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 Sn(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[m?qo(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,d.vaultA,d.vaultB,d.mintProgramA,d.mintProgramA,new X(d.mintA.address),new X(d.mintB.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):Uo(d.programId,e.wallet,d.authority,d.configId,d.id,e.destinationToken,e.sourceToken,d.vaultB,d.vaultA,d.mintProgramB,d.mintProgramA,new X(d.mintB.address),new X(d.mintA.address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[Ko({poolKeys:d,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((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Sn(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?E.AmmV5SwapBaseIn:E.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],m=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:[sf(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,m,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Sn(0)),n.remainingAccounts)],instructionTypes:[E.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var bc={[fo.toBase58()]:3},gc={3:fo};var Ls=M([be(5),be(8),K("ownAddress"),A("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),K("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),be(7)]),wc={3:Ls};import{PublicKey as Ac}from"@solana/web3.js";var zo=ce("Serum"),Yo=class{static getProgramId(e){let t=gc[e];return t||zo.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=bc[t];return n||zo.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=wc[e];return t||zo.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=Ac.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;o++;continue}return{publicKey:i,nonce:o}}return zo.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ac.default,nonce:o}}};var Yt=new Qo(0),vr=class extends Se{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(J));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:o=1}=e,i=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=z(t);for(let u=0;u<i.length;u++)c.gte(i[u].amount)?(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(i[u].amount)):(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),lr({destination:a.addresses.newAccount,source:i[u].publicKey,amount:c,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 Ut({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:[lr({destination:o[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Mt({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(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(J),d=u.amount.token.mint.equals(J),m=c.amount.token.mint,p=u.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Os:Oe,mint:m,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.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,u.amount.token.isToken2022?Os:Oe);d&&a.addInstruction({endInstructions:[Mt({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Oe})],endInstructionTypes:[E.CloseAccount]});let g;if(e.routeType==="route"){let k=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(k.mint,k.isToken2022?Os:Oe)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=yc({routeProgram:i,inputMint:m,swapInfo:v(R({},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:[Pc(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]}),k.addInstruction(P);let{transactions:T}=s===0?await k.sizeCheckBuildV0():await k.sizeCheckBuild();T.length<2&&a.addInstruction({instructions:[Pc(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[E.TransferAmount]})}return a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:o,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:o,address:P.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Ii,clmm:n=xi,cpmm:o=Bi}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Tr.offsetOf("baseMint"),length:64}}),s=M([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})),c=M([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:In.span}],dataSlice:{offset:In.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),m=(await this.scope.connection.getProgramAccounts(o,{dataSlice:{offset:Go.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:o,cpmmPools:i}){e=e.toString()===Kn.default.toString()?J:e,t=t.toString()===Kn.default.toString()?J:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(m)}}let d=[];for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,d.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of i)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let p=l[m];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?c[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?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}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=nc(i),a={};Object.values(s).forEach(f=>{o.delete(f.mintA.address),a[f.mintA.address]={address:new Kn(f.mintA.address),programId:Oe,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 Kn(f.mintB.address),programId:Oe,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 c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Oe)?(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(Oe)?(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 u=await Sa({connection:this.scope.connection,mints:Array.from(o).map(f=>new Kn(f))});a=R(R({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>v(R({},f),{[b]:v(R({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:s,clmmPoolsRpcInfo:d,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:i,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,h,P,k,T,I,S,B,C;let d=l===void 0?new Qo(0):e.raw.mul(new Qo(l.feeBps.toNumber())).div(new Qo(1e4)),m=e.raw.sub(d),p=new fe(e.token,m),y=l===void 0?void 0:{feeAmount:d,feeAccount:l.feeAccount},f=v(R({},t),{address:ct(t.address).toString()}),b=[];for(let x of n)try{b.push(v(R({},this.computeAmountOut({itemPool:x,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(L){this.logDebug("direct error",x.version,x.id.toString(),L.message)}this.logDebug("direct done");for(let[x,L]of Object.entries(o)){let G={chainId:101,address:x,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},F=L.in.map($=>{try{return{pool:$,data:this.computeAmountOut({itemPool:$,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:G,amountIn:p})}}catch(W){this.logDebug("route in error",$.version,$.id.toString(),W.message);return}}).sort(($,W)=>{var ln,Qt,mn,vt;let ft=$===void 0?Yt:$.data.amountOut.amount.raw.sub((Qt=(ln=$.data.amountOut.fee)==null?void 0:ln.raw)!=null?Qt:Yt),Rn=W===void 0?Yt:W.data.amountOut.amount.raw.sub((vt=(mn=W.data.amountOut.fee)==null?void 0:mn.raw)!=null?vt:Yt);return ft.lt(Rn)?1:-1})[0];if(F===void 0)continue;let Z=new fe(So(G),F.data.amountOut.amount.raw.sub((h=(g=F.data.amountOut.fee)==null?void 0:g.raw)!=null?h:Yt));for(let $ of L.out)try{let W=this.computeAmountOut({itemPool:$,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:Z});b.push(v(R({},W),{allTrade:!!(F.data.allTrade&&W.allTrade),amountIn:F.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new We({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((k=(P=W.amountOut.fee)==null?void 0:P.raw)!=null?k:Yt)}).toFixed()),priceImpact:new V(F.data.priceImpact.add(W.priceImpact).toFixed()),fee:[F.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[F.pool,$],remainingAccounts:[F.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(T=W.amountOut.fee)!=null&&T.raw?new fe(F.data.amountOut.amount.token,((S=(I=F.data.amountOut.fee)==null?void 0:I.raw)!=null?S:Yt).add((C=(B=W.amountOut.fee)==null?void 0:B.raw)!=null?C:Yt)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&W.poolReady,poolType:[F.data.poolType,W.poolType],feeConfig:y,expirationTime:Ot(F.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",$.version,$.id.toString(),W.message)}}return b.filter(x=>x.allTrade).sort((x,L)=>x.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(Yt)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:d,minAmountOut:m,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:h,executionPriceX64:P}=Le.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:i,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:d,minAmountOut:m,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(b.toFixed()),fee:[g],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ot(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:d,minAmountOut:m,priceImpact:p,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:kr(v(R({},a),{amount:d})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:kr(v(R({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new fe(c.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:u,minAmountOut:l,currentPrice:d,executionPrice:m,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:kr(v(R({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:kr(v(R({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:d,executionPrice:m,priceImpact:p,fee:[new fe(c.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(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(o.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(o));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await qe(this.scope.connection,Array.from(s).map(l=>({pubkey:new Kn(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Ls.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Yo.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:v(R({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=R({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:xs({programId:new Kn(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(d)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:Mr(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:bt({address:u.mintLp.toBase58(),programId:Oe.toBase58(),decimals:u.lpDecimals}),config:v(R({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};import{TOKEN_PROGRAM_ID as uf}from"@solana/spl-token";import{PublicKey as cf,Transaction as Ns,TransactionInstruction as lf}from"@solana/web3.js";import hc from"bn.js";var nt=class extends Se{static getPdaPoolId(e,t){return ae([nt.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return ae([nt.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new hc(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=>nt.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<nt.VERSION_PROJECT.length;l++)a.push(...s.map(d=>nt.getPdaOwnerId(t,d,o,l).publicKey));let c=await Tt(e,[...s,...a]),u=[];for(let l=0;l<c.length;l++){let d=Math.floor(l/n.length),m=l%n.length,p=s[m],y=a[l],f=c[m],b=c[n.length+l];if(!(f&&b)||f.data.length!==nt.POOL_LAYOUT.span||b.data.length!==nt.OWNER_LAYOUT.span)continue;let g=nt.POOL_LAYOUT.decode(f.data),h=nt.OWNER_LAYOUT.decode(b.data),P=g.openTime.toNumber(),k=g.endTime.toNumber(),T=h.tokenInfo.map(B=>B.debtAmount.gt(new hc(0))).filter(B=>!B).length!==3,I=i>P&&i<k&&g.status===1,S=T&&I;u.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:nt.VERSION_PROJECT[d],openTime:P,endTime:k,canClaim:S,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((B,C)=>({mintAddress:B.mintAddress,mintVault:B.mintVault,mintDecimals:B.mintDecimals,perLpLoss:B.perLpLoss,debtAmount:h.tokenInfo[C].debtAmount.add(h.tokenInfo[C].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),o=t.wallet||this.scope.ownerPubKey,i=[];for(let c of e.tokenInfo){let{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!c.mintAddress.equals(ye.WSOL.mint),associatedOnly:c.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),i.push(u)}n.addInstruction({instructions:[nt.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 u of e){let l=[];for(let d of u.tokenInfo){let{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:o,amount:0},skipCloseAccount:!d.mintAddress.equals(ye.WSOL.mint),associatedOnly:d.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),m&&(i[d.mintAddress.toString()]=m,l.push(m))}n.addInstruction({instructions:[nt.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:o,ownerPda:u.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),c=n.allInstructions;return co(c,[o,...a.map(u=>u.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Ns().add(...c.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Ns().add(...c.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ns().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=M([]),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(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:uf,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 lf({keys:i,programId:e,data:a})}},Pt=nt;Pt.CLAIMED_NUM=3,Pt.POOL_LAYOUT=M([be(8),D("bump"),D("status"),A("openTime"),A("endTime"),K("ammId"),U(M([D("mintDecimals"),K("mintAddress"),K("mintVault"),A("perLpLoss"),A("totalClaimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),U(A(),10,"padding")]),Pt.OWNER_LAYOUT=M([be(8),D("bump"),D("version"),K("poolId"),K("owner"),A("lpAmount"),U(M([K("mintAddress"),A("debtAmount"),A("claimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),U(A(),4,"padding")]),Pt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cf(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 Fr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bc}from"@solana/spl-token";import Dr from"bn.js";import{TransactionInstruction as df,SYSVAR_RENT_PUBKEY as pf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kc}from"@solana/spl-token";import{createInitializeAccountInstruction as Tc}from"@solana/spl-token";import{SystemProgram as Cn,Transaction as Ic}from"@solana/web3.js";function mf(r="accountFlags"){let e=new Ao(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 Ms=M([be(5),mf("accountFlags"),K("ownAddress"),A("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),K("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),be(7)]);function ff({programId:r,marketInfo:e}){let t=M([D("version"),$e("instruction"),A("baseLotSize"),A("quoteLotSize"),Nt("feeRateBps"),A("vaultSignerNonce"),A("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:pf,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 df({keys:n,programId:r,data:o})}async function xc({connection:r,wallet:e,marketInfo:t}){let n=new Ic,o=await r.getMinimumBalanceForRentExemption(165);n.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:kc}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:kc}),Tc(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Tc(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let i=new Ic;return i.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Ms.span),space:Ms.span,programId:t.programId}),Cn.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}),Cn.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}),Cn.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}),Cn.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}),ff({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.InitAccount,E.InitAccount]},{transaction:i,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var Yn=class extends Se{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:o,dexProgramId:i,txVersion:s,computeBudgetConfig:a}){let c=this.scope.ownerPubKey,u=Je({fromPublicKey:c,programId:i}),l=Je({fromPublicKey:c,programId:i}),d=Je({fromPublicKey:c,programId:i}),m=Je({fromPublicKey:c,programId:i}),p=Je({fromPublicKey:c,programId:i}),y=Je({fromPublicKey:c,programId:Bc}),f=Je({fromPublicKey:c,programId:Bc}),b=0,g=new Dr(100);function h(){let C=new Dr(0);for(;;)try{return{vaultOwner:Fr.createProgramAddressSync([u.publicKey.toBuffer(),C.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:C}}catch{if(C.iaddn(1),C.gt(new Dr(25555)))throw Error("find vault owner error")}}let{vaultOwner:P,vaultSignerNonce:k}=h(),T=new Dr(Math.round(10**e.decimals*n)),I=new Dr(Math.round(n*10**t.decimals*o));if(T.eq(Fe))throw Error("lot size is too small");if(I.eq(Fe))throw Error("tick size or lot size is too small");let S=await xc({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:u,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:P,requestQueue:l,eventQueue:d,bids:m,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:T,quoteLotSize:I}}),B=this.createTxBuilder();B.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let C of S.slice(1,S.length))B.addInstruction({instructions:C.transaction.instructions,signers:C.signer,instructionTypes:C.instructionTypes});return s===0?B.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:d.publicKey,bids:m.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Fr(e.mint),quoteMin:new Fr(t.mint)}}):B.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:d.publicKey,bids:m.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Fr(e.mint),quoteMin:new Fr(t.mint)}})}};import{PublicKey as qr}from"@solana/web3.js";import{TransactionInstruction as Vs,SYSVAR_CLOCK_PUBKEY as yf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Es}from"@solana/spl-token";var _s=M([D("instruction"),Wa("amount")]),Wr=M([D("instruction")]);function SK({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:to,isSigner:!1,isWritable:!1},{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:li,isSigner:!1,isWritable:!1},...Object.entries(t).map(([i,s])=>({pubkey:s,isSigner:i==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(i)}))],o=Buffer.alloc(_s.span);return _s.encode({instruction:1,amount:Number(e)},o),new Vs({keys:n,programId:r,data:o})}function jo({programId:r},e){let t=[{pubkey:Es,isSigner:!1,isWritable:!1},{pubkey:li,isSigner:!1,isWritable:!1},...Object.entries(e).map(([o,i])=>({pubkey:i,isSigner:o==="userOwner",isWritable:!["authority","userOwner"].includes(o)}))],n=Buffer.alloc(Wr.span);return Wr.encode({instruction:2},n),new Vs({keys:t,programId:r,data:n})}function vs(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(Wr.span);Wr.encode({instruction:2},s);let a=[{pubkey:Es,isWritable:!1,isSigner:!1},{pubkey:yf,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 Vs({programId:e.programId,keys:a,data:s})}import Sc from"bn.js";var bf={[ar.IDO_PROGRAM_ID_V1.toString()]:1,[ar.IDO_PROGRAM_ID_V2.toString()]:2,[ar.IDO_PROGRAM_ID_V3.toString()]:3,[ar.IDO_PROGRAM_ID_V4.toString()]:4},Qn=class extends Se{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:o=!1,txVersion:i}){let s=this.createTxBuilder(),a=bf[t.programId];a||this.logAndCreateError("invalid version",a);let c=Ie(t),[u,l]=[!new Sc(e.coin).isZero(),!new Sc(e.pc).isZero()],d=c.projectInfo.mint.address.equals(J),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.projectInfo.mint.programId,mint:c.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,notUseTokenAccount:d,associatedOnly:d?!1:n,checkCreateATAOwner:o});!m&&u&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),u&&p&&s.addInstruction(p);let y=c.buyInfo.mint.address.equals(J),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.buyInfo.mint.programId,mint:c.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(!m&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!m||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...u?[jo({programId:c.programId},{idoId:c.id,authority:c.authority,poolTokenAccount:c.projectInfo.vault,userTokenAccount:m,userIdoInfo:new qr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[jo({programId:new qr(t.programId)},{idoId:c.id,authority:c.authority,poolTokenAccount:c.buyInfo.vault,userTokenAccount:f,userIdoInfo:new qr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:i});if(a<3)return!u&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[jo({programId:c.programId},{idoId:c.id,authority:c.authority,poolQuoteTokenAccount:c.buyInfo.vault,poolBaseTokenAccount:c.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:m,userIdoInfo:new qr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:i});let g={poolConfig:{id:c.id,programId:c.programId,authority:c.authority,baseVault:c.projectInfo.vault,quoteVault:c.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:m,quoteTokenAccount:f,ledgerAccount:new qr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...u?[vs(v(R({},g),{side:"base"}))]:[],...l?[vs(v(R({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:i})}};import{PublicKey as gf}from"@solana/web3.js";import{MintLayout as wf,TOKEN_2022_PROGRAM_ID as Fs,TOKEN_PROGRAM_ID as Ds}from"@solana/spl-token";var Ur=class extends Se{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),c=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(Rt.address,Rt),this._mintGroup.official.add(Rt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,v(R({},u),{priority:-1}))}),i.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,v(R({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Fs.toBase58():Ds.toBase58()})),this._mintGroup.official.add(u.address))}),c.forEach(u=>{var l;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,v(R({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Fs.toBase58():Ds.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,v(R({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Fs.toBase58():Ds.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}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 Rt;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,v(R({},i),{priority:2})),i;let s=await this.scope.connection.getAccountInfo(new gf(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=wf.decode(s.data),c=n.toString().substring(0,6),u={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:c,name:c,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,u),u}};var Ho=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:o,api:i,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=o?new It(o):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.api=i,this._apiCacheTime=c||5*60*1e3,this.logger=ce("Raydium"),this.farm=new hr({scope:this,moduleName:"Raydium_Farm"}),this.account=new mr({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Lr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Ur({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new vr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Or({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Er({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new Pt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Yn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Qn({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=Af({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:o,logCount:i,logRequests:s,urlConfigs:a}=t,c=new bo({cluster:n,timeout:o,urlConfigs:a,logCount:i,logRequests:s}),u=new Ho(v(R({},t),{api:c}));return await u.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await u.token.load({type:e.jupTokenType}),u}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(go);return this._owner.publicKey}setOwner(e){return this._owner=e?new It(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ea);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(go),new Error(go)}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=v(R({},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{}}}};var C0=r=>r;export{Ub as ACCOUNT_TYPE_SIZE,yg as ALL_PROGRAM_ID,Pp as AMM_CONFIG_SEED,um as AMM_STABLE,Ii as AMM_V4,Ff as ANAMint,Ye as API_URLS,rm as AccountType,bo as Api,vu as BIT_PRECISION,tn as BNDivCeil,gn as BNLayout,Yy as BN_100,Qy as BN_1000,jy as BN_10000,zy as BN_FIVE,ya as BN_ONE,pn as BN_TEN,Xy as BN_THREE,Gy as BN_TWO,Fe as BN_ZERO,Tw as BitStructure,Da as Blob,xi as CLMM_PROGRAM_ID,li as CLOCK_PROGRAM_ID,fm as CREATE_CPMM_POOL_AUTH,ym as CREATE_CPMM_POOL_FEE_ACC,Bi as CREATE_CPMM_POOL_PROGRAM,Or as Clmm,Xu as ClmmConfigLayout,Ke as ClmmInstrument,Fo as ConstantProductCurve,fc as CpmmConfigInfoLayout,Eo as CpmmFee,Go as CpmmPoolInfoLayout,Jn as Currency,fn as CurrencyAmount,Do as CurveCalculator,bg as DEVNET_PROGRAM_ID,Ug as DEV_API_URLS,gm as DEV_CREATE_CPMM_POOL_AUTH,wm as DEV_CREATE_CPMM_POOL_FEE_ACC,bm as DEV_CREATE_CPMM_POOL_PROGRAM,ip as DataElement,Df as ETHMint,ws as EXTENSION_TICKARRAY_BITMAP_SIZE,uu as FARM_LOCK_MINT,cu as FARM_LOCK_VAULT,ki as FARM_PROGRAM_ID_V3,Ti as FARM_PROGRAM_ID_V5,Vn as FARM_PROGRAM_ID_V6,yt as FARM_PROGRAM_TO_VERSION,mu as FARM_VERSION_TO_LEDGER_LAYOUT,lu as FARM_VERSION_TO_STATE_LAYOUT,fg as FEE_DESTINATION_ID,Mo as FEE_RATE_DENOMINATOR,Bs as FEE_RATE_DENOMINATOR_VALUE,Kp as FETCH_TICKARRAY_COUNT,Sp as Fee,oe as Fraction,ar as IDO_ALL_PROGRAM,lm as IDO_PROGRAM_ID_V1,mm as IDO_PROGRAM_ID_V2,dm as IDO_PROGRAM_ID_V3,pm as IDO_PROGRAM_ID_V4,eo as INSTRUCTION_PROGRAM_ID,E as InstructionType,Si as JupTokenType,$u as LIQUIDITY_FEES_DENOMINATOR,Zu as LIQUIDITY_FEES_NUMERATOR,Na as LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,_p as LIQUIDITY_VERSION_TO_SERUM_VERSION,ek as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Fu as LOG_B_2_X32,Du as LOG_B_P_ERR_MARGIN_LOWER_X64,Wu as LOG_B_P_ERR_MARGIN_UPPER_X64,mo as LOOKUP_TABLE_CACHE,ur as Layout,le as LiquidityMath,Mc as LogLevel,Jo as Logger,Ms as MARKET_STATE_LAYOUT_V2,Ls as MARKET_STATE_LAYOUT_V3,wc as MARKET_VERSION_TO_STATE_LAYOUT,Ta as MAX_BASE64_SIZE,Vt as MAX_SQRT_PRICE_X64,No as MAX_SQRT_PRICE_X64_SUB_ONE,ot as MAX_TICK,$r as MEMO_PROGRAM_ID,Jr as MEMO_PROGRAM_ID2,Mn as METADATA_PROGRAM_ID,_t as MIN_SQRT_PRICE_X64,Oo as MIN_SQRT_PRICE_X64_ADD_ONE,tt as MIN_TICK,Un as MODEL_DATA_PUBKEY,Yo as Market,ne as MathUtil,gs as MaxU64,Eu as MaxUint128,Xt as NEGATIVE_ONE,vf as NRVMint,dt as ONE,am as OPEN_BOOK_PROGRAM,xp as OPERATION_SEED,Ps as ObservationInfoLayout,Lp as ObservationLayout,zu as OperationLayout,Mi as OptionLayout,It as Owner,Lf as PAIMint,Tp as POOL_REWARD_VAULT_SEED,hp as POOL_SEED,Bp as POOL_TICK_ARRAY_BITMAP_SEED,kp as POOL_VAULT_SEED,Mu as POSITION_SEED,ve as Percent,Ma as PoolFetchType,In as PoolInfoLayout,Le as PoolUtils,_o as PositionInfoLayout,Np as PositionRewardInfoLayout,Cr as PositionUtils,We as Price,vT as ProtocolPositionLayout,Lo as Q128,pt as Q64,Rf as RAYMint,st as RENT_PROGRAM_ID,Ho as Raydium,Op as RewardInfo,ac as RoundDirection,fi as Rounding,cm as Router,bc as SERUM_PROGRAMID_TO_VERSION,fo as SERUM_PROGRAM_ID_V3,gc as SERUM_VERSION_TO_PROGRAMID,_a as SESSION_KEY,Ve as SOLMint,Rt as SOL_INFO,Kh as SPL_MINT_LAYOUT,Of as SRMMint,Ki as STORAGE_KEY,to as SYSTEM_PROGRAM_ID,te as SqrtPriceMath,qn as StableLayout,_i as Structure,Tn as SwapMath,kn as TICK_ARRAY_BITMAP_SIZE,Ip as TICK_ARRAY_SEED,De as TICK_ARRAY_SIZE,Sk as TICK_SPACINGS,Ee as TOKEN_WSOL,zt as TickArrayBitmap,Gu as TickArrayBitmapExtensionLayout,Kr as TickArrayBitmapExtensionUtils,Sr as TickArrayLayout,Mp as TickLayout,xn as TickMath,me as TickQuery,j as TickUtils,ye as Token,fe as TokenAmount,po as TxBuilder,yn as TxVersion,Br as U64Resolution,Ck as U64_IGNORE_RANGE,Li as UInt,Nf as USDCMint,Ef as USDHMint,Mf as USDTMint,sm as UTIL1216,Vi as Union,su as Voter,Dd as VoterDepositEntry,Fd as VoterLockup,iu as VoterRegistrar,vd as VoterVotingMintConfig,J as WSOLMint,Ao as WideBits,qt as WrappedLayout,pe as ZERO,ma as _100_PERCENT,w as accountMeta,Ly as add,uo as addComputeBudget,ls as addLiquidityLayout,uA as array,Gi as associatedLedgerAccountLayout,Oi as bits,be as blob,je as bool,rs as calFarmRewardAmount,Wp as ceilDiv,er as checkLegacyTxSize,tr as checkV0TxSize,Pi as chunkArray,Wr as claimLayout,Mt as closeAccountInstruction,ai as commonSystemAccountMeta,Bo as createAssociatedLedgerAccountInstruction,ce as createLogger,Pu as createPoolFeeLayout,Cu as createPoolV4InstructionV2,Jh as createPoolV4Layout,Ut as createWSolAccountInstructions,Zw as cstr,yy as currencyEquals,Ul as decimalToFraction,fd as decodeBool,Sy as div,oo as divCeil,rt as dwLayout,yd as encodeBool,cw as endlessRetry,Dl as eq,zw as f32,Yw as f32be,Qw as f64,jw as f64be,Qi as farmAddRewardLayout,pP as farmLedgerLayoutV3_1,pr as farmLedgerLayoutV3_2,fP as farmLedgerLayoutV5_1,ru as farmLedgerLayoutV5_2,ou as farmLedgerLayoutV6_1,pu as farmRewardInfoToConfig,zi as farmRewardLayout,Yi as farmRewardRestartLayout,Ed as farmRewardTimeInfoLayout,tu as farmStateV3Layout,nu as farmStateV5Layout,dr as farmStateV6Layout,FP as fetchMultipleFarmInfoAndUpdate,bI as fetchMultipleInfo,Sa as fetchMultipleMintInfos,ae as findProgramAddress,as as fixedSwapInLayout,us as fixedSwapOutLayout,ic as floorDiv,co as forecastTransactionSize,yp as formatLayout,Je as generatePubKey,ge as getATAAddress,du as getAssociatedAuthority,Is as getAssociatedConfigId,et as getAssociatedLedgerAccount,yr as getAssociatedLedgerPoolAccount,Fp as getAssociatedOpenOrders,tc as getAssociatedPoolKeys,jp as getCpmmPdaAmmConfigId,Hp as getCpmmPdaPoolId,cc as getCreatePoolKeys,Ra as getDate,os as getDepositEntryIndex,Iu as getDxByDyBaseIn,Tu as getDyByDxBaseIn,Mb as getEpochInfo,Dn as getFarmLedgerLayout,Wd as getFarmStateLayout,xs as getLiquidityAssociatedAuthority,Bn as getLiquidityAssociatedId,fT as getLiquidityFromAmounts,Ry as getMax,Tt as getMultipleAccountsInfo,qe as getMultipleAccountsInfoWithCustomFlags,hi as getMultipleLookupTableInfo,Ik as getPdaAmmConfigId,mt as getPdaExBitmapAccount,Zp as getPdaLpMint,Ro as getPdaMetadataKey,Wo as getPdaObservationId,xr as getPdaOperationAccount,gt as getPdaPersonalPositionAddress,Mr as getPdaPoolAuthority,_u as getPdaPoolId,Vu as getPdaPoolRewardVaulId,bs as getPdaPoolVaultId,hn as getPdaProtocolPositionAddress,Ae as getPdaTickArrayAddress,uc as getPdaVault,_n as getRecentBlockHash,Zi as getRegistrarAddress,hm as getSessionKey,xu as getStablePrice,im as getTime,kb as getTimestamp,ns as getTokenOwnerRecordAddress,Tg as getTransferAmountFee,he as getTransferAmountFeeV2,es as getVoterAddress,ts as getVoterWeightRecordAddress,Ji as getVotingMintAuthority,$i as getVotingTokenMint,Hd as governanceCreateTokenOwnerRecord,Iw as greedy,Fl as gt,By as gte,Ya as i128,Ak as i16ToBytes,Co as i32ToBytes,Po as i64,za as i8,cs as initPoolLayout,qi as initTokenAccountInstruction,ff as initializeMarket,ag as intersection,Oa as isDateAfter,La as isDateBefore,Gl as isDecimal,Cy as isMeaningfulNumber,Ca as isNumber,ji as isValidFarmVersion,Ir as isZero,Ie as jsonInfo2PoolKeys,DP as judgeFarmType,fs as leadingZeros,Nu as leastSignificantBit,Tr as liquidityStateV4Layout,rp as liquidityStateV5Layout,Iy as lt,xy as lte,_f as mSOLMint,Ko as makeAMMSwapInstruction,Ku as makeAddLiquidityInstruction,ss as makeAddNewRewardInstruction,jo as makeClaimInstruction,vs as makeClaimInstructionV4,mc as makeCreateCpmmPoolInInstruction,fu as makeCreateFarmInstruction,xc as makeCreateMarketInstruction,yu as makeCreatorWithdrawFarmRewardInstruction,dc as makeDepositCpmmInInstruction,bu as makeDepositInstructionV3,gu as makeDepositInstructionV5,wu as makeDepositInstructionV6,rh as makeDepositTokenInstruction,ih as makeDepositWithdrawInstruction,gk as makeInitPoolInstructionV4,SK as makePurchaseInstruction,is as makeRestartRewardInstruction,Ru as makeSimulatePoolInfoInstruction,qo as makeSwapCpmmBaseInInInstruction,Uo as makeSwapCpmmBaseOutInInstruction,wp as makeSwapFixedInInstruction,Ap as makeSwapFixedOutInstruction,yc as makeSwapInstruction,lr as makeTransferInstruction,pc as makeWithdrawCpmmInInstruction,Pr as makeWithdrawInstructionV3,Ar as makeWithdrawInstructionV5,wr as makeWithdrawInstructionV6,oh as makeWithdrawTokenInstruction,Ot as minExpirationTime,Kk as mockCreatePoolInfo,qu as mockV3CreatePoolInfo,sp as modelDataInfoLayout,Ou as mostSignificantBit,gi as mul,wi as notInnerObject,Fw as ns64,Xw as ns64be,Wa as nu64,Nw as nu64be,Ni as offset,mg as offsetDateTime,rA as option,z as parseBigNumberish,dn as parseNumberInfo,xa as parseSimulateLogToJson,Wt as parseSimulateValue,eu as parseTokenAccountResp,vh as parseTokenInfo,an as poolTypeV6,bn as printSimulate,K as publicKey,_s as purchaseLayout,Md as realFarmStateV3Layout,_d as realFarmStateV5Layout,Vd as realFarmV6Layout,fa as recursivelyDecimalToFraction,ps as removeLiquidityInstruction,ms as removeLiquidityLayout,UB as route1Instruction,GB as route2Instruction,sf as routeInstruction,aA as rustEnum,_w as s16,Dw as s16be,Vw as s24,Ww as s24be,Qe as s32,qw as s32be,Ew as s40,Uw as s40be,vw as s48,Gw as s48be,Mw as s8,U as seq,If as setLoggerLevel,Wl as shakeFractionDecimal,Ia as simulateMultipleInstruction,bk as simulatePoolInfoInstruction,Zl as simulateTransaction,wa as sleep,ct as solToWSol,Dh as solToWSolToken,nn as splAccountLayout,ga as splitNumber,Vf as stSOLMint,sA as str,M as struct,Ky as sub,iA as tagged,yi as tenExponential,nc as toAmmComputePoolInfo,bt as toApiV3Token,ql as toBN,$l as toBuffer,Wn as toFeeConfig,ba as toFraction,Ty as toFractionWithDecimals,Hy as toPercent,So as toToken,kr as toTokenAmount,Fh as toTokenInfo,Zy as toTokenPrice,$y as toTotalPrice,pa as toUsdCurrency,ys as trailingZeros,ci as tryParsePublicKey,Q as u128,Nt as u16,Lu as u16ToBytes,Kw as u16be,xw as u24,Cw as u24be,$e as u32,Pk as u32ToBytes,Rw as u32be,Bw as u40,Lw as u40be,Sw as u48,Ow as u48be,A as u64,D as u8,cA as union,C0 as unionArr,Hw as unionLayoutDiscriminator,cg as uniq,qd as updateFarmPoolInfo,yo as updateReqHistory,$w as utf8,ui as validateAndParsePublicKey,Hi as validateFarmRewards,oA as vec,bd as vecU8,$d as voterStakeRegistryCreateDepositEntry,Zd as voterStakeRegistryCreateVoter,Yd as voterStakeRegistryDeposit,Qd as voterStakeRegistryUpdateVoterWeightRecord,jd as voterStakeRegistryWithdraw,Wh as wSolToSolToken,Xi as withdrawRewardLayout,ug as xor,lA as zeros};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|